From 9154edc217aadf79f0da36dd3fb78a040b77d856 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 23 Sep 2015 20:43:08 +0300 Subject: [PATCH] channels members and admins management done --- Telegram/BuildWin.bat | 18 +- Telegram/Resources/lang.strings | 25 +- Telegram/Resources/style.txt | 13 +- Telegram/SourceFiles/_other/updater.cpp | 2 +- Telegram/SourceFiles/apiwrap.cpp | 3 +- Telegram/SourceFiles/art/sprite.png | Bin 176586 -> 177827 bytes Telegram/SourceFiles/art/sprite_200x.png | Bin 235828 -> 238261 bytes Telegram/SourceFiles/audio.cpp | 10 +- Telegram/SourceFiles/boxes/addcontactbox.cpp | 61 +- Telegram/SourceFiles/boxes/addcontactbox.h | 7 + Telegram/SourceFiles/boxes/confirmbox.cpp | 96 +++ Telegram/SourceFiles/boxes/confirmbox.h | 40 +- Telegram/SourceFiles/boxes/contactsbox.cpp | 665 ++++++++++++++++++- Telegram/SourceFiles/boxes/contactsbox.h | 184 ++++- Telegram/SourceFiles/boxes/photosendbox.cpp | 2 +- Telegram/SourceFiles/dialogswidget.cpp | 20 +- Telegram/SourceFiles/dialogswidget.h | 4 +- Telegram/SourceFiles/history.cpp | 42 +- Telegram/SourceFiles/history.h | 3 +- Telegram/SourceFiles/historywidget.cpp | 10 +- Telegram/SourceFiles/intro/introsignup.cpp | 69 +- Telegram/SourceFiles/intro/introsignup.h | 2 + Telegram/SourceFiles/lang.h | 16 + Telegram/SourceFiles/mainwidget.cpp | 47 +- Telegram/SourceFiles/mainwidget.h | 1 + Telegram/SourceFiles/mediaview.cpp | 9 +- Telegram/SourceFiles/profilewidget.cpp | 187 +++--- Telegram/SourceFiles/profilewidget.h | 6 +- Telegram/SourceFiles/pspecific_wnd.cpp | 1 - Telegram/SourceFiles/structs.cpp | 30 +- Telegram/SourceFiles/structs.h | 15 +- 31 files changed, 1362 insertions(+), 226 deletions(-) diff --git a/Telegram/BuildWin.bat b/Telegram/BuildWin.bat index 2e3434cef..a5bd2ef0d 100644 --- a/Telegram/BuildWin.bat +++ b/Telegram/BuildWin.bat @@ -28,19 +28,21 @@ if exist ..\Win32\Deploy\deploy\%AppVersionStrMajor%\%AppVersionStr%\ goto error if exist ..\Win32\Deploy\deploy\%AppVersionStrMajor%\%AppVersionStr%.dev\ goto error_exist2 if exist ..\Win32\Deploy\tupdate%AppVersion% goto error_exist3 -copy ./SourceFiles/telegram.qrc /B+ ,,/Y +cd SourceFiles\ +copy telegram.qrc /B+,,/Y +cd ..\ if %errorlevel% neq 0 goto error cd ..\ MSBuild Telegram.sln /property:Configuration=Deploy -if %errorlevel% neq 0 goto error +if %errorlevel% neq 0 goto error0 echo . echo Version %AppVersionStr%%DevPostfix% build successfull! Preparing.. echo . set "PATH=%PATH%;C:\Program Files\7-Zip;C:\Program Files (x86)\Inno Setup 5" -cd ..\Win32\Deploy +cd Win32\Deploy\ call ..\..\..\TelegramPrivate\Sign.bat Telegram.exe if %errorlevel% neq 0 goto error1 @@ -71,7 +73,7 @@ move tsetup.%AppVersionStr%%DevPostfix%.exe deploy\%AppVersionStrMajor%\%AppVers move tupdate%AppVersion% deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\ if %errorlevel% neq 0 goto error1 -cd deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix% +cd deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\ 7z a -mx9 tportable.%AppVersionStr%%DevPostfix%.zip Telegram\ if %errorlevel% neq 0 goto error2 @@ -97,13 +99,15 @@ xcopy Updater.pdb Z:\TBuild\tother\tsetup\%AppVersionStrMajor%\%AppVersionStr%%D echo Version %AppVersionStr%%DevPostfix% deployed successfully! -cd ..\..\..\..\..\Telegram +cd ..\..\..\..\..\Telegram\ goto eof :error2 -cd ..\..\.. +cd ..\..\..\ :error1 -cd ..\..\Telegram +cd ..\..\ +:error0 +cd Telegram\ goto error :error_exist1 diff --git a/Telegram/Resources/lang.strings b/Telegram/Resources/lang.strings index fbcc479f9..a974f2729 100644 --- a/Telegram/Resources/lang.strings +++ b/Telegram/Resources/lang.strings @@ -95,6 +95,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_channel_status" = "channel"; +"lng_channel_members_link" = "{count:_not_used_|# member|# members} »"; +"lng_channel_admins_link" = "{count:_not_used_|# administrator|# administrators} »"; + "lng_server_error" = "Internal server error."; "lng_flood_error" = "Too many tries. Please try again later."; "lng_deleted" = "Unknown"; @@ -354,12 +357,13 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_profile_chat_unaccessible" = "Group is unaccessible"; "lng_topbar_info" = "Info"; "lng_profile_about_section" = "About"; +"lng_profile_description_section" = "Description"; "lng_profile_settings_section" = "Settings"; "lng_profile_actions_section" = "Actions"; "lng_profile_bot_settings" = "Settings"; "lng_profile_bot_help" = "Help"; "lng_profile_create_public_link" = "Create public link"; -"lng_profile_edit_public_link" = "Edit link"; +"lng_profile_edit_public_link" = "Edit public link"; "lng_profile_participants_section" = "Members"; "lng_profile_info" = "Contact info"; "lng_profile_group_info" = "Group info"; @@ -384,8 +388,10 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_profile_set_group_photo" = "Set Photo"; "lng_profile_add_participant" = "Add Members"; "lng_profile_delete_and_exit" = "Leave"; -"lng_profile_kick" = "Kick"; -"lng_profile_sure_kick" = "Kick {user} from the group?"; +"lng_profile_kick" = "Remove"; +"lng_profile_sure_kick" = "Remove {user} from the group?"; +"lng_profile_sure_kick_channel" = "Remove {user} from the channel?"; +"lng_profile_sure_kick_admin" = "Remove {user} from administrators?"; "lng_profile_loading" = "Loading.."; "lng_profile_shared_media" = "Shared media"; "lng_profile_no_media" = "No media in this conversation."; @@ -402,13 +408,20 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_profile_audio_files_header" = "Playlist"; "lng_profile_copy_phone" = "Copy phone number"; +"lng_channel_add_admins" = "Add"; +"lng_channel_members" = "Members"; +"lng_channel_admins" = "Administrators"; +"lng_channel_add_admin" = "Add Administrator"; +"lng_channel_admin_sure" = "Add {user} to administrators?"; + "lng_participant_filter" = "Search"; "lng_participant_invite" = "Invite"; +"lng_participant_invite_sorry" = "Sorry, you can only add the first\n{count} members to a channel personally.\n\nFrom now on, people will need\nto join via your invite link."; "lng_create_group_back" = "Back"; "lng_create_group_next" = "Next"; "lng_create_group_create" = "Create"; "lng_create_group_title" = "New Group"; -"lng_create_group_about" = "Groups have up to 200 members and are good for smaller communities"; +"lng_create_group_about" = "Groups have up to {count} members and are good for smaller communities"; "lng_create_channel_title" = "New Channel"; "lng_create_channel_about" = "Channels have unlimited number of members and are good for connecting with large audiences"; "lng_create_public_channel_title" = "Public Channel"; @@ -476,7 +489,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_group_invite_want_join_channel" = "Do you want to join channel «{title}»?"; "lng_group_invite_join" = "Join"; -"lng_group_invite_link" = "Invite link"; +"lng_group_invite_link" = "Invite link:"; "lng_group_invite_create" = "Create an invite link"; "lng_group_invite_about" = "Telegram users will be able to join\nyour group by following this link."; "lng_channel_invite_about" = "Telegram users will be able to join\nyour channel by following this link."; @@ -731,6 +744,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_menu_insert_unicode" = "Insert Unicode control character"; +"lng_full_name" = "{first_name} {last_name}"; + // Wnd specific "lng_wnd_choose_program_menu" = "Choose Default Program..."; diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index 6d524b020..0bb12fa88 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -1293,7 +1293,7 @@ profileNameFont: font(20px); profileStatusLeft: 22px; profileStatusTop: 31px; profileStatusFont: font(fsize); -profilePhoneLeft: 20px; +profilePhoneLeft: 22px; profilePhoneTop: 62px; profilePhoneFont: font(16px); profileButtonTop: 18px; @@ -1332,6 +1332,8 @@ btnShareContact: flatButton(btnDefNext, btnDefBig) { } profileMinBtnPadding: 10px; +membersPadding: margins(0px, 10px, 0px, 10px); + forwardWidth: 364px; forwardMargins: margins(30px, 10px, 30px, 10px); forwardFont: font(16px); @@ -1462,6 +1464,7 @@ newGroupPhoto: flatButton(btnDefNext, btnDefBig) { newGroupPhotoSize: 96px; newGroupPhotoSkip: 18px; newGroupDescriptionSkip: 28px; +newGroupPublicLinkSkip: 27px; newGroupDescription: flatTextarea(taDefFlat) { font: font(15px); bgColor: transparent; @@ -1832,7 +1835,7 @@ stickerPanSize: size(64px, 64px); stickerPanPadding: 11px; stickerPanDelete: sprite(128px, 132px, 12px, 12px); stickerPanDeleteOpacity: 0.5; -stickerIconPadding: 3px; +stickerIconPadding: 5px; stickerIconOpacity: 0.7; stickerIconSel: 2px; stickerIconSelColor: #58b2ed; @@ -1841,6 +1844,12 @@ stickerIconLeft: sprite(342px, 72px, 40px, 1px); stickerIconRight: sprite(342px, 73px, 40px, 1px); stickerIconMove: 400; +verifiedCheckProfile: sprite(285px, 240px, 22px, 22px); +verifiedCheckProfilePos: point(9px, 4px); +verifiedCheck: sprite(285px, 221px, 19px, 19px); +verifiedCheckInv: sprite(304px, 221px, 19px, 19px); +verifiedCheckPos: point(5px, 0px); + botKbDuration: 200; botKbBg: #f7f7f7; botKbOverBg: #e8ecef; diff --git a/Telegram/SourceFiles/_other/updater.cpp b/Telegram/SourceFiles/_other/updater.cpp index 81afbde5c..69d643864 100644 --- a/Telegram/SourceFiles/_other/updater.cpp +++ b/Telegram/SourceFiles/_other/updater.cpp @@ -252,7 +252,7 @@ bool update() { if (copyResult == FALSE) { writeLog(L"Error: failed to copy, asking to retry.."); WCHAR errMsg[2048]; - wsprintf(errMsg, L"Failed to update Telegram :(\n%s is not accessible.", tofname); + wsprintf(errMsg, L"Failed to update Telegram :(\n%s is not accessible.", tofname.c_str()); if (MessageBox(0, errMsg, L"Update error!", MB_ICONERROR | MB_RETRYCANCEL) != IDRETRY) { delFolder(); return false; diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index e5728796e..905639570 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -276,10 +276,11 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result) { } channel->about = qs(f.vabout); channel->count = f.has_participants_count() ? f.vparticipants_count.v : 0; + channel->adminsCount = f.has_admins_count() ? f.vadmins_count.v : 0; channel->invitationUrl = (f.vexported_invite.type() == mtpc_chatInviteExported) ? qs(f.vexported_invite.c_chatInviteExported().vlink) : QString(); if (History *h = App::historyLoaded(channel->id)) { if (h->inboxReadBefore < f.vread_inbox_max_id.v + 1) { - h->unreadCount = f.vunread_important_count.v; + h->setUnreadCount(f.vunread_important_count.v); h->inboxReadBefore = f.vread_inbox_max_id.v + 1; h->asChannelHistory()->unreadCountAll = f.vunread_count.v; } diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index bfb9e56f0c4b550a9753074f97e4a6f16429e8f1..db3f756b2b40d40e9078a9dac3b961fe7c31d1f9 100644 GIT binary patch delta 56731 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 diff --git a/Telegram/SourceFiles/art/sprite_200x.png b/Telegram/SourceFiles/art/sprite_200x.png index 0404174c0b9da8b9ad3299550fb7594c0afb273b..06e97a19d830aa905482eda8edac58653ce254fb 100644 GIT binary patch delta 74308 zcma&NbyOAK8!voF>69)BL8QC8L&6}BbV?q&2c%oNK|lngyW!9cqI8FVbeGgSe1Ge% z_1^#PS!)i%nLRUmKlyoL*H+`y_2PUHL|pHz67EOB1bDfHxDt%>UN`s{BlK`naq-)gjTW$B5WZ~tcKrM)-p>LH&( zPj8m{@=nTd8=$pxvQW%8uQ;BEm&{^c)PD{w0$C=FDRWugOeJM7bk%2sK@w!Rv04Xj>%9#$P|HK2+Iyy3{ zksF2~rt_?xjW`RHq+q>zIVu2%^AGY<=>n4q(1#hq7D`zGr zDK}0$sGa@6?_KcImSCK}w4ISVtyjLR?$uLgO z(l>&sm!Dkct2rJXYHr;V8jqPVNtT~m5JW0lp~>Q@J@5x4kUN(%)2Up?wB-B~HtM&D zwLK06UNb`$n{IM1Y7`B;2R#&TdTQw#nTev$^y$@K7q;fIii;%aV9;d{r z3$t;5)`Uh`%t+7(-OSZUeC))=VK>peiq}#u zb|X1r8T?MJa+WUURAQ-dCiie%U{(7ME9Pj(chCPN(W8-|2={aSn*Afho1G~d$A#`A z$iSMtc=yw*g=6M#Su`PCcOZUDI}jv)v5-Ie*WB4NV?x635lt4wqhig4t- z9TxlM4$tx1$8W8=;=~-{j;C4>4--&jbDXzSs0m34JqL0`g&qKhH@doH8{ucjVFN$A zD6=o+AliBd-ejgS6T)5ckSa)dL(Su6oz2W4toglyY)B{p9cn@&DWi~3)875n3UHpW za<_HiBmO9#Fvx4~heaJ*XrX%v(D+@ig+6dPuaypvVuxcAkUR`UhzJbo&`La`RKQlA zWzZsK{C->;VcWAyxq z)9wiwCruJ3giGy;N%hunT5h?`kAJb?WK=hUB03WJyFgSBu;8sh*6^gR>GF>@$c{3e zo;R_^IL0kzimr#xj#I#OP`fsLCk(^d3K#QZ<7QL=pjbQ%&+9*EYXiwiNp+dy+bM`) z8-nbXMeG+4FP&tu4~B*v0umC2p1rWh9Q>?&6Nc}NuO&hqR11@xq|8b`woEVO=|OBS zX1ier^BoA+8T}lBk|`>0>KjQ%sqa&Yi#k8ko}^&Cpphi;f1a8jNhXjiT7(t!Adx-r z0*0U2dNHk!AmNMvaklsN!5DtQ{(Ql)Ginj&5ket*XOd56#tfSv^LdzY*mOk=tS?cY z!+>ntEbPh*rn~@o)qE6U9=Y{gwMm#?n0tm|`%9SIuY#Jh!{y8VXcYm#Wwn>WfDeZe@GFyvtia=kW8G_DQtureJC^m|MmP6pR6wca(p z7Oc`8DPz4~^TXC_*OkShY~;-w9e|iUsYm#l>JCj?vVc1As)Y9qmDtdHgvuz%%Kdte zT>gX+2IB&>!|5{V_b);%#U7I!Sq0Uw@GINKr^u$v$D1C zwO6Hb{^wjGj(fQh6JGOVr@s|qJm;j2=p2G|)}_|9wr1k4;zE+6=P40@RSbxBVoD0o z=yot)cwf*Ct``H+imO6{MdqJ@u-FQcVpxBsciA$3DN`&d!qX)7OU2>yg-=UZ+$-1z~cgR%Ey(hqmbB3~g>FYQz8@<_!b8BJ`S% z2jm%oO!~gQU%PkhGt(+b4~py4@jGFCXb7XmaUosqA9e7l$vaEK z-p9*KahE^PEK$6J)BC+-_SAP@{LH0GOO3d9;oD~@CELXJlEl>Pw>K*d_Z+kTvNaiA zcV!B_5%l~ess7U+kHn!<)F$`XEcZ{KaZYGiPcYvMxb74Hg;jWy>B1NNlByNKXd~pH z?Qyx8-EI7DGt&N^XMlBLcf`DWNa*PjY$25Fo9vLpO zzqq0>*D>pnQ+E7epr(!k8l1sQA?buKIV2dJ{|GnoUOryWxl^lvj5{-HLPRi3e9n{+ z2Oa=d1Lv()l9z^GalsyZTcHHU&+jiZL1N+04-~nb8IBxZbGJ{6+=ioCswZGfmY z!)Gho++UBRwK1*xLA*tserXODsAej;7M}uL(H@suQg>5r;ibbV9I?bCR(5tM{V*sD zRwW~lL=zqhZUV}-I?Cq(t9|mXq0hoGJIrA_0%sng zVbZw=+0BoA(b>c#^5si-YO5C=|8VJ({WJt4vi zJCd$ReuV3~HmpSk&embvGVz=sPi$XW|A{~`K=;HzT>*S8qoWM=Ny2EA+-cToN2GPKyWufI)fu`)lm1U$?J_foTd2wiM$gUG|F zAYwyswSrP~Z7d-^z6-L-4sBdb95`nB&-~3mbT*4gq-54FweXO`F;jE|D;Q{0ty(o& z{5DG|7+Y|ZPO8^kRm^+$lAEt^V#c>mO!Dd3ki#x4ffvlH3#^Q<>1=+7un^zh9E{^4 zzcYN!y>315@m*;1xXZbjt06Qh`@&HQ+KO^k8a$rNeOffimWr^-q_uEa@v-I7RHE$2 zBnn&U_GH?%D#KS7J;Zo5R|kQf&h+2;4jvk7Ka!oDognZax;?&b66P%iUB(8@5{-NV z6KItIPpw7ILRnSF9<@X&%f`4~-K=v3Q!BGi=^G&;gO z6HC_DvHUkds|ply^rE0+sbCmq3zNT*=wp{SCD}r_9{Hp%;7=n+hbqd3AsU@e*S*ry z3yRYj7r#hLOAtb1h`nal0&+$p1QN(;`3Wc*G4OGo8xghSRwI0nk@e77r&`g`ptPNN ziN`sY%A-KKJ}M#)UA&*vIy@|dss(I?HEKW_ok1XF33}=KZ^-yB0*tqaAr%OfIEL3P zAi{9FHTHePg=<3Mv=)x$o7wBxbjZ!=;?_cWNFbajTaJC%7C1}aACS5^Ysf+XrAtYn zL9FhP)2qFyy$f^qMVJCSJd%h-3+);$dJYpZpqgCpYl*CpH9M|_`kb3NJ#D;84&VI5>x7r+_n=<`U@s-=`1P>YO@V|^k zcwhXpxfGV{M`UW%??^^?a0B({W~QveSlB+noR;4^$l;UdJ!NdX5O#!XL^vQ6!-Ith zHzFn*8!`LRcuXZEAVxXLjV1&jPg{K}9Sjf$UJ)J#x}{}sy{3C6$yCRU9yPcHgPgT# z*bDgAKrZ2TsK4H+Dd>lwT4sO8h9ji%I6XeA?E_@Z{<;Wv5Rl}1Omrh|97Mmw^e+&k`dK_S3`PlGF;=Tw zf4v5o%$=mo^4K`|8IZsgvY>Oiy7ojB$QGLUVIJZ!1;@PpUj&%(8*2Y;(vT)X$)6pX zS&C025b~kU8N}+vJlfU1dVBT^;6D(Hh%sv8r-tiSnOR?EH;=Q2=(WrfkX49P2cU1+ zTq@8+F+gVY?G~_C5d?ZsS{c~CLn>od&kZ3gOV3Hr_+a>EqG(K%?fu5TLEg0Otor7M z_JVQ(lPTh@7t6sSAZfQ8vx_YZerq*9!RvPJ_6`@#_EWmZ{O5m&y#oM79Y2*?5y}4N zE^;8VQ^)k;264o}@qWs4)Qfop25IPSWz0g;hiN|{Ak(h?Oh$xAC}x#E^ghv zDEG|e{#z8%n)}&V4KNbsjOSauMOX~!^bNiXBWn=L_BcFX+RU9S2VusC^LcuT^W0kK z5DkrVO{sXwZB-*=B-cve4CJSYq8TMpC7Pq~pBI>`ouCXn3_Y7-t>n_k=5bhV9mrRR zRTHd%o&TL^^*q~>bE33l`R(CXRCiO97FADcOiTJtViXEo`zO|2Dc^|t4KNlYUcIUf z)T0_TL4Jkw`b}u70{(d%+=L-s1KK564fXI~H1)8c*E#7Y!`ed_XP0O&PMg}k+Tl`) zA|N9IU77?1oF3vA6>iBR{_OZCNFf%V_j0*)Mx+mql>?Om30$n~@<6??*7Lm4Y_#E# zJ#^K_%;d(hpB5Bb*NAaeUw=&(AGuQ3zU`cjv5KxS`2&D!H>7W_$@eT;LAC+ z6tQa<(Xd~w6Lt0nu@)PXUuCwOE1 zGmj}b0lAv_9b+aFXg88dA^YNzj?^tmP1%Gk0dSxgr=*OPppvxaI+qT`{*D{)P)e(^Q8@#|2aM zH{cLQ{)bDXSM{1|sKAJ)#J|v(l4q6Xf9KJ=wsmfySQ}Q^AaxkHeF6;NOcXKeOXIQ7 z_r-j6X6TO!V2u2@7OnnBk&dLHmJTwL_e>G7dt206#%$J<(LdDI_EE^c_geT$a`)%g zRVqkFkkEQUVIwx21c$l>86L@B-+{JDaqaa(!nyGbG;Nzx8MS4m?;j);B;%6^q`|(=;QY; zMX6kh;e??Gji@vlxJjEmpP#jeZGqIz<1-?!xx%Bx%Kct$o^Da%Gqe{5k_OnwqC3&WP!m}EOz63D1T%#^>08xVR<%N;_{gS=wA`xMt zGljnxfBksKoWMpF_JVhQ5d~rU6C>q&0z%IGXYMr0v9K>hXW}AyPRvji?mYKWXaH+h zVS)<35WW0^`%#-s;Jr<4pGE^p&PFQBX?aY6ffQo*ilFUc9L>@u&p5}&TFp!i$^4zc)QN%2Qkr7` zmvn}4YC_Cb6DctnR`)CcJY}FYNIvtS$ zNL_48YvU8`PxuoH6&-7Qt^hw~Yw zm-By8m$#l%>vpN?Yd->MKzqmDgqj-Qe%>Fyy#0v=<*Z72sY=eeLQ>W_W6+ z5|HJAfsZ2Z`K3G@e)cI)>KdE)Je5x+69Ijv08BTmD86u^;A@+AZaMs!)## zj}0ASL_50o2hvu22yl)U>pyaYe43rd#6B=wK3Qn+vloL`v`#KQ{_bddycI9_KB&K~ z^$E2lXQ_Fk%Fd9wBGhar_JVJt*5=WIbOF@%YFr; zB-CtFZR!06|Nb_-zWCaoqpO!?P_xr?<)*nn8l+atOoO)2B~L3Q5G-#-J)DgR@6U= z^E!5hc0-INy?mlAb_SyONsmXDUhf#^3-3NX$4YNP7R=Bdxz_ z3~@b}ljJa7VCqhPY}Q%1GBU`wkJX0wY+4zEA!R$}f;ic9tK`S*7hy&(-r|9l0wpH9 z;&CWp)79-N=kd>KQ^&pU-dJeEk;Lu($&cY94^w`)?$~s_&s`78rlGLc9ShANAhcn9 z;#yp=&3hr(|C2}cJzlgDdQ=V%-PeDN{y7j2G`J|m`nomAkPn9BbAR(o+2Q#*8}+uD zrGgJ{^-{Zkx1+5pm-upYXO=DK@*{?!IJRZob2xk?Y1v+x+(!S5h8RUBi#dR$mQOk9 z#UK%_RXCGKBYJy>x!{&VTGvDk0lEs}PbKdEesB41SpelDo0 zjWSV`rwI(dyAXV@X(%T)#&u2EU)t#WZZcaSXOGF|3;b9>58;kfl5QmK8!sn^@!OWS zv)~MMA-JG^1Aq`-3s$ z(LI;H1DrBTnd|+QVSRa|nDSB((~$+=(ONRRDVM( znyZpcgOUgg$(JK4Is7DYY*bgq#qVE(w|JTdJ9cY$2VvhYA+ItP{K|CnG&1t{YI`>z#e)TZOMB z4Uc(ZFs}5Kwu?auj=PnRx8XYbHQR=Ab}CIJez@}aoeW3svY76^Z#QQp@lc-Uc4xb`9Qk z6aF#0(h$tq0A5A-V}f9zubh93O+T88ZBi=Aqs`xZZ;+5!PmWbek)B%( zZ-#zK(AIEpzU&R~&mPTX`_^~RdZKE!R7KznwC zs~$%{L9Axs77bd6Wh=9#AO7?2i;N5`Dl=8Los)6rvgZTm1HWFPOVq{3HM(lGp_qxn~{f+NJ$GS z1L?xvYMLC*)HqRi&Rb}M1i37n5d*df^7wVn>Yhm*;KL8r@UQ6*+IC!!F1~v6kXFV0 zaH#q-nRk4r{I8hg{HSvtD1<&rO4JnmK_9n0>OT@zSxt;Il{erLA;s}Au> zv*`)DVc?Y3F~UQZ!t43gS%pT=(iro$?7&%N6&*SLDQyHhzdrw?Q-MqVf!sG#VzwS= z^InaTK+BR09uHD_GJt5GU!ZkurwWD*V3hx!Dsfpr@HEgI!wN-_Hz}R5%=CKxDOMJU zh>mZ58S;aC-r6%!Wc`EU6+b!_c;Dw^u8~@sUeSLCPLcmE*_&F-RYw(}`+uuE$8g(l-oP%_1*gEF1DZ7|y&~Qhbnx|IlC&L_LCcQKgH=PQ z4Jm}ZvdV>}uQRfn_j-cs!(&EO!__Y?`A$f)6=Vxp=|(o^k_~z#qf2yq(0P2s6|Nen z4n4QpaR1lUK)97V2bSFX2A%SmUd`R3Mk}$u&Hf3Om<#6 zozoU{f-1MNE-cI>;t{58r8(t6v+Yhk2re6i@WsJNL-!DPm(NDLB`|`Vl>VbJLSQ0O zp5P6&WSQ#}P+D?a?K+1=|k)j+GncRAQT=qx;7PI$CY|^z;oBFbjR+=m(2*g+TEKefliBCITFh=S^fXgR} z0&QS6Fz>zqNv=?DW^dU?OqB?UR+3D+)ou8Us0#x+|1i}HEz4jI1lvw?u4b7#yN2kaDO6Q+%3tuf~7hqjrD z)Xn`XzZTemp0=;tAK&|J@7pA=-4BP|+pu%QPO)kPAIEW?Bj44vIjq9r|3jg-NcZ-h zh+qwsT*Kz`7_;t+)kuCQ&r!;Mg!+|WN;L!w-DgD481gi5S_YPEi+=pwoa2>f$;m~z zw35B%rRt=ppB_Q?q!f7HYScd*snDPsaaYt91u}_|;*^7E;`9PO6Mu8_W+f?v;|ALe0ug$4>69e#{ z!qXvJAMCdAim|-3s)!xm#(Yb-uKW%>QpU#4VifldL}cb#&?PLv8wvj_=T;0A6u){> zcr+n@fq|a?(L#pL9A<1f~13J z2Ij;*&wnL@Yyj{e{sB@iQBjl3&?KY^-bxkZC6P>HeKsG&$fnhyYV(zIUy&qYi#=t< z>V}!23i;YTx(lfSzli@mtNv|j6zVQlc78!kLvrb=D60*3TgTZxS9Opj7wqfRv-UMz2oJwR?SqU%k_rzg zGQJ5Guv>S%+QXz_g~}*eFGJh^j7hvR+S~@8G5*U*tG`-dcMO%t*Y|3zqGc^D6e4c> z@FZ;m^eP?7_)7vVc|E#KshIbZGf<(9FswC(tTv?W*BpFT2`@z>{rf=$au-5c?FSjw zF}|=FQVRb`cF{Pi6*>Gd`mffdw8P!}IGZ@YOQpH^a-9v?3xDV6&hZtH7M^n!n7t32Cqeq=kbLUdN-IaMB8&$XB2u zAnAUUq)aL1^?W#)4O7XxSSUbBb*ayEUl^8qP}l&S6VXj;KuSs=p>R(iYUL#6)cgq` zaIEie)@>wH#3OEa+*@bb{iwww%HPqt%+sHXbbgbh7_HP7--^P(+o~uhhw`JOgiW^B z>fi0{#L7zS?(QcBM#j9_+Qguc$l43nuermXIb$K^jNthTKE|}Dzfymkg!J_FvmOj= zY*@f^0zyKWF^ejnVCpY#w@=I@_JMa=<|;2$1_)w|ImzoB{G9$G>vo+vV%3_V#MY3& z52#gZw>6q*Uvj$0i-`;0FgGW)sbLS)Q{Cg0V5H=|a3yzrr`}%tbFa#ITkZVnN`&vl z?cLcpm~ip=^XJbO{H$-yZDVCe@$h3-Y;0_MUxDW+@~#c?IXUva{RvR}qjF$GO$7`m z|F+F6JAZ31RC1VagA8+H(6SSD7<6|V7Lrn|c8QER}ZyBQMnBuUr%i!oe^*sp#KuHzJxak)xgS&3HtZc^~12LG=lb# zF^G0>yxOR5FApd-EUSz<5i?YBe*ONf357<1oXeB|mZi;rFj=~9g@p;4R7CT7Q{Q}2 zDmiMIHd+F(`eFM&ZnOCvje;fvMZ2rcE|z?i-@F4$-Wa;3pSQnSRNfw_$7;pBYz>@{ z|MwtEr zaPJAes4m(E_H9dbYb>B07;%b0@$m#u=TSa9j1FpTN+Bm?FR{8%!oV7(8+NIKHO-dJ zZ~4m`$?&i9kze*DuU$PGWXcv8ZW4dSh`jftz+PHF4 zL@A$m4z;MtM1HH{H+=Hy&%ZMRVx`C9;iM+oo8p+TxGc_IW*C>Mo+^fgDsvY&2?%`d zJD@z0`WE@5C=J`hB!*h-6D>Q)p)635LB*nzkf52Gnu0t{=g;=G3`5@Ki!cp;l>A%< zwGEyMK__w3agXFktZbe}L`Eu5c3`6->FMbWtYy5AMh=L37pU%5$!Mu;(sM8~ zqW?ZMshO8nOUvk}v1E&c1Pab*KzeDRVzOcAR?X~t9|xVv{MMh|?;Had27nI?&I$Ft zVbNPP=kDuKRsK8og@jauJ}X{Gdg#g?IKyY@zdZnG|zYj$5k!Z4$3Ar1dFja#W0gy_E1EO9G&l&c%EA^5wwz zc!R#1iOIU+TrRn0=nHA5%EGrc-;BArgCf5%4Jq5%JXvSBYa>q-y^NXrSBu_HSyCZd>gXoM}R zu<{xViye-%G6$Xl{sUo35yQtZ!i)w7n#o-q{o9t?U01OF;qLI@xIz{u3x9lYRk1Xz z`Ffp=X05aMEo%QV`(bGM(!0Wti-lR7dwIGYSg~Jj5A@2|s5BaQG@*QQ&Zz3i?jV$V zgK#Y1kVL_YxM8Aypvc{741=`=f-SV$>8~}vaN8~7)pvgmA~l3!F?Bm@L8HDmH)gg9^TC4%-Fab(+UH=hM&?1Fr3m&4S1N?K59~KkL0+3De;wk*8inb&aHXjtnW2;*kkjBO_@}26 zJ2?M%xHt{me!nZ#)UbPf8tP5$EDwze;estbC6lhlDh%3c3Tn2CD)yV7(nj_5EAHLZ zavN++EF;Phg$6r<`~KO;Ay>h@BOnTQAQ@?5%WKoM2jG}d)9r4dJ;7zBAz8JUZwqw= zZ5PfeNX2a8$P-k>rcj-l7HMI|d#T1u2br0an4xyw4@CKd`!5+8<4@4(f>w15By>An z!G0cRl92(bvsGSl?C+7$St4z)vHJ1{p2vr~)CKhW=37*k72nf~4ycvYmDl@1zk=q? zr)FWGs?K4$ww9&u*52za7CIKwtl{I!rQgd$B(dF@3nm2|L)caU6J`6omX>Tefhwn4 zBA}wBNEQgaAl=2Y!)gJPk%jeKs$<3qPXeSO78 zejb}v4LIZr9-$m!x0I?8ub^lAw6M2=4(n6<#ICVH^Pd_gBrPKs7Vnd_L3K6@A}u2J zy3}w-GdI&(JTlxY%~%lasiDVf5R!de=>4sfIT*3)KMcm zS*y;O%U@0y0)wN9)oGsfr*EAB8|_DQ_3TJ<-HnF`;aHBg`SZnTfHX?JOkh9%E$&c` z=dDVHZj=MmpxHj}Xqc{xpeRM?6=#%ubB-7XYu*tUg?DsiF3>H^Y@&XHJIX?5)0Z0a ztcpLvxP+Mv^;CyaO~;}E3>y}LurFDuN^LXfFk>4xQ_vyu_saSD-UqE4yXffWYJ{Di zyL1U5^kSd?$VI*`nVOX z=PXx_$Nl*CNFE)+{rydq)7P!NhF!VcpDJUo~?FnW>Fj0AaesQrjS^SPZCs=wd6-w&s>kD>(-3@G?pPz&G;3MPv zI8ydU2*v=YFZ1z^g9$7A#&ORBT;cy_Q$ z^I>s1i{Fx?{c+UX1{v`oNJ1Fjm<|jBUNKVjK3qjXQk|ZHP{=Bh$8`9@juX;r)v~do zeg!6p;J3G~?8$eD*2IG+lxa((N3$#u$$DX-z?!K%=9iZ@XT>DA;gMM)?s|g8mX?^$F-Z+345Qw!}$I z$jFFna^6Orx?#K*2;jTGxNf!DwYDHl&GfTQ%_8V1dcksY02cpDd*(?LO2ixQ=jC_+ zQB8rePLbhMh>=E#sZF|YM`m`GS6SiEqW5>V61{vXdOZTLdo@^yc}DPUh>k2`xA7+% zMWaRzME=g}D-4VjK(9m0 zs$&Ejk*%R1M30-Op^QQMqG9P#=>Xh68VMPGo(mQ#Ak?O<@LaI5CcTKrMl;jveu4n2_RO@)r~^ugv(x4?a{#tb1ehajB2mk^}-^-fG}g-L=?fq zci(F5OAfbPRAc3b<;Bdo$qWP+S6AII%rsStchD#%$v#37(Di|$Uv{djtX#xZ>R{D( zn#`ZZdQV9I5}!SViWZ%w!FJD?&=e)8Zgdg7!uEcN>!1_!;j$69p7^cI`SY#1b8Hcs z^=a&MMfFbY-Ql(ZyMg_I@amyZ{Cb|H*BQANm~By)P55EGd)?}@GKZ>vOWl5uJ_V9F zjc3!Gp>L=tG&)wXKOXLA0C@s&UkOPGa%Z0aT+Al7ie+ywJr8Y6BFT@iUK30htd}Uc zDI}AKBxVE%5`0UI5ERbpEBXvOxub!ss+c{+jw*ew`Dwn%U@tn@Xcaj=I9MLqQXf-p z@v;7*DUc{X{2(uTOPoceu&hBK^5n`+WW~+>nEg2#L$Ojdr-Olv|hY5rq<>DdMD)&{B5{Cg87xEk@yjNY4lj`4Ft40Cu?1gk>e& z_Gc|QYK8f@xjhSyL=TII=(@W(``<-S9HK;8)=Kf_Isl1qOs1oxiSr+~tl}i!iTsU8 z3x~}~QG>0Mg$lghCl9Y|(3un=l!nFBL+gKN=!AIX2)q6mKHzfQeLvheQFLo|4J>1# z{5{xyRn;qfwChgaRZxt((=2qO*&wA1YcdZZ9LaE7U};nEBYs{Zc@8kbFu% zzTmWv>YuaXbx}7qW&n}2bwLjPLG_G~baY}oyU@xpCft9IYw$m5f=Ej3@-B)#{^MHD z`wvv>jN8u=(iL+Jng(?PV?*~=dwZ3yV(H}P7{OGH&2%XlJ-a;9Kn-7uv3eL7hQ#3G zD8x_(K-n9f21Tp?7&(phuyJVV-3BF8RejXCd2y%M)6{7os$CoMLQZ~=sZ2?+a-?Qz z&bmoel#$UQO2aXz_+4SlAT7^7gDTfUqfKdbXOWBAHL2=BpiH9-Gt$|dni`8}tosweV0Kf~!Gngo}qyoqT<4H&a?)r(QNe{#a#qRddLigh3dY_t?Di z9oxXWGafH%Z|KU4Xs9{#@uc%{|6rxo@1o&pe@+rmU0@Oy<(2H)qsPV;>-1$5x9ky5 zl5s>c>#lv#|2e5;#%s17$!`o@%%F2lBMQfyDK0Os$3t3MTT=tqHe9L*ZIsuu#h{ZH zaw@5P4Yew%YTfY^g$h_=WBfj4Vy)n0qnR1i<>@oNme$99pHEjWr%3mOT!x2q8cZrl zy$0^Rpm|`mZs%74*Fn{%sn>tD)I|A*Mn`*pd?@Lw?JrPC`8r|MPCcnuVCuvBnJiju zMyhR;=Sh`VES2*{t?*jZpjHc>`|Bl#iH7kRe)pgW$==@a3RUX4JO3tFm_kV!UHTAw zbtUS+Vk!WE)>!o=cCq%K8qCr`>B8~=19OUG<3_Q&)30JglX@2FW&Jr@e06Ki5fX_ zSwE)a^Tw^dpkwjoY}=SuuiR|y>?T#joxQwii~P^#rtY=+fEhPw4->qc(VXn0!h>$48gykjfuI`>{!=;nxmi+_3Yq;=sY?=@FJ0@hWqx;WUJu*ta zBJC(1=qFKNFoQZ+2_kYZT{2$piv z8vey>yehT$?I<1EeI7BsaXQOjy~571Az%L3=-8;L zquS0^B7k=t+uD_6V7d6U13Y~EfUYj- zNINz*HezsyT9$BdGVw56C^$GcEDWuT3%ehdiO;KZ!Z5>@aT3_mXw_0xNOLzlP4X#2 zsZ=Rt;=QR_1wyGLxwEpQ>rAMtf`?1 zuu+Knf*c|??|rL3h(V2yWC>>Z{7^YY#`m+Wb0X!u%Wb`ux4{&GJ6<;6QLK z8~Iu#Y{}e7iHWn%k-(`EVmwobq0KZ^yHr&TuTjnP1`~mXnF}cS;jYc1`Qg1J+iq*n zcLlwd%&?u*1hE7xaRfOzIYlLut}1Fo;96jhmN)P?joDwq-jcKAyKr>myD2g=;%xnW zHKr~yLOYpgac{)^snrME`D8aff7Sx=H(Y7Dyd|ibwS&FDkEGw1+rlsh`(N|^ZCECn zp~qrGZ$m~P$GH-T6r70pbw_(C@8aUoMl!iC6>7m;H0YGs>OX4MPD%@cyj_DMdA)BO zJwA5)vmNV7dbqdO9Y?Rg3hs5Ng#T{otG?4vWjBGF$5k4vVbu8Ju5Si~_q$dHMN;p=ze4^h3kL6N|P&*d{Z)Vl10KPLh=o;4%R4*j*8$)ef&N9UiV>FoE^- z?P=d#9xxqw3i2&infVl-R99*Pp8b6yGwhy=Y0j>|1@kAr%h<=e;s!(Oh6+))@#d+t z;*&^G^ZwFAem#P&}%R2^A#>!rQ4}L(CB$Dz`h+K*Hg}hfK`~fFj78N_GEQK z<`0=mJgH(#aYXb74Mp>v7DHjvyP+x-qAsmm6avveaR~R?=L;2 zu*(3Q$z)|CXj1J5%#P~89cHXZ@2ofy0PZx=!%(O0AzcYwy>tQluttg2lfi7Z9O{2% zU}3$@E&*R!d65PYD4dIjPqe^hhE~s;XGYZ2BRfjm*!_H;wvP^y7#0hYv~b%t2&j3QE`) zMaBJM)FigJwF%nWKE?6sK!6(1q$O4Ys@Hzx7~1do*|rAUfUTg~Q@rkCt=9KHqLpCP zWQUn&yEk&UP_d4`0m)<8`F0;8nuAgYqJmPx=q&G9<=_3DY}yF0T=sQsHP;M>O~gNQ z(7SOC@IRUupo2}UF>uOvqWzpX>CO57sCo;qD7&a@c<7Xlp^*k@P`XPc1%r|<0qK%( zKw3&f1O!1u1tg^e0qK(Nl9p0ZS`hy|`n>P^{a!rJ1(pln@)#7D#-TB4Vc}3 zQ+=}c*wdvK4KT)6OWqhQ^4kGO3A-_kivPK$gZSKjZqD%6~CV}`gjySJFnoh%Ln={Edc zB1)N-&(aFu0lk2Ug2Lfx)}Ns1KU^s3!z|LdvcaT>v^1FPrplPs_>>mXRRJh=BP;!| z2wjya+#ZVjL8C`PzL%Ax@|0~1!?Y7E1q6WyLvQo1-;NA_<>2ML$5C@fQbuVvV<eZ`?9-_8dED6P1v%j7_ zt9}v~DxP=QvEJyRzrN|DNy6O0S}1B#x;RN3QQ@`kxP|&}d8NcH;o*i>$ zn)!<})6!2h1TKyy%soFs@o-giDX^Sx%?yh^z5Sp-a7dV(Aoe1%bklS*SGuhAO>}HI z;`Ue2D5P6tK8QNJU4tPOnn;s`Imj~?gLPS>T`sdV+!q#J#ZG-H&pRl{{;;!Oxv=MP zeYaQ2seR*gCF62xiotc5yTC=~ym^CNa667^wa~bd5Kwv!K@{WsqK59J6Gne!1B&!!q=k- zv}T)ykm0_LEF&;*RYv&P;_-F7ep1_%hc$NFx~-%1BcBYjgY((WubA5!nB$f{<)F7yu3=9n%z-u)qy9Xzy<@=g#w-w zKo-&()A(P%{E4yv(};Mhd2NFndx7b&Zr^6_OPp@+w?=%G^-sxs^<#HdpGLKj&zW65 zTByO9jLZyh?J%)_pYG4}d+Q006b1r~Ny^l+ma|?K^fxZ#mle{dr`f(r2YT4L0`pr2 z?)l4WGUkjjOP$Vb!ayWmN1=A!B`X|7sC*Pq4U|`FLo_0_Ql#RSIw_jEp@o*|-dr$| zL9Jc8W1a7Q3pqyi$a}Zqd=IUNg~7$ebkAaMo(h2lSs>e6?6ZQdu(87W1BSfA2FWad z=A#~qlrw^!CKF`1@1PL*M`SgCPEcT}I#82S9WGT~^mdSYO~{gb`_nhBkfVM+xX7gT*m|;$J?lIO5oQv*S}Heb#kL089J0&>;EdSW zkI6xw%gXK-tTKH*Rl6~(;IsSSEKIM)4&;oOt)i%WU1u*F9rS?ls?X~08kPx8G`*=F%XN<)NZlidu}xf9_rg2I;|l-DhBC7Jx%)1a^{=EXjEe7V z@fB%fdQnUjSBu|=+U}~=;+0eBlP!6l#5*S@(yM;XMU#?CFn-S^gW3RyCHI8 zs8I1mws7gYC*Cew+k>XBa`kp%2>$8TI-Bw@CzENWgf&<4jm-8w+tdbi^@LkK$Cb+% zshQNW=gEa#HiT`b@#L?zN5;6P)(EIjXI78ULyb-DvGH&zI)0QPYu%C#JIKd1-0{it zoa2|x%gXu|JO0$G`MWAAT2C55bj7Otv{*^ow(#aB{e_jC#j;fT z<9$(c*NRx^|L3|-GiH8<$x^Xh9~JMG$*cUWWl_3e!9(cpcrrjvS%sRvVL%BnB3rS+ zf8MmzeCb^5@_l}W7f$EDspEWv-`D}4Q}uh}Irq1bpLQZ5XS9yvI{(Cq1by{;9rElQ zSMc^OzXvV$tJ|98$cJIdZ;8@4Jh>VciDlI~#9j$aC}XYGP28M97irLb5cdB+X{8huOp3%xT60{l%NL1oTlKTu{nHRqIG<$@9 z7p<)LGcYkW%s{c&jQu-=ojX);8>jcbF^M9W+*=WHL|k#0E4zKyr6l|IA&aB2^r^~% zG>(4|=bajDU8_g`O*2NujrVvU2LhjH~RlZjttXk1=z`6;+o#>UcoinV=EjIzJ&Z9VfI3i`D~G* zI8VN3Me6onuNFm3cvzop>nfaSqNOzltzAn6Imtq2(BgK8y;MnOG`#$~MBd}6@uYLl}bN9anil- z^WdqJo_jv;L~$2(s-#NC4P$z>#pYqmC2z;q*WiEutJ-eB3&qpPx)MV0A_HgIC!=ui zyO(&(Dm!lFrw}y#YhRFlew1~$BkR1Y{Lif690#fNX*q5Xr&=7Fy9jx4AxdI~c%BB) zonI69W%lBj)BvDu0( z<6*D|VH1BhT>+>a#FeeQ#CnhFdnFgi)Cxtw@jX9Q( z#~fX2 zxpd&U$L~Z>@1IY^u(1RxXni2UTo5=QY`%nP?LgLs!v;nkSI*ZFj1b^EOo`34mFId7guy{TT) z%74Pbnf!R^ErolTD*sd5p#yZgtN+V~irItS`+T@l$@IS)!+*uUTN+J~F_!kfJhHbL zCG_%qBT?evEzRewSN}@3!x*&cPZHN+B`5hJmUg>P^oKQQOBKU3akk4!&yn0QR|zSj z+1^-%Xz`J^VJdp5`aPEjQZRgeneXNcF2ow$fVewjEY|y`VvOGTV1K=mny*7M?ln0D zf3&;}gesr!!5n_@r#pd}Q9A z#89DrY|;vSlt9L1w3XG89%dGDJNdK7znVDt*;32HA@DB*vC4M7u6=02MiaBwMWGsX zfef#bn%kF2y5jzmLM6!=6fPd#j6RYpiNLXvo<0s2_-KA7nwmg)7Pdru{d_9G>gTmR zZ0Z#Axs}L5LRHx;5f)=rcCIpsCX%QdSv68Ei}wXvgo%SO5hn;M1ioD0L#$wV#3(}0 zP)n|7DY#*pu5EB#6 zgSZuL)@O1u-4Y4+h++p_E8LISy)ec6RlkvukyrWoT`Qjp3;DmTtl+MgkjJaIx(fLR z1Y{37G?wwVT8Y?*(t+z<(`u5?+uBquuDqLk!o;DarNa2wkFMoM8W*(#3Y9%*h-=r? z-L0aouC5mqi^Jl(i?Q)&oAP86r}X>AFJ8vrN<<)&P9+mc@j+g%jqq?WbxF0=`WL+f zel=_f*`o9PJ_(d}G(Wj4W(zn48igzjbgJYIXTN)g3$PY5orRCLcXmMm(Y0&WI=j2~ zCbX1Zjd-$2%gAg#CPFwkI0S2PsRRbrb@UnCy?X&lnm2DaN(f?}Kc@lqNHKRfj;W~P zV@`1~NjNGzTwG=8T{Rjh^Y`~x5A*Qxx#HpB5onh3>lZL~mfpjBQ!UvyL$Evh>S!P4q^w#?WP7Q*_7_@&OBptatPtESi& z`)AA+hYM#Z31bfreN5~8+*|FNXvoRQ@kvP|QF=U#53qX6_=$0`pnAEEf)b&8v}Na^RP95_X?8KIvX|aB)!wpaJ1$YC}vy^7{2_E1UcjIe0N(jFI3# z>8EA`GT4f$sz?2+)?c3Sk`ab09qfQzT}yNE=g-Vg0m?HCkj@!YSs2k^VPTn}N)ozk zl<(eUnwp-*K;-A=rvgKo`@8V7M6~v~93m+V!LKlajf>crJ$&TYRH-l}l=ieL1A`q` z2|K1*_=O;o|I!D-GVEyL5_BV(o{5Q*Zz%&4Q{1<2Hc;>DO6rLriP1=gh6WxLVOwgG zx~(nev+JDiw9{Ai%c2$YQMqzA`KV#2EyU@`nVI8{kB|0%APG_j#3EaRn1 zBZ7Y;KJeF3NV4y58wGY9v%V1WN358PeKwA=6(@yHkKG_rHYRqa|#N&7gOK8;{q0)ik4PJ){pd=|5USs`0KJV53Lg` z!2d5ckpG4KLqxES;2HpKNy`Qs@Fml@zL4V;h0umpqpltJqa~G>N6Y04a&T7W=UL-f z6yn#1b7f>Ny#!RpYDgLz33h<%tLjVrN@rSp|E-w~|I*MkXSKDN_7UsE;)vPU}M!*&;c#? z&KGtYVhXxhY9y_oDN@YA9%P4L|(1QjPX6kiKO(qJ(D%{{qGCD?7NA~O2&C4O6`)TOFiKvtm zPSc|7yAI8TFo5s{lbPSNnoK``WWf`?=5urLV1S==*}&pCs;Qpe^^1y&^FB2-E~0^l z3JV10H7u>D*jQB?8x8>DU}#urVl=``Z{Mb=Fc$dcadH*=<6qihH6ZB03sjRuX^rWS zgLt!rF!sz(Nh=S@ip`SxZkO{m3^UUa3JN+^Rx9zcO+2&Hwj1$JUnh3%R5e0?Q8Y=n zwJFQX;ue?UQjt`Qh0%Rv!6{_A|_X$y#V)2;62 z4lgXW#lSE}MMo>ChN1AV79}m7hTeBaJYs)WnlkZmll1N-*9TS#Y;QFi6%}bNV&afE z|9Da@oOoIJjtyex@j$5`l8@?f;=yrCYisMP>gtJ0gH*+o28v_SdJ928`}>QUph zj-o)XZ6>DsdjT*~0fs^`KXLEgy-Pw6yF1oZ%O@%sucD$7YI1ONyICb$&%twk5~POU z>=I9`yt%NZ6>KWV!Y&wra~DDdOl*u)`>zla;Yp~6MY4C7W{}fv;bJ*BIx4HEw1mCZ zEf`fU7<~)8h3N^a9|pTxcoz9_(i3q zr5QiNA9;sLu*(CVkP{>*S(ge1o-)T7A8eBPT4x#^?0ZpoSj=iomL9|n?MKQ zCnqQS;B|jSQP9F?had8aiYm!yF+&i8gM%>ZERgLhLuDZ$7#T9YB)4weqU5Ufq6Maj zh*t2`yLWb`?v`=a-zsZsUwHriy>rCyORbx@l*MTj@d`qZRVq^Pa<)4Vp+{dm`|Chb z=b{C_hu1jt#5oXMGk<=5K3i|`iqnbgJhl(z@Tp=oStCBOv^ol_6sz$yS@l;nm2vvj zACw7oRZfnM^m|LPAlJzqOaE9^wFnF#EO`K(G>na3sLT-&5w(EI@P?6*RGD_s?VSAl zdp#ahx+BB4GV*h4L;LIMWVO;n+pMN{%3id$tB;J0`P&3vO6p=I!-xH*g9)1yWnRu+ z&X!~Uz_g809;?dDezRUI+tb?GTEul$c4TyPGNUWip|Nn#LA|*k-t0CtY;6${xFs<} z&z7iD8 zs3w@AQZk-XS~|du>L&+T)2P9l*J&=E>6os0jb<}G_8ETu zSPPNWlF_lcNmjEFjvzr)<0|Hq=zPKIaaCnt5a>@!PG0uvLq!tN_FNp)<{Iw&!vq1x zHdaB!+B&CgT32^;n29leRaHxz2;#gXXq~yl#5|juigU!6WSRRfx{LFRGNyI89o=^` zG(_5nrukA;GH6<69H>Pk8jPqQ$M7x&NtJm_Du=Vr1v5yF66r z{(y3OR6jFam>4mZd{zSR`)dck-1qun-%O~TyS48x2maq*VfTZ^B1qQyE`3($dmK|B z`o_;riLp6c)*+Vhvjcq?K}LUTThYf^>D9_{v)Vf_P_gPcTXTQTkGirC+1(cqvBNmckV#C=OrQk3)!zp59WW?MpCi>IO z)(9X{6+vGCp)^B&A0rOpemiJo@jJLslN%@)!7d!#X7%RHn^!=Dz-V77L7^mFd;DPW z=02a00*4I9m3HzJ4DQ@X>3uT(S^1vu!WS>zOd|&x+E8_p1jhBI$dp@TzuNJvcb=QL zr0xCsQIZf96UQLo^6+Fig%r~9pG|I$W?bvCm-!T?yFWN{8-=ENNg_{-51MAuv+{^6 z-9Ioknj!98{7N|#;avI^Wshm?$J>7O!q5;GXKW5+qveH;UNe|)Gbx*diS2q{*xtdG z6n#?Zs|AILU0=rfexnzVQzW*xeN=6#mx$Ptx@4I%t01IClCr3KdX{(FLRC>K;133$ zrEUw#CC5Y$uA3rO=-#}3&DN7C#{jwqpOk`o;`Fe%w0U??k!``;K_VbpfAQkQd>3ac zW5=ZFqxDPf?zcWsp^T{_qb|Ddt|c-D4&|wb4RCwXh5{Cgq@lG`&$)q`3p%Plgdt$T zA;WEckoY0sqx&`h76WwJDV_At|E)Nk^L@JZG>%(Zc@#Un>SiFritP>2?_^IdOfF8F z(ISDzL0Ls(vFuERnci>TOu(C*tAhDMwM? zne^8iUkDN0Wz!6jt_|rnlaC9Hjg8eP&DxAM$`EYl_%b{^Ic8E#;NL;$qU4$yFgXUCbkfILE&dP6jyoMAwh8Dr!?eBb&XjZ~Pu=nEvI%8dl z$+ng1(II2k?`*Uv6A-+eKtXH#yhRAQIQH+DJ+O5#H8n-{SlV|)#T@(?Px*YZlFk6` zkqPKYzjSFNfG(ba!-?#3W9JLO?ZA_TyZ5Kf$HEp5Tv1c{O+c^h${>V-o1Lczv-~g` zx92(kNM{}>j+*pU_F3GGgk4b5q#v5VVlWnV=mT|`TuUSsBfA{VkK{s+cbwM?t zm{8VUHKH;VUF(42V0cpw_K$?Hci`zM>AS@U)!FKe$h*ncm-oG;9x1Xay0{3^2${uJ zpen>u>|6uu-`M-zdp46xla&CqgVsywQ8s=zU0qVBcd&t)+uCvgLA_G8o?_0RBxh8d zdXC98Mkey@CAC|gRH4x=Q$22VRcz!9f-&L2_Oo^Zg6DO@B#A1Ei-YWP$JI?@-LH`m zmfJO}nKYt`VGGBf2LM?(_#En zZ0b%`kG8P58${_ReadhbE=wY_hZraSd}rsDiYMyY8G>cCgHcB~pE7ch>syLS)z4~t zN<&heuXNu;h{Z(p-0ah0yqTOYyyAMFTeKZ3LFRerr}5)nOf+L0R0H%3D27exQjmIT zt$qFO@Vb6iwY@8eyThi8S^IAq^gTYFbB!ZFxatdFbF4pccv$(@I!|Pu&i$pQzLz+enn#s5<+wDyKK`5u9#gc;)eMp$iox3tk7{iZt2vLnps+=cz60g32$8rEuc3C)@NGKlloA2W~2BYbNaTX%O=vPtw?o??pJIFxA zro+q3v-O)exALYectU0a5M$DA#|JRltq2FK0ql9v;PzD)ArWo;8Pr0!6_fkgX9h)z z;Da3tW%-Z;)}EI<5;=I!w~lEI8|20vE3Lnz=Vby8rU!N9bi0Yc)&?|+tgj*LP;4+# z=w4!8gLko#UZljtX#6L;DK{tj(3F}kK8h&9Qt#$Xbd3y2CX}H&ezE|CT)c8+>{7Wc zR9fgX8mjpSSR{}#D+{IsXgNb@zX-XryZdaH5qsj*3^S{D!|TG5l4}EnNwt4>cPe3^ z4?#1}j>;-8D;pRcwe?kRgd)sATsdcum7BX`fq%t}1^?4JOB>k4UJ#k>4u5k=?QQR5*{r2LAZYYbAGyrLqtOb9>qRQ z5Gc`sp&@Ye)}3CzA4MM{+QJt?@R(74zn4?Y){BjM>{hR!iaFx07G)W|jSE z)#~uc>$p;*AIu{OZ!tiiASZgoxKc+N?>0Ix=O7M`<0ghAk*DE!D1bcrOF5dyzd2sG z3iJ@1jA5=FsD@zvknj%tylQvNXJf+BcW!@uc#~_f+$XT|vSeCb=7R?hP?DhI>`cE3 z`Ol+Am#2F}q(M`tye?fu(4=_dn zW-B0esu~)oQ?;iux&*`sGGXFh-dtzw7+S)p; z%ig|KLvKHy_nYuo&Md(0Q|$*#^it2&zNqHr=GfBGQn#coo8tvi)bW(2P(6%l2V>9= zQaP=`UYY0o8FF`6=X0N^;g2)l7FI5ja$hsoMO9erv0rq;Ex`8QV#U$BvhRDOH+df+ zkGX>pEC*w1g|9Cr$VhRE`C2D;DYNqfw)b)D0HF;Egoxabv$nE=9HTiA!(UmsxmstT zk9j-35lG^FhqH$Pt2@|ZY%SF83#3pOE9DMLeVY>{hgt`Ej8%+`(mJqfWEL@nQ9?;S zeVV%#99#~e&a0fRzCQHM4t(2qf%v2;M#w^g! zD9)`vCdM)hs>T-#u64U@qzY#{crXwG#?@|?yLwq-vd8nGB@M@mF&u(iPR^1QHjd}@ zsGg*q<2KnWPABe180x{F-%p{6*_q7Gt}%V_nW%XC8XWs~%;IBiA{3CneoR%oT@*m{ zEBFRnGa!56DS2^@9^t}i`>jU$s?TYYbRUEA59ytgz!cm)ifC*)I=arzPB$LW=j9#K z?{nD!dY zLboZ_I1$HmsNhdf9h>MJqqLK^r?YW~fZjO30Vr#SC(F+CU^J z;xxujMNMrvRdEkM8D&RDKDZ2k1YG-rsNHAPZZ^Wjw+rgeJrtoTfu!E$>P!r+(Cbg1 zrtbgAvH-PSJ%NJEM4a6H(BsW6`M`Mwcgu^SF4YSWcSsl|-45*)PA41SV1=|!KlD`J zTs5b=U@Bk~T6!8_vG~l{_0KFiEo1s}P6LtOB()CPUpaN}>P^y7_K7DKP?KZJPLvQ) zjfnBZ>EpV891RZ*Z3qT<;5tQqU8r2ne4m?JdPg^sScuF5@@|OV&>)P}UB=$mQtP{& zxuY$U)!zY7&EU+;g-YWKu&z^6kqN~9+|9FPd6u9;vq7Yeyw!)=Ggs#&z1XoJKfkJq z3YPeb4;YlMb8-?W)Gi;G+PQJ!@POp|%22umch7>IEJjAn;Q4U$9) zB(Ar&x3#mqXxadXbO9&=i-!rSfowrh+`a*`B?R?dCJst8o8$J6FGDh(j4627NHy%yEw&V53Q8{siiM^% zLzfm`S63qu{Le3HS9K1od!Zw9>XUahH8l_!!qsz>07FW}2!gz%qcyzCrmTjelg^!- zg(U$ZDYzxrm@Z7t&23YM0DuxQHDwHlFB%jO5g~{7&nqZUvA17MmF5M|8sM-0fcE|~ z)F(^~jD(PAu|G1`Vp@;60Ao^&TkK$*Ivh8Pu=EkE|3Qiq8)dHenJ)VRi=OzwK4UFZ z{W!CJ{NFY|+|yJe44!Llpji7&uh{cWfLeh>G_i@L>;Mmu@nwNMDn4G_$*G`?6}ZwM z{gQTnxs#nK7yBQRV`C97UeI3!B_$P#DmE;jG7_*H$n!@W4?0;#lKqWIDZpOsU%n4Da9lgD#? zHR{+=IFk?;7k=r0k(ulQkZP^blE3E!NMLI%5j2NmtJjc`EAJVaZ` zz~i0N5IZm=sP6h&R$kswm%p{X-n4*fiF7|ddr*s|?c1Cx%_j(Dv!1D`^Tii|n@LS& z{C$~nM9E)7$MvpXCxk5P%1FL$O zfs3>!PN*rKt@ynN?Pztt8P2?ZS`O#j+4~jql zcCKXKzZ)br2T$nzd%j4OK@!*W*tFOM)Slt#B@PabSCG2&?1G>Tuzf^}aH@RJr;g|9 zbi@$^VpTF=byPm5ZDz*I$H%upcM&9gVg#KCvqN6Fo zsa91di0SE*tW~*^;?i!>-R%b$)W*(ET3pzd3LsF(FCgoes`I)h>n`%?GxWsxFnvBf zJ!Se7UsZJ_w++W4zSvgii6U^`K!LZLZmU|&7zL6mq57gdopIfWz7nslVg^L^^PimzljhWBJ1b~)!l2^r!crZR$(!AP{Wq#Ku-`iPfio+Z#z2p@q9pK%4m7@Ay-phzAhorD}P8lFN65%FVl(DLr@lhR~bAh>he0;|XIDAO zc0%2%GBHsh2KAW=Og>Te@RR zm^Ck7a2N3x-soP|haAZId6Sx|s>N8LksjW?G(UcJ_=_v1z zJExPmq0+yNB9?Hw_%NoPTbKkq3z9ji`?dCvf>tmlRtX`2>DQa^-g^`R-Z&oWm6SO{ z+1u%UDmyo~Ck)KuCMC&&e0)FsedY&4C%;_pUhWxwr_HbwGw&z|djhb;P%M(d3J{H= zjaH3{ic)lT<_9?dcSfaqMP`oF!?S7wl4{uTfTt)=cMY~R%54h=G9EH+KxrMIRPW%Z z+4HK}MlX_wV*03jD%fVzgfl+Cj_Tx;@H>iFV7;KEG-Q69wX{K=u`xY7svEa% zEgur==;)9Dd4y_@qJF6p2?H9rWfWn_N<}DFMK$C<`RXPglW%(q9RRa%(vYx=Aerv) z^mGiwP9Qvkn(6YgG5%aqLCM=YG@>lm67WSL*mOq4h&>;)1tr*vIvdJ&ShIDBo`(|% zrx_aLC=Qy|qo#@Y%A)M)2uV*1Ai0yqkd2IPkwN_-Zd8c0Q*^#?9FBNLTrbXtRZ8C| zE6L0(!O(aYVdhnOE+~a`nbNm(y@TxOLi~|+A8+MC^apr-6_X9cNKLtuA^Tv+%7P9Y zq!t&gN;oTr*S)MWJm?~nV9NEDmW15wzd?#(ln}7%Y%bxE*d7<<6zbJc7Con7(#m z#&?iyZM~Ay`!3~A_A)DLd;dWJ7|7xFF?MLLy>f}!9os;i0y>|0)CEg~iQNzaAe>ve z@DU2*{$f9?Nj-i2r@c0CK1JjLF}fpjkqs)toU}S_O;fGI8iM9qI?fMX-|NsM4Z?Z3 zg21avwnZ9`tyqImOJQcwRIT+~ZsZjOj~A`s+kRVzPmd6$M2hQR1qC1J=SNrzybKg5 zqzPiJ{p7k}&jSuF6;mzAI;OJ0fLVu7k<1?8RP+i)Y5K}Qr~>B$AmL=t3}Z(zX29k1 z^7H8^KPqr?wq=`Qhv@fPMvRxrQ0Vv|p#}mKy=e9J#)g+a4F|;5?ATRcd%;rW+O_Bz z=Y?XD#~9PyZ?Q2$T6A{#l2L?!2b3d6NMbJ9zntU_g_O0TqN35lP3Vr1l2TJD@m##L ze*oc29SN|_5)kOkxv_S;#7w&(6?*{_9FAUNDRz9R-Fk|6V3hGBMf)NBY$zDCbkI#> zW4-@1vwi+>t#>lVCbf&4P6oY=6UYRZxhBh`llnCl{=p{H(NG z%0>x9#{L+AbHsH%e*Q3siGBsLXNPs5902K#V8hFe@86XJ0&061F`y#5;z>Qhj()hp zdHVUn!t;K`kR88ERC)kBjKM1Klk^f_w;VvP1(=cg?85*RFsl%S?-@yQ3ZUow`v`9g z3fm1K9Q4a8;q&DqE?|EFlY_B!FJLsG`^?TBRJ#x0`!w64zLr+3Zg~|Y_CnNvp9+zu z!$ORhD~e4-ovrKJZt6{v*e8Wc@}M04r4-cN6ckBcJ*DeyL*776#~tZm8;HT$p}D#S z&2E5~oe{txDOWI&FOi$*${)oBZ7r?lXD;6@NwQ5=N8RIl8En_IOMwSBFi2{XuQ4S7 z{2M9|05oK%9&}juEy6hh9z;dP)k(nPWYJ%O~T znw`4?#(X(7HFTi8@Dckg)9euGDxalbck=2Z9THiZs&q|P*Edg~{+hOSoEj_skARjN z3)*B&os$B(ofw^T5evQNeM?;nHx`L6wrFyFSYQlP%)av7gkA<*j-XZIV$5+-XC7)A zQe%;xa{Tgozf2NDdPG>e5Jn)%AwwX1Qt3=ZLAc{yYKoe-->K@OUEFO*+CbUT+7?6G z!I7!YLj|-xnxX-v%Nu=ORkp#-#z(eB5Uw1=U%3BfgVhW&GE<-H7oPc(uv0|qfr>!P zzE4s%X>fQL%l@^px|$lw@^E8PN9YC}4V<- zp$K|^L2Q}+EDrfgat5-+M{md-~7Hu$NUIi`~wE!()O=tt?mR( z@}I}ify@dQZ*DfbeSOu`>Rsx8t7G9y|MJ&pO5E=P7?(t!!DKfjDz`rLXUW*+4^D<3 zzY@>SUi*A@WD!sE_Gq$ROj>Ibr3yF%h!S6cy=n1^krfgb5=a24Ja{mZE@5An!|>#I z1I$xxw^VS+_(%eGJQ~Z@)0=;y;>#)qKn5UOmTqoj&>RS=p9szFQT%?3zxWI>QlYAubYbu3*3=@EQ7&_5j-7e7`k;_h&Nf&xjS zqhr~+y-3|i*X`Depw)y)1g<9$J&Gn!f(*UY1c7Jze&xBUg9>IS{w=$&zZ_z3QZWlr z;lB>E%IxVB6_xM68ToC2nPX{~qwgwy*z)EF^`3D+M8-n&02#dqY&Ju*iU;1yP9g|d zk2ra9B#lH~7dC7Zaq3w0C^LmcEYPi?Wn#(KL4mlHdn#H}t-4k=KgFUJU7qyXD3td)BKsNlqMAE@GuL!hC@D`Y ze}Qe2gDS3d!!_5N8~MC<20XYQ?J&C#q5Z<4YX+qh+YxKR5*JMw-NuJIgwO1!u5M)( z(Bn>#9j3shXvogK5>j3ppJGum+FCX8>F*7;ky?1_%T zA2{0axU9`F>r#z<(!oX*rj$6md@-q5FYX5x!+-B7DjILs9AiSnQBn7R4POS%Sy3W` z_dgbC5u+6k6a;5MHt3)Wr^&J`;%jXFWcX@g?Ww_Y?OLNhlMJlRr=RFg8#_P zifo%S^uhn{uPn(F(*FIGp`!f1dk$mEbaPC@c@^-;I+Ya;$&@7ipUc9u-ko*X``0Zsg$}AcB`hi;j;6aD2b3k^Qryf5gg#Z0+~S zeIhKsvlV!e@HPLq+Opb|Dfi{+kfu6~?{6i_(0A%}P#{o6`aQOIEapG0KRhi@vVQwu z)N?{TdTU;;&)>xt{`Apr2Hmeizs`11vTpZ;SKMpg$T=%9DHfG}hpJXz=)W!@bW0x` z71?l!X8yfR_rmbHJc)wjy)er_l%q-LgM?A1>C8RJJ9CyF1TIP8`rb7lWNwi(`F~za z;7-n2(Xbs^6ZkdLR?5p!&$D_d6(h7z#hXqp)%U$wi#&DJ@lREz!#m=J&YDlcm+(+O zR+KpAW&WRwh+vT5B=(ZnyICaT-{DSRVxCEDZ($!6!22QRKR=eEzQ1<2I7a2*`-Z`S zgzI*D+NVR2Q)el6jj-sQM(;gxa;~4%arpoG%b>+ehctK;(HHBhhh&*Bm1ea3o;guH~3_zX_OEmAY?Pu=%U6dUKiOTN}gwxUVYPHjr{7Z&0F@= z`l=~e(&Jz)Mf6%w#gC3g52H2`u6$JxV(JLf^Cc=WQ%P zC_{h8Jvvr1=k*sm3DPts^s-!nT!rJKp1BL@F}WtrV(yI3LZxHw-$`D!x_6Bxn&^K< zwv{6~R^%)vzRk5@BQo@tc>#g$U5l4;SvjG8wFjRZbp%}u^&O64Jokp(W?rw)zW;yL zu!XQ|Qi|XQzt>O0D^b2}eL9p6{oC>TLRURjCPv>H>~7ksSu4ve=XNaB7TDKNU_Nfe z`Jcu3=N(|0V6F^o2u2W7$ymAH#@RUAk{3&493}VAp7bUA<@xFE7>!od+aAPMiqnZO zvLZagP)a(pf0t!-FCeFfTQfvZ{)Xa_T6H}|anA2z`p%!W+tToNER696+Ec7Qcu6f* z-eiqrl$?uVDNKih=^{MB{xpFi&C>?=5xy2+nF4lg(^FGx54oZcoR=?;uJENS%-xIM zo0~QPLwnmHxR;eJ&Jr*NPxqqR{cu zH)u!M)A8RO#)AJj92~>nih}?@l*MmdNj9wiw>pskd;}bBgj|1HR%6ajla%tVlPSb|l;W zVdH&nTr#i1CiUWHm;F)O=c6nwM5qnfe^Jmc8Zz@&fWEDK2HuX}xPs?Z%kUJkC+o0W zsjgw{5)Z*8RC>(Fi(ijA6%^91js0s?Bnyko&&yN1d-r8;5V)@!e)8fy4tywl*Ml_p zQW5Unxp36cxIYdjaaKYegNy3V{Kr~@AIDiP#{9QOG-ILrmCMS8Rz7!jUM)2IfT^4< zj1&smx0ubs-G$qI70$vG9+sPBlvVBNisD*a^nIfCuTKhlfepZCNsx5)20;(er8~vM zhfgY6U~^$;J$0&oL~nVUW+?t;oylQ4jqw#*ye~q!=mi>f7if7nbMi*|DYVLfCkH|P zO?tw2NV(uY=K~ETIt~h_bhY(2gqkD6giJ`*+dlP#9L;U($sOj!^P_%V{@3?O7N!kA znfuPXk{hFhU6vkCD|GFU1I6oTXM{7)qJk>OO9{IY3)*iJmuouGK70ml%a?1r*#6rt zN>xBP1k@xVsY~3B1^B_I(2NCnExeipaOBt74GED|oW5j0zWw|JeR;yO|ofe#Hk@2=a zR|SsQ-W1nE&XOajNEUL<%S&ABm#2vd!%ROm`75Y^MXRbv|L9D6R2*Ibf@-4Hw?tck z7%=MOOLu-1vEa6(_8L`~f0>Z7xg4yFxQmEIupwG6+&3XXv3B(GjbKd>y&_Z;LU8sB z%1|P1Ru)r+dohQP<)>YEcvmU4T#1bCrMf6X0UFAX?yfs#(Kt|F66PC_J~-IbZG;R6k?{UtHZ zxrS}Ff9Fj=TQqcSfyQ!rMIMyeGqt`dxkS~n))DZU1yZb?DEwBrpKGJn0!VE|4a(%% z|2=Kh&cv*&1R&PZPf^gA1J$6lSYZ(hds?ffhF$_2Lh(sv#K=s*b_{4OVLksh#qfE- z=<-Q=x|63l9Fu_dE_iN>wd|qKwfmJ|Bt2>{tk*mky_TbL&2wh^;NJ$YSNNSu~d z;V$=PP-9ag*TF_{o2R8uz=UnQ7-XU<-G+B_BRhS{#%6PXw!3+d-tk5zf^+! z8-h=W8(oa@{@1XqmV|iq=HdQA-D5{zE;ja~r+-_+@!8fEcKr-19LPZ^P_hqaVYGsv z?Dq-9b%fTz3IPRYk6&%>yZht)uQF9*BYC*-?%DUv2?kheauE=t{*L@3X3*k*8U01j zPOO{*k$dyz&10v7hSlC?l*r2jp%j8A3?jvy$MOek&E(A~0vg}Lr+RkGe@j~|Dkc59 zhh|P7gKifZhD6~{DuPY^x&I>|4jt9bm)QMH~-8Cj5b>D>L=U4V8xHI^IC%N{2>WTLx%iqQ>1nysSf>z zT&J(4^?$Uci_O*LqTJ{slv=-EO7u9ldbiK5;K~iN5o!TAnH9~T!SILlub!HW0wjPP zJTZ(jm)zU2q-I@`vK)-3!?0`A5hkU?fsogRi|N3{?g_KdM5MBuyD2R;<)md~g;oB4 zOucnj6@S+~d_cNUx*J8Mq`MJRQ0b5sP+E}^7^I~U=@u2Fk(BNZk(Lex1qlH`^4-Vp z{rs-i%ReyAoSFI5-fOS5_J18{$dve>^7-*$D0$W{7`@-#p0<#ofp&6TxsjKho{BA+ ziTUx3RIP8l`_5*poRo${?A=&(ik_==_>y=h_P?R@r%|S1hFG21-^KXmxXt!<|LqoV zZ(s7uOc!1X(7iH@L)?fQCRf4zE0#>8*D1LK`s1Sm~8lEXBDZ}*kwqwGeP;#FJG$^x(UnbU`IoY?y*|9+CvPOF@yDg+EDK|R&auA{OW;Cw z?45f$wcKSUH2i;0vO#lHu8Qx+jH09%HeKpGZ+9$+)f(vxc_$09B8Yv#2yBT);q;#Erc)kGNhGGw;@S%UG)| z1#IU3Hx*bImY<;#QQnv=-nOYYfa-6s?vkO*?tl1v5WU*;x$)>ehM#cuW88~0zELJ6 zAuVRxKg5xD_pdYvu;cN~4uPmOca;d-^N+=w0hD=<Mk8nSJ^ewmRWBF1%_Tj^ zbRj53Bgb()E28^!3=HicLq%(*u~b1D0)bE7FrG!)@h8CNq2S{COx8|_4vyHHixuC5n;db5O^dWd z@R5uRrtsrWAW?5S% zRzkpIhrv-qjExz98U(L605}uy>QFSaZ=u|pPWKw`@3Ch^4ftRyI64-a&JMN7(4cYR zo*sD!^?~@KvbhRZg_=0f9Pb5O#FE#~F8LroAv$qJ?e&1xAOI`aRFI$F56t9ZhXA`o z^Bqi8y+Eb{R|yRdR|HA9p%F6R83;Tg;LAWrs7ZV)kb@uyQ&?D-J#%?!DJC(In*RVQ zBfH&wB=E3khGbTjAKiE~*cYTp&Wk4bkyPUUq9ak4#$~kQ)#$e&yJ8W;_ArKFFd#x8-e?AIKd+=j z73$l<&Zv=+W#^jN(5JIp#`jD4Z<9I6bzgX|vU~61P}>^{XkHxr^9QR}1;d{zx?wTI zOra*GrIkV^%<^y6+ORK4U+|SVpIpWLNj_JU?koAU6Q3VjTdUnfjq)F~m*76wZ(W2y z54hRfvlFd4koa9s2tpU7u3wL&`x>I()#ZdnQm0hGcOk2>ac;?%7nqcj)vi!V1<;%B zuhhd{3aBw@DIUiF)cPE8@@H%;S*PTBZ7Q;0FG?5}u6cp!LVv`nr9%~&`0!jZFWzgf z+FPk#16POEK4+KJcN70*Gfrm3BZyu6Nu;tq+K*Ga9zdPavW>wLPXKJMC!bF29(M7= zXd5MGriFm$%V=Ux zw)UGzF~D0r%$ws^F-A3?|J+MTZ&p>Hxnl{4W+{Hm2frwz1)Ga@L{1^i^g9u~fHa_Ui;N$EVgvJe-<>lo8 zKYe*GUzU6RToUwgX^ojWJe0t}X#o*cdiotT@dlzU3?sX}!~7oGr--8v>8=)*ep0_` zjq{1IBfyaUh4coPA*K8fy zKcamzKEts9;-*(cP@Y1MC1^Q+x{?3{UyN=I17y?0qdX-xc{EoDtP;+AH^GttCg5xJ zcekp-fJ6j~b#@3LS&ASHetE$}yrgY7s_fVOlZW7p{EN|2UK zj(#5Au^=vnHdBxY7{Z&DVk+_8C~@3S0SErp)6} z$@@K_D~qCpQlfQcL%5b~-MH*EP@2HSWd{lk)wGo$LJQ=7aw;m&>ng0rnVayuN=jP$ zd@bS3X7XeypOk13`9%kc8 zIFR%}W53XJ3xy1V?`R;Vr(rs!ueUZ- zWkIse`cll@>SUhI8DHP!j8J(-UIZoCsdp-7ViP0Q)SZz#tW=- zk=o3Lb{J-!t5;PwS5Hp7pY z+geY?W4a(^$R%Ig4_#^R{`_&-RETazEdWEkVL5s-&6deAgG<3T!bxE*pO}H9s%&z? zTB)FS<+J-2b`Sj&uI5+TGH)>_z6N0-IOc@CA>t$w>5f+Xf*bv}1IV|~VM2d@f9w!& z^Q|cSH&;=dJUj%zjB%BHPL^=Nq~wbc(br`TqD`K?xhzJMMLYa-(V+gBDDhZFCqbGY z=$7+{7+^(pRT(w}fi{o7JMufLakpPrQc%Qx{Mgmo9%qFlB|1ONg*=gJC)dYf_4nR& zjng%>p*cWqFa?(*d8Ak9ykwPObHkUGmNu1TSYEOvE+f6EuI_)6gYE_k2cA1vtW?!x z_Uud^15YD*W(amMU|3jDh#r0%_H(QJwy+ay%zE)%6zSK43YwjU5~0I04dOo)G>m5^ z7Bm6$g>0mi1$PkG#unneYQt{qr#Ta4ecP_SA;I8yE3fvpV zZqS;4kjBJ9}mC|qiOwUfg^92#o_TT!x%w675Q+G3v z@hhxh5k);ekDnIGR!81gzZ#NA_<#r*t|RK)OuX$MYN`71?ORXuQLY) zYOiV}1iAU{O9}IDI%3+uZM+=Z>Xp%7k}5+dB&y-;X{%30oKBi+e80 zi9Ajo@ylpy5wUC@d#dol9EB6f0OL=Ui?xYWmCtD%<*wE$fc;!A^vMKL^~N5uC5)xXGx57VvrVMS(m ziy2EmO*d;n%g%4tmbZblkz|7UvAm^5)nFN=)E*>IldB(*`8v!+vkXt!rAkrH{ju0d z?l^yTGwiD*7xS zL*ifOe$Pp|S=d~<*s7iuLxzbTSk+&OUy;~%`DF9g`_Gt+)t{-^xoY^gf7x;-xJAV!o|fcm(jdbgwx|V_V^xZ@Xp?B=GN0o z-#nUHrNnr%3rB*-&t4WwNe_tx2#L8ZMCjA9sV2vC$NfrA&z00_Cs?B&!k{j&O>$_S ze#qrY!`M`!oLv%czA%-~OHWd5SjN&RxxT?*C;MP?ZnQAbxqddd-OLx~4iU{r!hkiR z2w~0FuV2wh=%3ty^78UP_6gK2_?GpIO}238zo3VtHoWFGBU>*1Muy{oNI`y_^5%xt?4&~wdmZf;V;fJrBOFJaYCl2q1Q`)rm zlI5>hc(?lr6zLb~LOcLOAaiGdtL||8y@6UBqzb^-1A51IlpC9D-Vpp50&!+7pW@=; zU_SN!%(y(YcMz*c39hT#(<4GUGw{^OWZ8dYzu7%%5W3%8a_6Z?;0lv zon}2G3lsa2AQwYdNZ@=ivoSR#b_sXK#9d~ScQ?3&pdwc;VD1Od;=%@D$`_y;~rd0ntYEBVOyo```w zB?e+*$Rnw?DeleNA?)HA#a9)OYDNs_v11$UwxR6o36Y;7ZQ_O{En{>f8ID_fU8eHDgR2_>FI9M1ZsWfV4y$o||D{OxLJnm> z_Cq#T8cv#`FNbp+?SAqvTI@xZC(A6|%8f95$}5Om5 zyQP)*N1Zqk!lQrAk!@MaOVS$*hI?N^TRL;nZSIGL#y$8WdeX!CW}*rv(sE_poZy@3 zuiJOaWp?*gaO_6DO-@(^%`F{HdWB;(VB2m~E`7Y#Q{-o!9=Ld0H)@v)C*ng1d?mL= zn%}Uk)ai#1m4J#0Aw)?@siq+lRHQAGZcwjs`MuK9!b=OHGhnB7M9|&<$)5h2(k1=O zXhunEz03fAe|YyeMY`*Md?D^c+lK*n2u-HS&wpGhGci7{kUPREDw?=2-b@=j+n3*P zn0WmD*I+JYlX=3E_S?4uw)FmPr>?|KN4RC^tzJfUR#`21v;`MxlhsQc(BsrX@ZPwk(kXblP#G@B96t8z}ORtbe7U$-6@fwG|2?d3S zXQj+glE4M%wc2I~Q>8J@h^I3nw5VLbf?cqH@J=lPDCYtc3er}6KW_6f6ZI~VwR1Z>tSqQ(829m zd<+cJNyJ_RYCR|vWLlt16K8!9Y+DP}XTKIRn!=%SAeX*A0v9nH6gVj{7+(m%ymdRq z%)RaF+r%u!WeJ+TxNjPD(w=WTC(V8&owbb4NoYE`xMgH~N#*m)94B6#arHL)hM$Wo;x*Ph{IiaZg`3b#fEA|-yf z1#Vqxr=tR#oY;UNpg?*DuvgjbI zF_`^k`&BpPJ#D-HgV?S>zO_1XoP1R*Vb{B$pQu4uK_`(o+S{%<5qU-xV%f)uG95SC zo|eX8cvSwTk7Kb&a5ri2X&z2GF=vsk_k>jk^)o8(C%yg$JpGg2t$~SADci;`$r)9VHQiyAlcqyg-tXdqn#MK!4$Z(N{NLHw#g9TbfY>#yH zP|(uiLspnGj2G7vhyc*?XO@f3#s|b1e++zd3&wy-3x;^MPEMJlx)gM)`&xwEB-HoD zrw;I&?qD|Nl`nj`J%3yJL^&P1iuDT1Rbz&<;hvG*v>R6OcICt##qEKl1=sXr*}4jE zl4JVi{1TziHBxbPPocj~zw3$FTx>{KrIS27xo)5zexEQ2xv??HN`OIc!xPKQ*@hc$ z{o4I&WzHW(Cm7WV3BD$onY@>f19{ug}s9evk#3s2j-ADi#r8{v4WQ&hvSnTK1n>X=5AUrh4DIt-vFYcEfcUd**_g?PS zFBSahd@h7(5?+hj4dtLK*md;onnPOb)Z0xqd5Fuys8;iXH;Zrt^fF+d9S~La1)Zo! zYNBd{v|cb2;YHRvDLc5luDpV^H_%!s1b$qkIh5?R50&$<3UBV1gv44m1d{R$T=FfF z%@c}F3JULju)+4t24Dlt^ZUPd_DXr;AD5=Sp0W=fw%vQQz)BzlR(HNSnYguT$ph9j z2oX*u4%6?5`&i>|dv-csj)*2OYbVFjuq|u^_Wad4(`mqF)}5N4ELMwCyb`q~rHr8; z_rCel%O@Mf)l2$ylw-3Zu1QCZj&1RnuN0M5RC}Ct>xo(j%x6~dQRO*DosnzTFQ)8Y z^yPjmTZoiFNMHMu6d7%atUA#8jRwi(P6U`?M?tK{tb{Rhs+ z!Vkj_gB?|*uCuT!aZEo6D?N#vm45e#Wb^U(Esy7uSw92K$P4aMnn(_jb^Oq&MYxxx za9i(`D$od5)Yz?-IvVWAV3!l0k%jm5lYQEQW+``60VqdH~2;ZF? zYcicRT96+mW`~>gST&krxUPvizu;vXxA|Q}OU}kSbbs>Buvf)wSQDer(owSd+aS*a zjU%gSVm?NJY>Ualn~648Vt!fNd5Qimp8Tq2p|^$)L&C+_$Di+?>DO(kJU}$t%i?-9 z-EDcz}`hW+ZriQ()nzF{iHABRLoIO6(Hm z8!Zxr!;5KH;^Wqr-}ifZDc0RHHQv_4R&DSJx^6>v`K95 zbAH-*v6TXjHnB;2<)>Rej^Ya_U91_L%0e*$PQLkfYnomR?^xR1rS&3F9EuE8$-SF) zwl``oatvdW(f0XiPBS|}^RIFpJgt<{)7Pi-VGVb5Hyl2)Nh-9zLOjG1Y6W&*4PIMZ z$GO_*SejMX=Hi~D^WlkcdQKpBq|1vZ8OzT;PK!+Xv!V23H|8qpF8$cIJ{Zn8vgf$Kz{+NU6jv_&xc<7_DCvr$mP#J%X4bmk8aPg;57?>g3$@{_?ASA z6Mi~iWe`IAkddq23!%7)Pf5o_gM<+gz8)b?Q<9Jpl{G zmml0REZ^O@l}9gVIUYtKPSthn+pkmo$?2=HYHR!xS&wr9(o!n)5aJU^%yxZ**eQ3_ zqI@cAatma>bWaa>NI z?)BTLyL;NXY6{QK`*l2H1y9U^kqRPjKBE`EHLj)v7wIxFb1eL}uQI!Mp|b*nE;5H( zFA|7Mf2^&Q*4?wnba+!Xu?n@MrVm4`tgMAYS`oU}7otA#XuE#h&Q!laQlZZp>7t@9 zkNU3K=d6YVVG=dX6zQ3ypx`U&kjsASPaPbtukQ-Q z(DE)7|K))^2KKClyWzy&(sh$mlOJlcVj3(Wg8eV4%7o-eiqsc8YoD`oV%m+ImMgQ! z=(qoRDmLyAW~yQ#ojkRM`t2Vk*RAE(Kt5V1?femC|IhXih>t z0-N(57)FP8U_#$vkWi|fx0mJT_ilQNEfWn-%JPdn`$=()iV%tu!(YFK<>lq6Nr!+7 zWZka0PlgEvTMQi!oAB#ZHKn+K%nOHTEdx*;>rw;e=H}ESeIaq5%}rMv3JR4f83OfI zzbhz@GR_B2T9_mY* za-o`*nS4YE%fLi)8JBoH!B9lvGr~ za7ArBMDGHMj-KAUdD96@zczooj87fS%umAmm7AcsmI#}-Z%Lo`Nt7l3 ziShmW7nhcnaGIPP9Xl7>LK?n?)PaWq7yt%{vO`G9%^mXKN@)Ex@O_7v-EIFbaBNLV zhQJxIs$d9|S5`jIG+F!+)3elQO~ZP(`mL10!-}u|x#5wMBWC+Y$k0e(B0BP{_ZnT{ zHzryWxOF(q%Kk^xi2JRv-E;d%@0q~rz5)1atxcaBQpQABbq81bZO3mF>aS23@ngz) zc}alS4%ej5M`M3E-@ zqS>=$lNq!4?WWB2VeyU5Q$YM2d-N2Rt(%UuW<^HVHE>g2#IVW-aV`_l4tVwCI16M= zb1Y7)5CU|#>7ZG<S+59&SOEgm(^NB zoiR|)Qw!Gw=y&37jFQdNAk@5D72;A&Hb+K+opgfs7q<@-GeW{Kx+LwzCi=>SLWt>u z%|2obQKa6Tdf28Tt{zI#TTt5tJ}q#BSG>`+Y1KZ_Dmg)FujMO99h<_`bV6?3LSb_^n;qC#A=HLhnQgw6>Fr>KJ_EQM^ zOWVGbO_$5l;gnCyxoeYMWE4VT_G4gjOR%D zW+ETK##>wG`WB{x*(+gxdA$^a`fGL^Ol*7JNz5n>09v@2|-T*#fM z>b?iKRGJDZmRpCIDitctw|}+IFxYjva93U)FQ?88d3l(5L;JEr`O?6p?*h?k!+ zS1p-6HLcDcE?#vdp>|_6D$r>-`Q4YOr>*V!0Ng%}z?wNtzDO`_H1nG}q^OE}?y zdQnknRFe-NrZQNxtRtqk9XKrc#M6#@XGW-+h&t+_wRJEf@ZLwD6K(C|#nzw?*U0~S za#b?Fy6;!gd94#SI|mxe6-$h!}4As^=p{{ClVb?!KLnr^1IVMA-f-%jf2_yfeAlJP)hqyw*>m zp`&g-xEl&3$_GHwvmd<@BWvZ)QYsf3I#VNmzU!Ma;zARjp2Hoj4#e{VA;X!t**&mXjPe$5KwhvO+9dGc}cR$x)i6CQ^LA4thPE0=$3`%^5oAuZ);09 z+tOoL)!30PBkvKjj$KZ!=qPb^h4$0%v6}?6=MEZ)YOQf05r@=J^{U0*ef2iCFMlHOT;v8fYG+A25AV5)7uN*IujT4Z;3hI26~M zt~ow0X5RUdgr4`dq;#9s!$e}{bOvc-)FxlW>TPYL`>@R&M`)chWO1qf?MO9e-THL^ z=B%iB0eo<%B6va$A(e8-J%0rXgp8iUEI~Jz){uNI3ZsXWt+=1uML7x+!g#9bUz`Z3OU_T};>k-~9m5${B;a|gX8EsjFxR?`ilxhzRS>Y;?m=wmYMg^;J( z0VCfs$R$5nVgX225l_yw6h@odrgAS5+pBM~E%***hKzmd>8(+drfhecAV-^CiNes~ zZINO6rDbF}0J{8^%vU>^ju4B^Y@2|m&#d-&@|1EfcBNq?bm3{)g79t1{W<0jR|$yz zNPIJ6V_OthOU73LwjM#G`g-*ftr9^tq*;9t>!#Tu|bWyZg- z&=OEMbP2?7>Dofto z=l-A-(}%uq2f`2rH^jT!R^!?9wr+CI)nhuR8k87`ULrzT{0@Wv2ogZbQ%Vj3U#v=2EfOT>$3!jUiIhs0e+qkDY{vG=m z=GPhha(S{NstS6Uaf^FtM53!#8f2pQWwLPUZAUAo;Z2U^MugyvXM3^4{yVR;QPwaknz0Iv=)o)Ci+0 zJ~=KP?)VQ=Piqx)i9A3OS@1{?pZfF<4QWDimPUtYFPLB(6Teogh znboKjj9F~Xd_t34!N`x$3KPva<>igSmcPUcRBw>guhKz?XMJF9hVO&S{JM;AC(tTT%+4 zd?tbKfP+t!8i*9q%TKOB2u8IzkT-(HXtg%Mu5?dCJW+*Mde5-DkzZA(S_C2h=sC+U=6P{ zo4b1&lQ-QY_cmxl!^`k&>+G{#EY&Y{Vf| zI~4lf{5l01Q*!Z|XM1JS*{gyT@r;(B5k2$j;?_6%wBv8Zo05$avuSqJ_Oq$3 z0JM(mhCvkCX-#1iyOvo`I7@3@kJXAqO*oaTS2Q`p@w zzxz1-qrJ{U-juvUx|6fF&&%5bWw%6YiKr2uRl%xhJV>)X$G9BZ$InJ?%5_hU@Rt=u zLH62Z&JJnbd_P}k?Be)IY{2|bL>%dv6zn&wyI%%A0cc#uHH7Hez`KU}O+LfBKC@>Z zQ;TRCU&Y5$x*cvWPBZ!J4ePuRnWngaLr#7V)$`JM>(cSigF1uQ5!XPKd@L9 z8RFYC{|s%I#;v?TXFv7ssg#9e=#o+l<>r~pgP`#2ZxUC({N3H)`t}_34Vq^^3rdQS zyRG?<;eoQt-s0jLyAZi`Dn_ID0a`R}GEx?CqeD zgoI^AhQ#lr&|Gd~?)jGV`o91j&JFQ1CLtPrF!95@8KELqh2Umdh_2ZKU5MP8`csP) zHq*3?t5`?=jVbass+Rm|LE+4`w7guBR^E3Xc82KuvDCE)z?!MPEBx~-*}1SLb_dq1 zIsO{G*6#LwVF=BY0(*BpDdk~R+xV&DQI$yyxUg6d24{|)C(#U`Pt*OTv;C5Nur%_O z)L}*s33AWRAo=GM!*vLF>fQSP@(lAa3wzE?ocU86$Y#4!@(xDqddK`x3W?zRdF}83 z|Ja#4pTc<_vvP#~DEoDsvpXk2^KUEhGv_FrTlM^(Pruy8t|0NPBFPD~mQK|FEn03f z6eZ!h_Su0MIoXLkn@sud&6@#Zikx|6Y7JRT7p8hGp|AhzZuraEbQWHyin1gO`Z*ZT8qrNxz+eved;p^!C|m3lOUp&{e8d2 zncJ$y(8IANg$be05VQ5~kq{*Mw7YxsRr%3x7d~%1F{bSS7n&EW;6Db7sI6Lhr~Q)M zzgc5@yEy&Bo(IpUX2F2s*)M~Mynbi$iIv)kC$BECvRQV2A`T2!cA0B3aHkLyY*VVn zZ4=%9QxsEFou;9P=|^vKrHn;|ifjuz(zyAkf2Z045u@8qr|X^WkOP;(OaBH($?^@w z3uZnVpWZLo015!sY5OyN#suGMp>wy3P&=m1^D=z;+$c}Mx<)K}vGraz)W==s6(~o4 z56cd3@vD2dHkr3;H_oSKH+wQwk^ME4|HvS4dgHlre%D-zfNOKLI*xs}Zs|vC5X&Q0 zK8K4TO*PxCgrdhs#w+y<0Fu7Adi%=4YPdFfRp>m}#13B4EtnMx7`6&N2qM(1TObOI z_^pxJWoI2BY=w128@_&)fEqAF)q_amGH-`kOzK?RxjU7{Sg_kIw5bz{L|8JC#1qx< z=)Dw;N_C#S#tEFgt0|e&pPnK%13m|{)jso$KDj4L4c)gCU|*PoGKH`2d%6|u9IeQGq-54d!9hK+_ml-Jakfovp{p4WhMPP^6S(#+}%5;v@ecdo&wn;jZ*e( zx~{`T@LJSJ>65>o!otFep$~$S?gwoG1fQCS1|Cr>Pyq|pYdezcB3S=qG{P%=cRWHO z-C>j}qTP%f=m3}&e!KddIN^sK7Q$yvB^U!<_=FZ#HJqmSz9yPy#SIO!9;f>gO%L?+ zYyfrsa8SK#+04SmmZAXIf`{z~qInU+okx{Zi$rooUigE*J0kGNso!39wodCW`e1wE z0fYs7R0TVZ$R}E0Vg14hyY!d7V2r2Xckk7A(XwZUOvvLhvws&{Qo_)`$k+DDgBI%8 zVMaw_!{&;>CD3ia3dg$nDv&J5&o&Yw9CC4THfz-$vZ7>P_sKwmhAXQ= zbOXOe{;no+{Gdf8ovTy|rS~m1Q(iG~FchRAimPR=G#u#NU`^Ms`MVE1LVe&7xx;EX zl9O;pe+T@MHLo;$2Tc;Rz%72r?QmC&@V|dZ;eT9dh_j%KDuMccaI^uNrIxYrjMuk# zy+$2F!>?rBvbgBIk(@k|+ZYd(fm2G}{Oxh2S7eLXVH)RhBeY*U1!dY?L2>aou2;>! z*TnW_$BU@>`sq0dW~ok*t|@dOYqT7$u@+1&M2@FncI}VpMPog7zx>}F{HCikJZ15F z9*jsckSr)x8a{vzsOzgo{hIky{=M;db6O_eAN&8^#0=qrFSlkF>X6UU%dOEm-#bzDCP|)*(eyeu9m=v7$B*VkQ*K>al^`ehG zC8dnO@B)++cJtI%24n!GOHUL`kU(WtrvLW8m=Hq31E|*;B0sR5%UaAPWq|?s z{=G`Id0X&+Na~$5$3=gP066?YXYi?Sq3XjMkw>3tu-_;9bl^z?Dp zY9?aR#JyHkiNh8ZxOYe#EPr2C_dRJPD-;RUXnMxx9A z-E@L;EU}p+swnOb2TBwirQP4#(f*pQF8L8m@90qi-Dsk=X#R}^!uEuT_Z7wliVVud zlEgS|eIsSwP~q}IcX+A>y<;KKe+yP=MZ&m!FC?6TI`wqMj9*H8wztz($dK7{C3Xni zfI<7Cd_TUOkednAwgu@q3hq^2~j>EFe5}!9=(r#fYU5C z=$wtYE#t?@EAkw>nQ`PD_(P=br;0dumDJW64*hRx23+byGgv$yIL!Yv)vlwEU+MfI+yHpX1%b@=C{u)a!k=2j}y=$!B}hn zc*4KMV)?&yB3tIMv$RbrbGR@Erk^v&geh`5S7|q)(HBErv`I*9)0w|*FMsWRC-6-! zkfli-;Q8H>BBI9hEGhGQ+s1b>W2MvmBRsaJ?_MiyLmIz ztuNvF2(Oh=!9$NK7Mvg1KG|#<>}^k%Noi#X-Q0^y=va*pava~aWk}z@A}7nt6L+eeW6ASNpG(2DF4(9<*-UVu=uu+p zwUnqsTo!1&m>MgK?V?HwN*J*K(pa8JT!dS)efc zn_^e&=_~PC@ik%?Y?ByGM2)&TYuPf?p9yz&1o>e%9sosABv8lV=3PtvN~ceKCGe7Y3Q_chl`Tq*ykO?k50`Cd-B*~lQ5 z(9Z@zjUzI@NL1RuS_NjaX_}OKPWUP+s~C|r9^Fm{GCbVqN}O{UI2av6IgBAV95$GZ z;USr0d&9u+RRW8c9~{OrhNFPQmuR%^k@%U`d7P=D&g>>F=W(|g(nu+sFiJbk_+Rh* z?_xqfpqmwSEnM$8V^BD-(G&h%5L#1K-PwQgIbTVtZpNi14@pmg*~7Yby=JxF)Y;1+ zJRDUY7OOQw@?9Q94I5M2|Bdut4rA}5AGrtMpUEkKM_rWoz-`KMgxk2C?W(s`P2Pxs zv)#R2r69trlJL<1)E@~?Uo(t`0*rd>)n!313}b74nm_;VIm?~N85w`^8yoxnMZQH- zQBqcF>_4Hwqn?6Hd(e9Hz>w=m2tI?8HP^Fy4`qTwwzA@R$&ZI56BOEak4`Uq~jet{J6I zGs=q45DjUr9_;DpJ&5<%TN_@7O4Am!Nt1nqI65{y1-J1>g}?sI0im$+AsI<%%Hg5q z=H~WU-y}0Lli65b-y=HCdH5`V`Gkd~Rk=_lSe7?ZAIp?UmX z)n5><9Im?-U(%G?X@7&9?PgBAfA@})2MCuabW88kP4}icZ3u);ivFGQh>}LyvvC7* zWT#A?$xW5FOPM>bNQ1BMl|L#?Vn8dP)6eKgW84sAk$F4xOXb{oG zn!{(@&N87^Gg(oNFWg8IgEV{tEHtS zh4QMd(yr*gGae!TghvfWmkSC2jm$rPS2O41l9NBUh#G^c`&10w)T9PzkB^!lFk+sq zaxi+D6&PM|R~*H{cmHK>Vh2n6K#Twxuk~Zq!QWr=wg{=mq^XdjSjl10wdaRwJ{Sup zKTP;G;Xp4}zUMlrZZ48qWa_=6OpiSOcL2m97g9x?8ll64pyQe)peK(^VK(KlvWtp} z0@Y=W3D$p^93C}lyZhDUw+B!d-VBc5e;10>;89mo{e4hFa~EeJgLNLkHWNR>ao4m1 zSYUJG6LjBV+yFb+-_`#GGUCod(g*eVBR?cUWSQVO&pN10#fWKvwt>jkx&5l;=H=xb zyH`_l^s|8Zc)N`>74sbf)7*40Ra^J-&Xb#*XNzoBfVde98uFfq8WVY3Y_>$nT(}DW zw${kppI_6_H(&V-zT!|jg2s@ypgUD{I_H0Tp9Z>cf^L=RJ$kSECj2^w4Qi8#Nf0!{ zxUI@50f_Uk3xr0pe=^Tca<9bnX6H})8-=GZ1V>E8s!KgP>y9DMUn8XUg!Q3?)QEkX zhe_>&O2~GSm&SBHn04Pe9mzb~%Y+UfnNps=t!AOn8a?N|J5WMFL2(lD?uPF_kkW#M z;5K-=yPc}8|NN<+`4UqbjXs_&__H80-y=_*CQDh*pe0!&pO~1K{ozw+F+d3c$k{TG z0*(N#97u#wS%x<0#-mU70yVx1mL**;H zR%)My7~VN78A=(ptYTGST}pl^&>hY|%bT*VJ5yVZ&t1pOXUtH;)=_|z)4^%4=7SWB z{aoBy$JJlY<*oWxNV~9AzpK%V@8sk(vAqf^UO{xJO)`Gq#_p zak<~tp_I2FVmUHsT_IuHlSKcnJ#JN*UFK$R?t{SaJ8=xWofh8`KH};+UU~kxWtp^i z=Kdd`YXsMsDrF!Rgg_j%B*YmW6&SuwbAh+%-a31Ro9EV*cwL_5pUGXgxX#| zb3%+f9{xE!jXuX|E;(XGO1FDAaA&4K`zP5s?O%pG9?M^Yq3>lVI{#crlA!H^5#PO z=0Vf>DLKM~%1BM6$3g)+X`QieJuWUzXTs#UgO{(bZ^iu&uc5!J7LdXEmZN1669~~~ ziUVNtgWp1tm^di!^W%9o`|MD1~!APH)5=gw$bJ>etZllkxaUZv203eFq?xef#!p?^UvAC`EQgR(4vV zviD9l*<2!2W)zhbik@t;HyK4{Lbj4*?|Ji`S9<>M`~SYr+uIZF`?|03`dW*%3R-|S@w4?D z-S)zqu*Msft%%goZdY;nkzk* zQ+%MOshP%JX=H3{ybO){_uPVlf@gpB}^qr=tnUE^M_ll7)4nM##&Ma9iw}< zr{Xl^cCfEraa5@j=V)hdKv=cCx2!Qc?)5!#I>FHOW9)(NJPmY(^Z|U70-Xw_eOMEo z&CA$t_TqPjimVQ|pR&3%$=Tr8gVaET!YVzJVAJy*l1g#gyYEeCop!&*VBRJ9P&9)f*#Zk z%~RmXL}^D&Pfzzl@hjkSj~nU*>BrzCXR`b4o=FcBLIgN7U)&WC;8l+>0mu#Vq0BUi zF|Ulp7G@_u$c5aceQL|f%I3hFA{_~n<|0o$HzPmVN_=CH8@DSk@4G%8O6FNkN*|(Q zy(CaA;_HcYGX&Hiqlfx+t8uCO+*>bfQYw7Bh%q24e##dLED7ZP_D!J_EA+65UUW7R zU;v19XQ}*q6w-nIh)Helgo@_i`#XJCG0!EOjDLBK`+K%816T=MG9w<&+t;suY#w~2 z2;2Gs^Ds6c-SKO_C?x5%JaKz`Z)~d*ob+y)=KjG}oyo$yjc$qEZTH)^`>6ygf2E6# zLSGNsf-hX5Vm3oTbq3@!cMcZH#%n)~!toI>%bclxs~>M?93?nnkxDJ-bkviUz;N^! zb#9`FuEA~&Z}g?H>?*4EJ&X}%5U9kJHYAs!=H>kU=yZy%J6eikANzdgEik2cD6j{f zb$g>{Z6tP-f*x&$LG8iSMq&#C1%BFW?cB#>g%+)#v^7a-um!c*RU|Xf@iMkm{=nt7 zv$J!zt-J;d7~;mDYxi4HQqudLQcqet%mnQJPd+fgG7si@nx#C=;vgBO@amx!TNQ@Ly{vh-5q< zPr!48)xQuaF;?EGN!E%{k6niIU(tGY`Hl08O>Fyg5qOG7P;gOSv0m&e8<=QoWkB_lDhXwk%*NG6$GGI>nfjbN1A(Acy^9VR2 zCcp}G!2h?F#*vYp6#@lF>n_Dq$;a_NHn+C6j;$J|l0Sq-mg@dbiMongFg}`C&ANDK z^+%jW01G|+RvAQ^b#v|)!iv?P{Wy!6_;@;1#tjmtim1|_xsA{zvEW6-+lFqU&U*3vwS*)0; z#SU6T`vZFq+o)%gyy0>0UP+ViMc5;??z6qb7={b}zhS-k!0_Ov6YYF_e0SqwV^eA; zg2?2)%x!R~=FK7Qm19{cKJQi&>h`Cl(V(LkjMJtx_}!ns{Wg4RCdXl@dcxk;lKf(4 z7wA&@jDz(SOu`!C?Xhg))Niqr#1Gnw&uSpMeWiyxsfSV%s@SnqaH8M9UwcPYstnnS z52G%nbD1&6*l(qoD{3Q&qwY1$j?cM2I&`5qEGaHL|ckzEAkD{>c@fy%=U8 z0^pGBsd0F&Z3$wn`MsXi0XW6}qf&~n z;kJJp!|xD!V@a4dz!HTAf|Q!8%dH2SWp(E~-$yBd$Ld3$DH-N)ukJ8$$u<#CyU5qH z@qCjyxrY9V8rYa76h_q=u3uBh{LkT+jR))*;Pq9NzJD)C!3AS%f^#2&8|v3m8-{TY z-@${)FlYhvj2eMUN|pDM4sI~5o_fqTh93y~-bzZk3>{L+rPlR1S$bgdqNjQ++Woiu zle(Fg6PL%p#3oH-?$-*4-j}D1&rDAf2CCQzexPyFk506_%v z-GvIv#+fep!~OmygVW@M!LvUToyPV@J;(3m>LJCaT88R3V3JKdU>1@yX1?YbCC>kH zDIT(Sw6_-%{!`bxb}cA%-a--0zbRWKz;&p=1|z5R3xEqBkY*yr!m(JHE1iv8U0sth zu;`6^rc?*u@z6f%0*B#JJf*tv_jhi-EPjz6p_(!KE<116@|Okp-0SaE>3)nN+qiHGlv}Nh_e)kuh7S(Cb0=KKNlHxbzyyfRVOY0 z0$TDocvI}|hE!+gVRnA)S=NI)hdFx1$5>Tgpq1OC_Z?(;fS8=)uGR${-1C2{gV-3CPKL&2 zsRI_M8v&;U?!&j)UlnNW_amfT17oi3=lDXqqAW}F9l&L84Wnq?$sf>gOkS|1gR2xv zuhP)f)h)=d5EmCOB_BPF>3A;8HP%y#9W9n)Kk#x#+}}4X1NGsH__7m-3Au+Xz$Trc zSdg;Quc=2)f2wB> zGXvTNf2z0r8uv()hinx+g2#F}7@K6@#R@l;&ztL$VeA1_-fPxXcM`f}){qWzwY?r& zvELwnW%?@rSw>FId<(1sYPI3`goNnr^?+ZB9!ez;y0S=nbT~RZhIA~lc!gT2RkK{b z3-1>*krqg?tw8*_1VsAX_QnvhGICaTN({_Mc>)eiAMN&wCM}$nmq$ME--bK2_Dv|Iq}P)%@|8Ws*$l2F(iizkYy1NHhIw*|3&VK;CA*0?3C0(y z?T3oI7adI?vUUUiIL~t6<>y!3L@=eSN$a`r?Vg*Gk`nM>?5c}r4RI!*YsZBfTKqK> z6u2YGY3hEyyxYrKlD-}m{TlVoOp&T5fXX}l8?k}uLcOD4)7e>NydVS#01dY8XFA3& zY9TXXg!S|Yf|azO;^1UTPH&6{6$OtVq-eLJT8dG#KO=v*Q`++>^^b$L{rw;!rbkir zRR|fzYoTPo4&o~HxC{a5CIFr_ z{Qj>p`-LE9oMpi$qqiXqxTyeucgjPlT@@4a(b6?Uk&~TABLbDR_FtZ8$c|=_(n?59 zW=(|r>L)LVj)87EWyDt>oPuy#D5+>(3?q-27dTHX(s_?spp)V~6#8Jk%SMJnAAD6o z%BB+KBi+}821F>MZ zbGbdXUoOAty;BZa>c1hm8JV&DhZ5Kda2h_4wxv9Sn$;}7AMfCXwC4nsd|upFxu$q{=YIDh#5cQ386y<*9A~r6ySA-)&oG;qFvye!FWjR%F#a z5S2njLc-YN|E|1z`*nr`Yb3=T2Z#Ph56W2X$@=?vrw?`q>Kxrl0>^CuXh{JcyRPo4 zy86x@Pl90)78I0krz|SPa>GQk{N&CM{MzG!w7Kyfl?3_ zR{7b>mo9nveQ$|0A?N?(`Bl%R#$|tdC2rB04xHOAtTsI_^oI){OO8sAFTZhquRh2R zq@c$G?d6s05N-u?s{^n9d9-HAnHpnQw4hb61@Yej0o8<)IxV^Xm)F7+s z5P(fLp}CuUf`E~oMDD^=bNC?^I_$Lu+S=Nqu>LKC7$Q&<0c-6z&}nXJYkw7mlG#Bu z=qjdVXJ4@qW4b14-N7KNbQ5Mmt)Q2@2dXWySottZ_!UfGw(~mJnehbiG&vW@6cWho z>s-FK2!i8Yo+`9JTCY<^lremQhM=^xv@gt-3-}Gm$${N$?;DLbnVE8K5D+gh64T*b zJryVBG*(cRrQnCFP*h$3?XsJ-#3E?sk(KY9LKlghC`9SpzCovV+NG2%bN zl6B^O{CqUfL^J?ZgZJ?p!5hIz15_SQ(jR>g&{Dq1XZR3fJk36*UcyqJjkS{BM_;Qp zkWn|UC$B5t_IXzUEe>{$keV`vBWAtl<^+9>sf?+nHi*B>Df~Fk609IrGSYE!`Oc7h z(_F)xLNyzXkL;;u#`y>bHL0D~fPiOJJOwi9-b6>9{tr*8%7l(p*U{_t4HWt)4TK(M z(skBOnf&|H0DoD(4RzmF0gX#dYit9TH-S|T#3lH1Dh?sh&OU(wkrPPaX#l)9F=6^} zs(hFYAFa}-U!0s>2&q5G^|CWUmFxH19Egxc09JX>KF@}iPK5?6GfLio`KrJcdLI4x zPrK(wy{&|0r(-WJsEJXK+rn^D+#aN-2OW>D ztIO~wWn5`N&V~h&kkcC`SWbmtbbAl)-BTZ!xjyh{@+3oeS7Aw4^Xj;3UYTgZdgO0}FHYM#WESq&$G@ zPm*#o3>Px5uapPeC^<(t07kVM2yoStN^`B}XPEanV#>atM@@FzBNi$5}5)hyS zGtdY(Z=Nt*LQD+iz;epVgU>wG5{0lz=Mg%`aS&${z8nLf28VjD2N1V)3#abIAA^qe z_;-6voLigVi{9pzursp(ZxTf60Hf=(@BySe(?GFGODhQ4TMex+GL?pw_5r|O;RI8l zGb4#vdYtYRpD{zApi5wS+stgz2qR!n;cCTo1;iR3p86oBe;UaI%953pl}GfQ68#S7 zjv3z7kvtA)OBj(k0aQkipIYq=j-yPUW4XXUFsVhwa?{e&58u<%%IPm$U?Zr1*=-4?Az8BIL=n2W0ilM$s zkFS8Vx$G(7DzuT1lKR}|QBz)ITDm}_JjU^OY9gU(_}I1AFkcgD-b1qSpfCw*JkgNHx>xW%PKcOHSm#L%*qwEa=Rn~AGr(zj_wL<1TYFoZ zv#$fG)1|9dS%eqUK`Q7&m?8+Ez${{F@!hGCA4;*|f~aYu1?LBOXz+OUt+Sxgs-?!E*L>m-CB(3N*&Z5l-uAS0ir`-ZBR_)=v3!=s@T z)Ip!mgPu$tM3(cl(b3Umi9L79VaLu7mr)PImup+3jrYnx(~XkNLrsr`+lZWI;E0)q9g+B#Qm?32r#KF+h{g z*HTeZdQ@PS|FKV&75@stKfw04tbcW8p-)4;Mo%E&@OYq+NrQUPWr2kJZ?*n=pP>Tg zT0z-%I@K?hGw!4DoC)%r8j}~#eFm>y%UA_0-t4vf0bg1n;L7)mjyi1VLO*?=lt{>Y zAu`QEXi(*GrkDct!Tg*XwaQ8l#4I;w=XX$CMMC>@SXh3W_-?D6f> z@}BD_)nnc78y~Q<3p5tJxRR#*cE@@h584tubm#OfB@ihZ&5462sdDnayAwUtB(|DV zR8^;v+&UFNG8e-kF8+1;m9s{fP5rAo*J8OdIEYD2Qb1i@HN5#G1sNT*bdRgJl!UvL z5%?fG2@=}rwKX^d-ZLl9T?lcy#4Zhlb0{JgSbmIEH`;mj@L`LZK*I27y#ar`rqUlx zwRd}b_+FLRB(W&`=*09ss$dK@4J^{YEH?@Nfxkr zt4m3qwjrSvfvE~|mO=~#cLxM4t*p!%kRSp%z1Md>VLe>dZhomlcB>7Bu>%AWzV1wj zVA6B!^?Uhs2bBiHMgSlRC^UIF24%5Pikf~q*7K%U#dLDd2Cxg!2^c$Fm-qb^Dr4T4zO<|vO>T z+HpBgu39if5~^mnEc+&3pIKW3lvxc|r%T{C)hej<{X`RwOej{_Ed&ve4Ymg1YGR4l z{a&5p=l6q{<}k67py$m}i|=0PWcKm#M!VwGa-0cIh#iYbw^^ z1cb$m3$hEgzwHz(Y>w;u4tHBf)?_MKI=}Af5|u$@SRgtL9`|&2=iq7Hm{|k^gwDMU z0-dvjgfL)_CJb-E?Bcd3T-~$oFz=BtHr8;w6ym!G$<{zJ1`J0+dk6)yxFyPl+krCi z?kgyc#wi5vkGeD7o&2XX1xBFT@O5?=1`^D=agZjRA5MV4cLgevreKcSkoNYq=1O6} z*?clDX|ybSWst9Q#gor&c<#o4X0-9m{Puw})0b0IeQ!O*hPi+y9y)Te{YA?4BuN~Q zDuBcV!2Co2=)Hb=8@y!`NDL4f6l)|&PKuaWaXH0D zaX_GK5Y={{`xf(Og9Z*NGtN;L%B>UXiHpD`osglvcNq4I=>dQ3(O$h8GP?H z)ACVZDu^|Sif{O}*_D_tjn%x(&22_E8!hbz zMb4A*#K(`3Bd543*JXe8dS=vS&_o(tvt4pXU5yI^SCs~oa+tA>%7KA`ZV02Owd9Dg zK!Qb2x{9RtD)*=McD3XVB?x8s_{f00El~AQ`}Xaj&$e%FomF$sdMPqz3WScK+_JF? zhrL$>KaWCl#}`DGeF!PKC`RU~cD5F7&U*bo4&M#i6;3C5x)^urwW+t6-{01SFtF5N zI8?M#5>=ezr#|^oES9^$zVKCX8S^MPvO+ZmIhg&3<>YHp^Su|vS-AN{E8A@K1luXJpqZ%@>F%*(72bZA@OFcD=SA1t{` z4+q05elZaI@KluiRjRq@_xh+_`vTitC#P26Hz7Tv3)uS$P@RX4SKz3r3#P5Jv(#YE z{2P7*DB54%M8WQd@K>H;p}7iSaHv}l2QAf=PdiF=WkdE|>ajmoc+aZG=7=XQNa^gc z1=y#jUA`M_(LS)0o|jz1hE?$PmICfB7f>4ug&x{|iXkZqlgU>@U}tB)1pp*0+7e#@Yj<2Pl7;YoSJ>!! zKEp2d-R*2jNTs`k=eJTJy16i6H{KL|P0TQ%mU(GmI5hvdpY*g1840SC^RFZNJx;+;n%Xdn~sD zTE;aZkFVXx9sym9={Y5t( zwk;_Ws-2YMr(2XRTJkAy&g|4nvaa1gX@ zR3H3F>Kbwx(>tt1!I8ot<A;(5!TD@AH$t^ao@qQYC(K0T(DL*CN_3;Ag! z;xOV^^*OJ&R6D!IYJvef+@E7y*2!1#N<_mb`0omKqLR`xXpotFg?jlfC?FLKSrkHFu8H zYaSZ;VwiHk7A$ByO80{NvYkNTITCjEPS$5@Uo)>VUd&)6a_{bq8#lV~D5Ioq zt3Vt4bOUVo0Dow1O~bOGQ4vl?a9g@g4J}{WF}_uj)JU+?PR&N!qPQ}>Q848EtD6(G zcTlSWlBQJ}bTU|fd})5Z{!xfr^veOX6+mQ~_IK8v#Kkp17@Gfxm{iTjo$1)gDH_Hcl>&X) zg~kV>pp6M&7bTEm0Rj2$-d>TP1SA9s7hx130A!LoX{Sl|XvvGA@A^R2cXMR@6JP$m zX=SH)31EdTW2lB}G?iC+0W-AkUA>2b08&*ntKA2YCaNv=zB&AcEv$8DYSZuj?0b-7 zjhGe>1$<r}stvhZvTBw%5?xk|8=RZz= zdyo1mZBArLwqtfP8c2Cd*&v*!Il~F2EFiKREOlV+1ko+XxQj17v^B(!DsxM`{6-N3 zjljc$LKKLp!5^5LOW0}$86AWdpiaUCYLIuc8`sWOz+{l45EHtdEnBcBlZ8h0#h@N8 zaXI$Ajcz42;PT~9kKhRyE-VH>Uh8rXzDJ$WEpjBr&&T$l>1xmiMTT~YI$m@S1AY>!K9C9$ zg7*ONqQ}sPLrXOqTVe)6BOq{f#7Xp69MN+_JJ6{Dxd;Hrzlc>QrcFpVxolF24 z^dN7{p?D|{r@)A|**10mFDZi>uAz0F}W^A7jGio z0_QFepvmW@f6UCb?}K<5zg`i(-T5^UnjXpWVb-P${LO1MBqm>;JHPLDEYj$R(3%*r zP-X|Zkd+6JQtWT`>zK%jum-iDZjqLbE{|xr2x?oQZze4<^0#?u zssh=afQz)vR{&CgXy@v0;NDH%gPgYWqh3%oH|5#Q@VT@bu(%1@KAB6L zKY0@AvwA3D-NpdX*Vy78(IK2a5uO-4qB@I0P!YAF_kko*vwBqIHBW}I{)8t2$AV@$p2WZHv= zk~tmn>}E{Y!+%qmo0~gBkAf4`$5BxJ0TK{f~JlD_5U-!^o-gELzq#El#yWd zXShU^+Z&hhz=}XZ#=7=26v`|sQSbF{^qOyO-{U!F&2p#2RQsuK&wZRGGBg%OwKf10 z02Gabm1vWF=-vF2MEPBGH@L|I!+Z8@5%aD0=FN|hXMQ%_%G3ljWW6&J;9IGsjMBPD zf&yV!2TV0h6jh<2*{K-4*WywWkJCg1Wua-5y0JP8F1_RY-LKW}U_@D;1C~7f5iJ{S zDA{TPr+`do$RrWCN;C@xtN?_44{_^zwA)`-$KzPwLS{n%y4u^Npab&mAPI5n^bX}w z6bo?ES}g#d@I&O_+bR(l%IETkoTZ^k!b4uu_ssTjtNI6TQU>MgY4{1!S4cF8GB}nD zUn`#~6xzRd;|6s+zg`gRbvhtzf#^IPboa4!0P+}x4%a40JYkQdqK_h7XS)>H*^tL@ za%jTR!f12xpIb!;3cka!D7sqKU;F4(kbYWAk)90~pLjC73@)uxX6-6~x(fcj3Mgjo zxh8c1#h2eq)jOuUTnfLgfF^lbcDf7!9N=KD#PdTUY;8u}^E7KhQl5|;fx!Zf)gT-* zo|m013fb=$jR99)US8^L$5$&@EgfWHWQ6DWv*%5Xu$cbcJfFh&NxO%OesVo&VqRuk*9IY~&0FplG6s_SJPxkcI?J2HErIP|29OcHFsn~yP!a?+K|VRysz7~s81S$%o|*f|q=pk4H{ z${~K`De(9`(mBk{b`AMIB~fWo>v7Z`H1QF`IJYL)I-HN8|Kr}Otn7IE1dR#Ha1)T4 zCglMEhb9HTZGhTG8CA@|RQK?eGin4}CWZOQf*aap|31gMag86)1)&zznCzp6m&VT;rC%WU!1fOt!YiXMwm7QmKxfQN7_kDtj;~JN-p|(j{%t4QM9{Mx z@-|pA##2D+WE{FYczKCoc_^Ub5Eij$jgRO{Ko(L7w)?`XP3aRQ?j_&7{G~o6^7T0U z+B}do(vkKdm;F8#t(f_v*}R^C8C})G;|H4y@D85`qiGMTxlVJE&CCddXmy%&9&pIY zvcll#AjLFOGwLT@44>)zZkAFtAD0oBx^=h2Gr&{z%}Tnksh8tSXYzSK&X0Q#lAT;a zDmf5FvW94Wqspft7nSAS3?vqMcNugiZX6HD;ds-+xA!70iO9JIdK#Y35)wQCsce-9 zNJDt+uyJgsbkE@$f5S56h|j%d5fnXzr=lj$JRsNEd4X9(W#U0NeYo$6RU{3@`Fatl zL?`9y$Cb?Kqz4NN3oUa{D_h{pL&~Sdp+~bpPLI~=kE;ceFD)FJj!Y^pn?_kbyBt;h zK+i%>+qjXRzoU)ntt(sk5c|Q>N4c^0b`1r({Jj87j*{5~4wBFrBO<^4c{V}U@dvEe!5(prk$ z+tOJpIt~^4Ybj0V#~8a8R$^(>Pv{6#u%xo?k+w2LMOS+3TQbpEb*LqYlioBN2^k{f z4gJykoP+VDZ!6tP^B_yEO<4y#Rp>)ILggaSK|Ha|8SMs$?VQ!;t0_t?yy~5Ii$)Mb|-Ft95f1 z%a)vW#|5Ng(wtY5`qk5Rnsmxg!&8YOAP!MfvgtsiHaxGxsX-PunPmB_bx-!RUdVf) z7f8E5mF(tIQU=JB?!J^q4&3Gj@{vake~v2Oas9>lya5yMpH#SZmAa_}5yX4c%PNs1 zU(K359E_=Z8%LKuJf#z8E%Dy$8`XbP>n|<6`IMLeg4r50e7*z3CU)5711k$Ea8G{7 z|8SjntTMi}eb26fR7Y?JC%q9-(tGIG7Og!P8S+bbXnChV0Om_LkzR*V)~l zU9FES4!#ldt})@fD$CunS9w)VS5?g4l2_xBFoa9MQ`DzZuTPG(~6}J;iRWDzOZbI)BpD&n(nJ)bOTiOo~R1`C` z3hP@Ysx42*{Ug$7J%`LO_gfTA&f;Adxu@Fp(4nu<@>2VneaTW5)vtMdL1oQ)?D9L zsdst`-@k4Bp+B6ab1wBo^#E z97FO9XuBnNakARC!jS+LnVhQJ=XmfBdYR~MRN66*pll`Z zwl!TKFgq3{%u+>{LWyf8GExHU;4Ze`C366i5|eu;G?78twJ9Zf`TjMx<>@9=c(tNQYNzRw1YRDT)%C6d_w)^ zpo+y+gGZuRI3F5XbHzm z;LtUF;ZZ-9F9>$N;#ThlQt?4+IeEWet@^x=<<$X~ZH^_I0o&HNbAS7|%41D;>>i;j zVJ>#NblyK51jRNsHp*44#)DiY0_gz%0JB{GNH3gB7oM!-u06M>4%kVwGy~*NX}{W< z8dmUkpzqc)QsD+7VY1)kt1iK()6fj?yf}qeIYF%MG%l9~!pQ)aKwHeG;$Tt>`jIk? z_tgC?dIxxe?8KA&)m=abW+Z7QB4?7+4J@5&y_hqh(gGT zLc8G$vYfmtA}b@tr>!AB7Q6cCu2fqh`c^{4P>Om{tce)X?A1#uoH9^E@aK@WOhQbN z5Nsc*6r5azrSoSqtujS5pho5-<|23;;t6ex1YR4F&emor+xoejEt$X>2>2atu7p`0 zEy%R0Dru67oPk+AW$z@KLbgKI6Bha~qm(y$nJclR)K%eV4xEbSbS zU0fKgO#aqA5wsg06?hJwLkRPLn?y(;lzr);<^V#1pW0l#Wae_I6A94mWh&+Tp)kx@ne{XyCz@JULDM2-Z zajiDA?rZWdN&fO< z@Fob{t6HJ_C4A)s9wB;0gm7lUmff_+85!?L&^6kNXXNE|Ix=h0LLm;pEz=hP_4fiO zThNSthIZ9_iz&=0Q&v?K`LBy2ymr1RSjozY2l9?l3y~M(pe+6&T_rr`>C*=jpfxxH zneh|&w@Nsj85Gt5UFDHqqM!RVC&%6UYTggoNJT=O{Zl5P~sp zh0}ws`F&VZP?JUH(1on}_#i$|&jf=R1q=w926GO>A3uM>SQ7xh{arTHN-eZ|iRQ%( zrb2MBufUo^bcxCtIyo)97fghOiKfcH4&kC}5l#GzPAj;cd||pru0;PF=(Hq-g62#p z{128ax^yD~$&N!S3Ml0;44v%TFf!cJ-#^`V;yw0-);}Mh1dcYz0W;;Yzz6vpkhn4& zTLT+n8e$aw?!ie&z=3%fraDyCfo zTq3HRU!@5wj{mtD)%qdm3WApysin#62|*q_K<7w+%;b?SHW4)Nfdge$W~8i)4|1&F zrp(F|%c{yL35P=d*SbU34L^x54EU?4crj^?3uV`nqN2y4^v$p`0ss-<{7Ge^0wn($ z4|2wUGdHrrcnJT!7wCTxOdtm_KfcogB|01_GDem-^sxW?Z(%9$EvS??%nO5RE{s4X z2M_~@HCj&sP2ztpj8KXmz^2?>O)fi84fKMb&tDV65gIYedJ0;mpe_nfKbUq$32Lu6Q-2Qj z@9{FoNJvl&C=?#4VH_UtQ$tC7EtuXI-0h22_a<{1=5Nj-MVJ zE#c3n|JRW&;TB}SeQV2zcVuh-Je6gv+88y?LFeyNzETeTu`7oIy9n ziSo~#R|0>Bx?%9a_zibaYLOt|M6z599txa2>vQZPW8fhXhjlDvGX8|98rdp5UgUrF zPs>wsMgTwY^6@2pnw;{*MB!`;Vo2GO6!CZIe(a5P6G;(rT?{$ReKmyLLMq?VREy{I zwaBg1u@B*lfm2*lnJs%=^>-N`9!uxi-Wq6!{_)X7c}UIR->|#NxA@eLZ7z;VFJghY zf{@eU1`=ULkR_t548nppa7lS^+w1-cNojxpG{8hj0Xqb9D3fEba~r!ZOKNF1wr^K# zgoW4PmiI+pzd|@s1`A;c?%tQb(c^1jrbtQmU)1oNPOVDL{!Eso23v5O5Phwf#*E)%)iQVp7u8ZAoy6^}vt7X6^%0Spcu#TeQHeJdUC9jT;lrw6d*#qTiket6%kL zQ}QAK-|0LVLXYB(z$txsJKWmZYVkEk4+_K^Sn=>Z84l| zi!)}Jy0g51qjji1imH#l17IuP9%FmN^~-OLp;$10MgV4~2LJ?@+sLRv#d@*2RqQ@xTgZS8A^RTt_@%EFm#Y zHerRy2R@Tng>OVq5UxKwGh32w{E1z7#OD_0bdX)TF{=*)ZCP+9W< z@8f{7z?9>6G3Ch1(*wk&WPx>bw6ybyuiSnS7Nh~pxf`Tk|K84*FzKcow*~r6HKlnf zffbz}zx!Y`aJDUAR`7RxwmO>nX1EYvS#LChg|BP8Z?qnP!VF4KWvg@CS)B%aQD0sM zJTgU04*O;SPJJIHzyuoRLJe6r5S)odIQM9^Uw>EdgYZX>8h~><&I5SV7hxVM5Xs#I^TKxz>yYFA#S*MZufNl!J9VgR>3aTs?s2N{u}AoR ze)54LjG^9*8_O-+Y;I(`*5M+NHm8psn)1QSD%|Znb(yi_zwVwXjPz7H`o#~?bY7o* zCSWmd`0pmFQ_>HUl9C#)eLFur{1QD)+g(^@wp(`iww6zhB}_iYV@~LNjz^zR_Z*KH z@y5|vJq5{Ty6{@_yP=zAZx+vBQ%q@4i8-3TcNzLT=(kVCXU+aA9lWfI&+mJ*i&o=j z^#1!B%)Ghq)k-7mzv<#lHCx-a|GU-zGxX38xQ0~3Xp))o1PNSWeBYKXFc+h}H9n{+J$S0} zu%aJ3{L_17`!XgUubinqUY(Q?4lwsyIF#JUhq!(ZLyCE@j+|IeSW`N>{j`^2ar|&O zG7tAcK&U51(lYVGK`Y%R!X8{3A7LpN5{jO7`Xp+5X7Q+60=f~kS%&F5eWd!x1>csTFl`V z4fmh?U8@K4B$$LsuUdM4>_Pi(-PaBIpB=jg{!#tPVdMxU{dh&;=d!=6GCzQHLQNn= zVq-i85&cogzdVOeKI~JITWAC{<(u(b> z&>xZXu!h$qoalm<)TabLE(bP--gbS{IVX-*4l#}Di5zB1YVzDyzve-CFHBx&%*_iYmc z;_tz0a}}E}D|5M?amj9c5%QORl`}aqa(gM(bDdmp0y|w;vWgLQD}mCL7I@Kv|GWrO zbilmWqdi+od@+tbYT!#qy9&hIpE)|Y*pw_$FpS%c zXM{vtq(bQDx+OB-R2|+W3cT|7QWHk>-t6ran7kP_sGS|(QqJ34aBL%f@4Q02oB7YV z`q?{nWZe?S2mUVqA7m0uHMc9vu1!eU2m5CGkGHj-|8)#g=e)8n*ga7BM|li{`K)CF zZG>uXSJpHq_t&O24eIQT1=g;xAbEt5zC}}I`J;0!;_}uMmTEC^cLpe z=hRLioWu2U;`cFyZC8emyu}k8nV=q>+1fs$nS1oACJTFJf+1wbWlUD2V~CGdpqQRL zj^E;99-AC2V$zh{?FEfmH;Y84zoo9C{bPAqNLUTs_f$3yezqm~Qqdah%wnYT3gw8& z%JBI9(0@M44{yQ_qfI|Na(_jGYVJ`g?zR(sm%(0__xoAbQ6OYi(})Cw*2bUEF-dVQ zN!{y_IFXy3XHK={)O6(9<9_D+^Rgm0 z;!W_juYs2!nb5+hVBE1LD!&r%%q7(NSsdBlYbIUh>$7I5M9w|`+1|qJqG_uL#GfjCoq8?nm(BN z;QQ;=M=Sm$Um!bXaMC=H0W*yG;4|q}h~0baQusOQz^&-IdHJ$-o7dnKPOgc@zXGci zHJo)U^=9MuDRP5I2z!Hp|p}i%!iRUTMG|5U{sraW*K)^GD-uBULU9vh9BR4?};_79#QbM|@p4R@U) z3Hj@a_9LZX9}sM5?}1uDX=i!W<*jZZm(MXV!cQg}_1e6u4wJ62;Ro#*$s8igRE^C% z&a$kFg1b#je=Yj6EgV>Axtj~H4LnWPZ&xOVL=2qfG$f~DOq3<3#|xO_w%jN5C!4L9 zLmfe3{+O8SS7y{%x=!A~=ws^KR`=@%AD_YuhskQaPg$G*p< zw+vUn{Hhp#3x%8zy={I|TNo{z{kD&=PL|T0Fk2TTvUnK$OV4;}&!#*M7-p~hVF9=9 znBPXz-(Wy`5kCgsv?gwbNPADN>d@CIr&snF)|w?BOX-hSX|(fIN1ov*N`4{@8nPdL zW&6t$O{6mTKU>V6@WDt)ZP^GqGzB7mYUgrRfph(}d^jTyYVTO`CEJS@TrNv#ma;bJ zDSMbI`k!qS&^2T?u7*h(X6HY3k zXbzF`4#$~hxAHcBNa!}qw9}n+Rr=eURg+Sjnlq?BY`Oz0xGs> xJobcB(GXSr`AZ-gj|lx4{eOPJ=sIyog?Zd3z8{nQx)cLn>MGZj^At^k{trfQ&7J@N delta 71991 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 Af4@Q}kKfoZNR>F8FRUs_sb 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 diff --git a/Telegram/SourceFiles/audio.cpp b/Telegram/SourceFiles/audio.cpp index 3d9fda876..4b7b10bdc 100644 --- a/Telegram/SourceFiles/audio.cpp +++ b/Telegram/SourceFiles/audio.cpp @@ -2291,11 +2291,11 @@ public: trySet(_performer, dict, "artist"); trySet(_performer, dict, "performer"); trySet(_performer, dict, "album_artist"); - for (AVDictionaryEntry *tag = av_dict_get(dict, "", 0, AV_DICT_IGNORE_SUFFIX); tag; tag = av_dict_get(dict, "", tag, AV_DICT_IGNORE_SUFFIX)) { - const char *key = tag->key; - const char *value = tag->value; - QString tmp = QString::fromUtf8(value); - } + //for (AVDictionaryEntry *tag = av_dict_get(dict, "", 0, AV_DICT_IGNORE_SUFFIX); tag; tag = av_dict_get(dict, "", tag, AV_DICT_IGNORE_SUFFIX)) { + // const char *key = tag->key; + // const char *value = tag->value; + // QString tmp = QString::fromUtf8(value); + //} } int64 duration() { diff --git a/Telegram/SourceFiles/boxes/addcontactbox.cpp b/Telegram/SourceFiles/boxes/addcontactbox.cpp index efd85d96c..c467a6412 100644 --- a/Telegram/SourceFiles/boxes/addcontactbox.cpp +++ b/Telegram/SourceFiles/boxes/addcontactbox.cpp @@ -20,6 +20,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "application.h" #include "addcontactbox.h" +#include "contactsbox.h" #include "mainwidget.h" #include "window.h" @@ -31,6 +32,7 @@ AddContactBox::AddContactBox(QString fname, QString lname, QString phone) : _firstInput(this, st::inpAddContact, lang(lng_signup_firstname), fname), _lastInput(this, st::inpAddContact, lang(lng_signup_lastname), lname), _phoneInput(this, st::inpAddContact, lang(lng_contact_phone), phone.isEmpty() ? phone : App::formatPhone(phone)), + _invertOrder(langFirstNameGoesSecond()), _contactId(0), _addRequest(0) { if (!phone.isEmpty()) { @@ -48,12 +50,16 @@ AddContactBox::AddContactBox(PeerData *peer) : _firstInput(this, st::inpAddContact, lang(peer->isUser() ? lng_signup_firstname : lng_dlg_new_group_name), peer->isUser() ? peer->asUser()->firstName : peer->name), _lastInput(this, st::inpAddContact, lang(lng_signup_lastname), peer->isUser() ? peer->asUser()->lastName : QString()), _phoneInput(this, st::inpAddContact, lang(lng_contact_phone)), + _invertOrder((!peer || !peer->isChat()) && langFirstNameGoesSecond()), _contactId(0), _addRequest(0) { initBox(); } void AddContactBox::initBox() { + if (_invertOrder) { + setTabOrder(&_lastInput, &_firstInput); + } if (_peer) { if (_peer->isUser()) { _boxTitle = lang(_peer == App::self() ? lng_edit_self_title : lng_edit_contact_title); @@ -61,10 +67,6 @@ void AddContactBox::initBox() { } else if (_peer->isChat()) { _boxTitle = lang(lng_edit_group_title); setMaxHeight(st::boxTitleHeight + st::addContactPadding.top() + 1 * _firstInput.height() + st::addContactPadding.bottom() + _addButton.height()); - } else if (_peer->isChannel()) { - // CHANNELS_UX - _boxTitle = lang(lng_edit_channel_title); - setMaxHeight(st::boxTitleHeight + st::addContactPadding.top() + 1 * _firstInput.height() + st::addContactPadding.bottom() + _addButton.height()); } } else { bool readyToAdd = !_phoneInput.text().isEmpty() && (!_firstInput.text().isEmpty() || !_lastInput.text().isEmpty()); @@ -107,7 +109,7 @@ void AddContactBox::showAll() { void AddContactBox::showDone() { if ((_firstInput.text().isEmpty() && _lastInput.text().isEmpty()) || _phoneInput.isHidden() || !_phoneInput.isEnabled()) { - _firstInput.setFocus(); + (_invertOrder ? _lastInput : _firstInput).setFocus(); } else { _phoneInput.setFocus(); } @@ -180,9 +182,15 @@ void AddContactBox::paintEvent(QPaintEvent *e) { } void AddContactBox::resizeEvent(QResizeEvent *e) { - _firstInput.setGeometry(st::addContactPadding.left(), st::boxTitleHeight + st::addContactPadding.top(), width() - st::addContactPadding.left() - st::addContactPadding.right(), _firstInput.height()); - _lastInput.setGeometry(st::addContactPadding.left(), _firstInput.y() + _firstInput.height() + st::addContactDelta, _firstInput.width(), _firstInput.height()); - _phoneInput.setGeometry(st::addContactPadding.left(), _lastInput.y() + _lastInput.height() + st::addContactDelta, _lastInput.width(), _lastInput.height()); + if (_invertOrder) { + _lastInput.setGeometry(st::addContactPadding.left(), st::boxTitleHeight + st::addContactPadding.top(), width() - st::addContactPadding.left() - st::addContactPadding.right(), _lastInput.height()); + _firstInput.setGeometry(st::addContactPadding.left(), _lastInput.y() + _lastInput.height() + st::addContactDelta, _lastInput.width(), _lastInput.height()); + _phoneInput.setGeometry(st::addContactPadding.left(), _firstInput.y() + _firstInput.height() + st::addContactDelta, _lastInput.width(), _lastInput.height()); + } else { + _firstInput.setGeometry(st::addContactPadding.left(), st::boxTitleHeight + st::addContactPadding.top(), width() - st::addContactPadding.left() - st::addContactPadding.right(), _firstInput.height()); + _lastInput.setGeometry(st::addContactPadding.left(), _firstInput.y() + _firstInput.height() + st::addContactDelta, _firstInput.width(), _firstInput.height()); + _phoneInput.setGeometry(st::addContactPadding.left(), _lastInput.y() + _lastInput.height() + st::addContactDelta, _lastInput.width(), _lastInput.height()); + } _cancelButton.move(0, height() - _cancelButton.height()); _addButton.move(width() - _addButton.width(), height() - _addButton.height()); @@ -194,8 +202,13 @@ void AddContactBox::onSend() { QString firstName = _firstInput.text().trimmed(), lastName = _lastInput.text().trimmed(), phone = _phoneInput.text().trimmed(); if (firstName.isEmpty() && lastName.isEmpty()) { - _firstInput.setFocus(); - _firstInput.notaBene(); + if (_invertOrder) { + _lastInput.setFocus(); + _lastInput.notaBene(); + } else { + _firstInput.setFocus(); + _firstInput.notaBene(); + } return; } else if (!_peer && !App::isValidPhone(phone)) { _phoneInput.setFocus(); @@ -212,8 +225,6 @@ void AddContactBox::onSend() { } else if (_peer) { if (_peer->isChat()) { _addRequest = MTP::send(MTPmessages_EditChatTitle(_peer->asChat()->inputChat, MTP_string(firstName)), rpcDone(&AddContactBox::onSaveChatDone), rpcFail(&AddContactBox::onSaveFail)); - } else if (_peer->isChannel()) { - _addRequest = MTP::send(MTPchannels_EditTitle(_peer->asChannel()->inputChannel, MTP_string(firstName)), rpcDone(&AddContactBox::onSaveChatDone), rpcFail(&AddContactBox::onSaveFail)); } else { _contactId = MTP::nonce(); QVector v(1, MTP_inputPhoneContact(MTP_long(_contactId), MTP_string(_peer->asUser()->phone), MTP_string(firstName), MTP_string(lastName))); @@ -345,11 +356,14 @@ a_descriptionBg(st::newGroupName.bgColor->c, st::newGroupName.bgColor->c), a_descriptionBorder(st::newGroupName.borderColor->c, st::newGroupName.borderColor->c), a_description(animFunc(this, &EditChannelBox::descriptionAnimStep)), _description(this, st::newGroupDescription, lang(lng_create_group_description), _channel->about), +_publicLink(this, lang(channel->isPublic() ? lng_profile_edit_public_link : lng_profile_create_public_link)), _saveTitleRequestId(0), _saveDescriptionRequestId(0) { _boxTitle = lang(lng_edit_channel_title); _description.installEventFilter(this); + connect(App::main(), SIGNAL(peerNameChanged(PeerData*, const PeerData::Names&, const PeerData::NameFirstChars&)), this, SLOT(peerUpdated(PeerData*))); + setMouseTracking(true); _description.resize(width() - st::newGroupPadding.left() - st::newGroupPadding.right() - st::newGroupDescriptionPadding.left() - st::newGroupDescriptionPadding.right(), _title.height() - st::newGroupDescriptionPadding.top() - st::newGroupDescriptionPadding.bottom()); @@ -365,6 +379,8 @@ _saveTitleRequestId(0), _saveDescriptionRequestId(0) { connect(&_saveButton, SIGNAL(clicked()), this, SLOT(onSave())); connect(&_cancelButton, SIGNAL(clicked()), this, SLOT(onClose())); + connect(&_publicLink, SIGNAL(clicked()), this, SLOT(onPublicLink())); + prepare(); } @@ -373,6 +389,7 @@ void EditChannelBox::hideAll() { _description.hide(); _saveButton.hide(); _cancelButton.hide(); + _publicLink.hide(); } void EditChannelBox::showAll() { @@ -380,6 +397,7 @@ void EditChannelBox::showAll() { _description.show(); _saveButton.show(); _cancelButton.show(); + _publicLink.show(); } void EditChannelBox::showDone() { @@ -439,6 +457,12 @@ bool EditChannelBox::descriptionAnimStep(float64 ms) { return res; } +void EditChannelBox::peerUpdated(PeerData *peer) { + if (peer == _channel) { + _publicLink.setText(lang(_channel->isPublic() ? lng_profile_edit_public_link : lng_profile_create_public_link)); + } +} + void EditChannelBox::onDescriptionResized() { updateMaxHeight(); update(); @@ -449,8 +473,10 @@ QRect EditChannelBox::descriptionRect() const { } void EditChannelBox::updateMaxHeight() { - int32 h = st::boxTitleHeight + st::newGroupPadding.top() + _title.height() + st::newGroupPadding.bottom() + _saveButton.height(); + int32 h = st::boxTitleHeight + st::newGroupPadding.top() + _title.height(); h += st::newGroupDescriptionSkip + st::newGroupDescriptionPadding.top() + _description.height() + st::newGroupDescriptionPadding.bottom(); + h += st::newGroupPublicLinkSkip + _publicLink.height(); + h += st::newGroupPadding.bottom() + _saveButton.height(); setMaxHeight(h); } @@ -475,8 +501,9 @@ void EditChannelBox::resizeEvent(QResizeEvent *e) { _description.moveToLeft(st::newGroupPadding.left() + st::newGroupDescriptionPadding.left(), _title.y() + _title.height() + st::newGroupDescriptionSkip + st::newGroupDescriptionPadding.top(), width()); - int32 buttonTop = _description.y() + _description.height() + st::newGroupDescriptionPadding.bottom(); - buttonTop += st::newGroupPadding.bottom(); + _publicLink.moveToLeft(st::newGroupPadding.left(), _description.y() + _description.height() + st::newGroupDescriptionPadding.bottom() + st::newGroupPublicLinkSkip, width()); + + int32 buttonTop = _publicLink.y() + _publicLink.height() + st::newGroupPadding.bottom(); _cancelButton.move(0, buttonTop); _saveButton.move(width() - _saveButton.width(), buttonTop); } @@ -521,6 +548,10 @@ void EditChannelBox::onSave() { _saveTitleRequestId = MTP::send(MTPchannels_EditTitle(_channel->inputChannel, MTP_string(_sentTitle)), rpcDone(&EditChannelBox::onSaveTitleDone), rpcFail(&EditChannelBox::onSaveFail)); } +void EditChannelBox::onPublicLink() { + App::wnd()->replaceLayer(new SetupChannelBox(_channel, true)); +} + void EditChannelBox::saveDescription() { _saveDescriptionRequestId = MTP::send(MTPchannels_EditAbout(_channel->inputChannel, MTP_string(_sentDescription)), rpcDone(&EditChannelBox::onSaveDescriptionDone), rpcFail(&EditChannelBox::onSaveFail)); } diff --git a/Telegram/SourceFiles/boxes/addcontactbox.h b/Telegram/SourceFiles/boxes/addcontactbox.h index ad1cfb33a..b7c20ec58 100644 --- a/Telegram/SourceFiles/boxes/addcontactbox.h +++ b/Telegram/SourceFiles/boxes/addcontactbox.h @@ -64,6 +64,8 @@ private: FlatButton _addButton, _retryButton, _cancelButton; FlatInput _firstInput, _lastInput, _phoneInput; + bool _invertOrder; + uint64 _contactId; mtpRequestId _addRequest; @@ -95,8 +97,11 @@ public: public slots: + void peerUpdated(PeerData *peer); + void onSave(); void onDescriptionResized(); + void onPublicLink(); protected: @@ -127,6 +132,8 @@ private: Animation a_description; FlatTextarea _description; + LinkButton _publicLink; + mtpRequestId _saveTitleRequestId, _saveDescriptionRequestId; QString _sentTitle, _sentDescription; }; diff --git a/Telegram/SourceFiles/boxes/confirmbox.cpp b/Telegram/SourceFiles/boxes/confirmbox.cpp index 45e4cd28f..407b09929 100644 --- a/Telegram/SourceFiles/boxes/confirmbox.cpp +++ b/Telegram/SourceFiles/boxes/confirmbox.cpp @@ -22,6 +22,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "mainwidget.h" #include "window.h" +#include "application.h" + TextParseOptions _confirmBoxTextOptions = { TextParseLinks | TextParseMultiline | TextParseRichText, // flags 0, // maxw @@ -195,3 +197,97 @@ void ConfirmLinkBox::onOpenLink() { } App::wnd()->hideLayer(); } + +MaxInviteBox::MaxInviteBox(const QString &link) : +_close(this, lang(lng_close), st::btnInfoClose), +_text(st::boxFont, lng_participant_invite_sorry(lt_count, QString::number(cMaxGroupCount())), _confirmBoxTextOptions), +_link(link), _linkOver(false), +a_goodOpacity(0, 0), a_good(animFunc(this, &MaxInviteBox::goodAnimStep)) { + setMouseTracking(true); + + _textWidth = st::boxWidth + 10 - st::boxPadding.left() - st::boxPadding.right(); + _textHeight = qMin(_text.countHeight(_textWidth), 16 * st::boxFont->height); + setMaxHeight(st::boxPadding.top() + _textHeight + st::newGroupLinkPadding.top() + st::newGroupLink.height + st::newGroupLinkPadding.bottom() + _close.height()); + + connect(&_close, SIGNAL(clicked()), this, SLOT(onClose())); + + prepare(); +} + +void MaxInviteBox::mouseMoveEvent(QMouseEvent *e) { + updateSelected(e->globalPos()); +} + +void MaxInviteBox::mousePressEvent(QMouseEvent *e) { + mouseMoveEvent(e); + if (_linkOver) { + App::app()->clipboard()->setText(_link); + _goodTextLink = lang(lng_create_channel_link_copied); + a_goodOpacity = anim::fvalue(1, 0); + a_good.start(); + } +} + +void MaxInviteBox::leaveEvent(QEvent *e) { + updateSelected(QCursor::pos()); +} + +void MaxInviteBox::updateSelected(const QPoint &cursorGlobalPosition) { + QPoint p(mapFromGlobal(cursorGlobalPosition)); + + bool linkOver = _invitationLink.contains(p); + if (linkOver != _linkOver) { + _linkOver = linkOver; + update(); + setCursor(_linkOver ? style::cur_pointer : style::cur_default); + } +} + +bool MaxInviteBox::goodAnimStep(float64 ms) { + float dt = ms / st::newGroupLinkFadeDuration; + bool res = true; + if (dt >= 1) { + res = false; + a_goodOpacity.finish(); + } else { + a_goodOpacity.update(dt, anim::linear); + } + update(); + return res; +} + +void MaxInviteBox::hideAll() { + _close.hide(); +} + +void MaxInviteBox::showAll() { + _close.show(); +} + +void MaxInviteBox::paintEvent(QPaintEvent *e) { + Painter p(this); + if (paint(p)) return; + + // draw box title / text + p.setFont(st::boxFont->f); + p.setPen(st::black->p); + _text.drawElided(p, st::boxPadding.left(), st::boxPadding.top(), _textWidth, 16, (_text.maxWidth() < width()) ? style::al_center : style::al_left); + + QTextOption option(style::al_left); + option.setWrapMode(QTextOption::WrapAnywhere); + p.setFont(_linkOver ? st::newGroupLink.font->underline() : st::newGroupLink.font); + p.setPen(st::btnDefLink.color); + p.drawText(_invitationLink, _link, option); + if (!_goodTextLink.isEmpty() && a_goodOpacity.current() > 0) { + p.setOpacity(a_goodOpacity.current()); + p.setPen(st::setGoodColor->p); + p.setFont(st::setErrFont->f); + p.drawText(QRect(st::newGroupPadding.left(), st::boxPadding.top() + _textHeight + st::newGroupLinkTop + st::newGroupLinkFont->height - st::setErrFont->ascent, width() - st::newGroupPadding.left() - st::newGroupPadding.right(), st::setErrFont->height), _goodTextLink, style::al_top); + p.setOpacity(1); + } +} + +void MaxInviteBox::resizeEvent(QResizeEvent *e) { + _close.move(0, height() - _close.height()); + _invitationLink = QRect(st::newGroupPadding.left(), st::boxPadding.top() + _textHeight + st::newGroupLinkPadding.top() + (st::newGroupLink.height / 2) - st::newGroupLinkFont->height, width() - st::newGroupPadding.left() - st::newGroupPadding.right(), 2 * st::newGroupLinkFont->height); +} diff --git a/Telegram/SourceFiles/boxes/confirmbox.h b/Telegram/SourceFiles/boxes/confirmbox.h index 101e27d3c..c6f1e7b5e 100644 --- a/Telegram/SourceFiles/boxes/confirmbox.h +++ b/Telegram/SourceFiles/boxes/confirmbox.h @@ -19,7 +19,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "abstractbox.h" -class ConfirmBox : public AbstractBox, public RPCSender { +class ConfirmBox : public AbstractBox { Q_OBJECT public: @@ -84,3 +84,41 @@ private: QString _url; }; + +class MaxInviteBox : public AbstractBox { + Q_OBJECT + +public: + + MaxInviteBox(const QString &link); + void paintEvent(QPaintEvent *e); + void resizeEvent(QResizeEvent *e); + void mouseMoveEvent(QMouseEvent *e); + void mousePressEvent(QMouseEvent *e); + void leaveEvent(QEvent *e); + void updateLink(); + +protected: + + void hideAll(); + void showAll(); + +private: + + void updateSelected(const QPoint &cursorGlobalPosition); + bool goodAnimStep(float64 ms); + + BottomButton _close; + Text _text; + int32 _textWidth, _textHeight; + + QString _link; + QRect _invitationLink; + bool _linkOver; + + QPoint _lastMousePos; + + QString _goodTextLink; + anim::fvalue a_goodOpacity; + Animation a_good; +}; diff --git a/Telegram/SourceFiles/boxes/contactsbox.cpp b/Telegram/SourceFiles/boxes/contactsbox.cpp index 8ce6d1174..c62fe8371 100644 --- a/Telegram/SourceFiles/boxes/contactsbox.cpp +++ b/Telegram/SourceFiles/boxes/contactsbox.cpp @@ -30,7 +30,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "confirmbox.h" -ContactsInner::ContactsInner(CreatingGroupType creating) : _chat(0), _channel(0), _bot(0), _creating(creating), _addToChat(0), +ContactsInner::ContactsInner(CreatingGroupType creating) : +_chat(0), _channel(0), _channelFilter(MembersFilterRecent), _bot(0), _creating(creating), +_addToChat(0), _addAdmin(0), _addAdminRequestId(0), _addAdminBox(0), _contacts(&App::main()->contactsList()), _sel(0), _filteredSel(-1), @@ -42,7 +44,9 @@ _addContactLnk(this, lang(lng_add_contact_button)) { init(); } -ContactsInner::ContactsInner(ChannelData *channel) : _chat(0), _channel(channel), _bot(0), _creating(CreatingGroupChannel), _addToChat(0), +ContactsInner::ContactsInner(ChannelData *channel, MembersFilter channelFilter, const MembersAlreadyIn &already) : +_chat(0), _channel(channel), _channelFilter(channelFilter), _bot(0), _creating(CreatingGroupChannel), _already(already), +_addToChat(0), _addAdmin(0), _addAdminRequestId(0), _addAdminBox(0), _contacts(&App::main()->contactsList()), _sel(0), _filteredSel(-1), @@ -54,7 +58,9 @@ _addContactLnk(this, lang(lng_add_contact_button)) { init(); } -ContactsInner::ContactsInner(ChatData *chat) : _chat(chat), _channel(0), _bot(0), _creating(CreatingGroupNone), _addToChat(0), +ContactsInner::ContactsInner(ChatData *chat) : +_chat(chat), _channel(0), _channelFilter(MembersFilterRecent), _bot(0), _creating(CreatingGroupNone), +_addToChat(0), _addAdmin(0), _addAdminRequestId(0), _addAdminBox(0), _contacts(&App::main()->contactsList()), _sel(0), _filteredSel(-1), @@ -66,7 +72,9 @@ _addContactLnk(this, lang(lng_add_contact_button)) { init(); } -ContactsInner::ContactsInner(UserData *bot) : _chat(0), _channel(0), _bot(bot), _creating(CreatingGroupNone), _addToChat(0), +ContactsInner::ContactsInner(UserData *bot) : +_chat(0), _channel(0), _channelFilter(MembersFilterRecent), _bot(bot), _creating(CreatingGroupNone), +_addToChat(0), _addAdmin(0), _addAdminRequestId(0), _addAdminBox(0), _contacts(new DialogsIndexed(DialogsSortByAdd)), _sel(0), _filteredSel(-1), @@ -117,6 +125,36 @@ void ContactsInner::onAddBot() { App::main()->showPeerHistory(_addToChat->id, ShowAtUnreadMsgId); } +void ContactsInner::onAddAdmin() { + if (_addAdminRequestId) return; + _addAdminRequestId = MTP::send(MTPchannels_EditAdmin(_channel->inputChannel, _addAdmin->inputUser, MTP_channelRoleEditor()), rpcDone(&ContactsInner::addAdminDone), rpcFail(&ContactsInner::addAdminFail)); +} + +void ContactsInner::onNoAddAdminBox(QObject *obj) { + if (obj == _addAdminBox) { + _addAdminBox = 0; + } +} + +void ContactsInner::addAdminDone(const MTPBool &result, mtpRequestId req) { + if (req != _addAdminRequestId) return; + + _addAdminRequestId = 0; + if (_addAdminBox) _addAdminBox->onClose(); + emit adminAdded(); +} + +bool ContactsInner::addAdminFail(const RPCError &error, mtpRequestId req) { + if (mtpIsFlood(error)) return false; + + if (req != _addAdminRequestId) return true; + + _addAdminRequestId = 0; + if (_addAdminBox) _addAdminBox->onClose(); + emit adminAdded(); + return true; +} + void ContactsInner::peerUpdated(PeerData *peer) { if (_chat && (!peer || peer == _chat)) { if (_chat->isForbidden || _chat->haveLeft) { @@ -197,8 +235,10 @@ ContactsInner::ContactData *ContactsInner::contactData(DialogRow *row) { if (peer->isUser()) { if (_chat) { data->inchat = _chat->participants.contains(peer->asUser()); - } else if (_creating == CreatingGroupGroup || _channel) { + } else if (_creating == CreatingGroupGroup) { data->inchat = (peerToUser(peer->id) == MTP::authedId()); + } else if (_channel) { + data->inchat = (peerToUser(peer->id) == MTP::authedId()) || _already.contains(peer->asUser()); } else { data->inchat = false; } @@ -227,7 +267,7 @@ ContactsInner::ContactData *ContactsInner::contactData(DialogRow *row) { return data; } -void ContactsInner::paintDialog(QPainter &p, PeerData *peer, ContactData *data, bool sel) { +void ContactsInner::paintDialog(Painter &p, PeerData *peer, ContactData *data, bool sel) { int32 left = st::profileListPadding.width(); UserData *user = peer->asUser(); @@ -248,9 +288,18 @@ void ContactsInner::paintDialog(QPainter &p, PeerData *peer, ContactData *data, p.setPen(st::profileListNameColor->p); } int32 iconw = (_chat || _creating != CreatingGroupNone) ? st::profileCheckRect.pxWidth() : st::contactsImg.pxWidth(); - data->name.drawElided(p, left + st::profileListPhotoSize + st::participantDelta, st::profileListNameTop, width() - left - st::profileListPhotoSize - st::profileListPadding.width() - st::participantDelta - st::scrollDef.width - iconw); + int32 namew = width() - left - st::profileListPhotoSize - st::profileListPadding.width() - st::participantDelta - st::scrollDef.width - iconw; + if (peer->isChannel() && peer->asChannel()->isVerified()) { + namew -= st::verifiedCheck.pxWidth() + st::verifiedCheckPos.x(); + p.drawSprite(QPoint(left + st::profileListPhotoSize + st::participantDelta + qMin(data->name.maxWidth(), namew), st::profileListNameTop) + st::verifiedCheckPos, st::verifiedCheck); + } + data->name.drawElided(p, left + st::profileListPhotoSize + st::participantDelta, st::profileListNameTop, namew); - if (_chat || _creating !=CreatingGroupNone) { + if (_channel && _channelFilter == MembersFilterAdmins) { + if (sel) { + p.drawPixmap(QPoint(width() - st::contactsImg.pxWidth() - st::profileCheckDeltaX, st::profileListPadding.height() + (st::profileListPhotoSize - st::contactsImg.pxHeight()) / 2 - st::profileCheckDeltaY), App::sprite(), st::contactsImg); + } + } else if (_chat || _creating != CreatingGroupNone) { if (sel || data->check) { p.drawPixmap(QPoint(width() - st::profileCheckRect.pxWidth() - st::profileCheckDeltaX, st::profileListPadding.height() + (st::profileListPhotoSize - st::profileCheckRect.pxHeight()) / 2 - st::profileCheckDeltaY), App::sprite(), (data->check ? st::profileCheckActiveRect : st::profileCheckRect)); } @@ -287,7 +336,7 @@ void ContactsInner::paintDialog(QPainter &p, PeerData *peer, ContactData *data, void ContactsInner::paintEvent(QPaintEvent *e) { QRect r(e->rect()); - QPainter p(this); + Painter p(this); _time = unixtime(); p.fillRect(r, st::white->b); @@ -422,7 +471,8 @@ void ContactsInner::mousePressEvent(QMouseEvent *e) { } void ContactsInner::chooseParticipant() { - if (_chat || _creating != CreatingGroupNone) { + bool addingAdmin = (_channel && _channelFilter == MembersFilterAdmins); + if (!addingAdmin && (_chat || _creating != CreatingGroupNone)) { _time = unixtime(); int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2, from; if (_filter.isEmpty()) { @@ -481,7 +531,18 @@ void ContactsInner::chooseParticipant() { } } if (peer) { - if (bot() && peer->isChat()) { + if (addingAdmin) { + _addAdmin = peer->asUser(); + if (_addAdminRequestId) { + MTP::cancel(_addAdminRequestId); + _addAdminRequestId = 0; + } + if (_addAdminBox) _addAdminBox->deleteLater(); + _addAdminBox = new ConfirmBox(lng_channel_admin_sure(lt_user, _addAdmin->firstName)); + connect(_addAdminBox, SIGNAL(confirmed()), this, SLOT(onAddAdmin())); + connect(_addAdminBox, SIGNAL(destroyed(QObject*)), this, SLOT(onNoAddAdminBox(QObject*))); + App::wnd()->replaceLayer(_addAdminBox); + } else if (bot() && peer->isChat()) { _addToChat = peer->asChat(); ConfirmBox *box = new ConfirmBox(lng_bot_sure_invite(lt_group, peer->name)); connect(box, SIGNAL(confirmed()), this, SLOT(onAddBot())); @@ -519,7 +580,7 @@ int32 ContactsInner::selectedCount() const { if (_chat) { result += (_chat->count > 0) ? _chat->count : 1; } else if (_channel) { - result += (_channel->count > 0) ? _channel->count : 1; + result += _already.size(); } else if (_creating == CreatingGroupGroup) { result += 1; } @@ -785,6 +846,10 @@ ChannelData *ContactsInner::channel() const { return _channel; } +MembersFilter ContactsInner::channelFilter() const { + return _channelFilter; +} + UserData *ContactsInner::bot() const { return _bot; } @@ -1017,6 +1082,15 @@ _creationRequestId(0) { init(); } +ContactsBox::ContactsBox(ChannelData *channel, MembersFilter filter, const MembersAlreadyIn &already) : ItemListBox(st::boxNoTopScroll), _inner(channel, filter, already), +_addContact(this, lang(lng_add_contact_button), st::contactsAdd), +_filter(this, st::contactsFilter, lang(lng_participant_filter)), +_next(this, lang(lng_participant_invite), st::btnSelectDone), +_cancel(this, lang(filter == MembersFilterAdmins ? lng_contacts_done : lng_cancel), (filter == MembersFilterAdmins ? st::contactsClose : st::btnSelectCancel)), +_creationRequestId(0) { + init(); +} + ContactsBox::ContactsBox(ChatData *chat) : ItemListBox(st::boxNoTopScroll), _inner(chat), _addContact(this, lang(lng_add_contact_button), st::contactsAdd), _filter(this, st::contactsFilter, lang(lng_participant_filter)), @@ -1060,6 +1134,7 @@ void ContactsBox::init() { connect(&_inner, SIGNAL(mustScrollTo(int, int)), &_scroll, SLOT(scrollToY(int, int))); connect(&_inner, SIGNAL(selectAllQuery()), &_filter, SLOT(selectAll())); connect(&_inner, SIGNAL(searchByUsername()), this, SLOT(onNeedSearchByUsername())); + connect(&_inner, SIGNAL(adminAdded()), this, SIGNAL(adminAdded())); _searchTimer.setSingleShot(true); connect(&_searchTimer, SIGNAL(timeout()), this, SLOT(onSearchByUsername())); @@ -1146,7 +1221,10 @@ void ContactsBox::hideAll() { void ContactsBox::showAll() { ItemListBox::showAll(); _filter.show(); - if (_inner.chat()) { + if (_inner.channel() && _inner.channelFilter() == MembersFilterAdmins) { + _next.hide(); + _addContact.hide(); + } else if (_inner.chat()) { _next.show(); _addContact.hide(); } else if (_inner.creating() != CreatingGroupNone) { @@ -1195,15 +1273,18 @@ void ContactsBox::paintEvent(QPaintEvent *e) { Painter p(this); if (paint(p)) return; + bool addingAdmin = _inner.channel() && _inner.channelFilter() == MembersFilterAdmins; if (_inner.chat() || _inner.creating() != CreatingGroupNone) { - QString title(lang(lng_profile_add_participant)); + QString title(lang(addingAdmin ? lng_channel_add_admin : lng_profile_add_participant)); paintTitle(p, title, true); - p.setPen(st::newGroupLimitFg); - p.drawTextLeft(st::boxTitlePos.x() + st::boxTitleFont->m.width(title) + st::addContactDelta, st::boxTitlePos.y(), width(), QString("%1 / %2").arg(_inner.selectedCount()).arg(cMaxGroupCount())); + if (!addingAdmin) { + p.setPen(st::newGroupLimitFg); + p.drawTextLeft(st::boxTitlePos.x() + st::boxTitleFont->m.width(title) + st::addContactDelta, st::boxTitlePos.y(), width(), QString("%1 / %2").arg(_inner.selectedCount()).arg(cMaxGroupCount())); - // paint button sep - p.fillRect(st::btnSelectCancel.width, size().height() - st::btnSelectCancel.height, st::lineWidth, st::btnSelectCancel.height, st::btnSelectSep->b); + // paint button sep + p.fillRect(st::btnSelectCancel.width, size().height() - st::btnSelectCancel.height, st::lineWidth, st::btnSelectCancel.height, st::btnSelectSep->b); + } } else if (_inner.bot()) { paintTitle(p, lang(lng_bot_choose_group), true); } else { @@ -1221,7 +1302,7 @@ void ContactsBox::resizeEvent(QResizeEvent *e) { } void ContactsBox::closePressed() { - if (_inner.channel()) { + if (_inner.channel() && !_inner.hasAlreadyMembersInChannel()) { App::main()->showPeerHistory(_inner.channel()->id, ShowAtTheEndMsgId); } } @@ -1335,11 +1416,551 @@ bool ContactsBox::creationFail(const RPCError &error) { return false; } +MembersInner::MembersInner(ChannelData *channel, MembersFilter filter) : _channel(channel), _filter(filter), +_time(0), +_kickText(lang(lng_profile_kick)), +_kickWidth(st::normalFont->m.width(_kickText)), +_sel(-1), +_kickSel(-1), +_kickDown(-1), +_mouseSel(false), +_kickConfirm(0), +_kickRequestId(0), +_kickBox(0), +_loading(true), +_loadingRequestId(0) { + connect(App::main(), SIGNAL(peerNameChanged(PeerData*,const PeerData::Names&,const PeerData::NameFirstChars&)), this, SLOT(onPeerNameChanged(PeerData*,const PeerData::Names&,const PeerData::NameFirstChars&))); + connect(App::main(), SIGNAL(peerPhotoChanged(PeerData*)), this, SLOT(peerUpdated(PeerData*))); + + refresh(); + + load(); +} + +void MembersInner::load() { + if (!_loadingRequestId) { + _loadingRequestId = MTP::send(MTPchannels_GetParticipants(_channel->inputChannel, (_filter == MembersFilterRecent) ? MTP_channelParticipantsRecent() : MTP_channelParticipantsAdmins(), MTP_int(0), MTP_int(cMaxGroupCount())), rpcDone(&MembersInner::membersReceived), rpcFail(&MembersInner::membersFailed)); + } +} + +void MembersInner::paintEvent(QPaintEvent *e) { + QRect r(e->rect()); + Painter p(this); + + _time = unixtime(); + p.fillRect(r, st::white->b); + + int32 yFrom = r.top(), yTo = r.bottom(); + int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2; + + p.translate(0, st::membersPadding.top()); + if (_rows.isEmpty()) { + p.setFont(st::noContactsFont->f); + p.setPen(st::noContactsColor->p); + p.drawText(QRect(0, 0, width(), st::noContactsHeight), lang(lng_contacts_loading), style::al_center); + } else { + int32 from = (yFrom >= 0) ? (yFrom / rh) : 0; + if (from < _rows.size()) { + int32 to = (yTo / rh) + 1; + if (to > _rows.size()) to = _rows.size(); + + p.translate(0, from * rh); + for (; from < to; ++from) { + bool sel = (from == _sel); + bool kickSel = (from == _kickSel && (_kickDown < 0 || from == _kickDown)); + bool kickDown = kickSel && (from == _kickDown); + paintDialog(p, _rows[from], data(from), sel, kickSel, kickDown); + p.translate(0, rh); + } + } + } +} + +void MembersInner::enterEvent(QEvent *e) { + setMouseTracking(true); +} + +void MembersInner::leaveEvent(QEvent *e) { + setMouseTracking(false); + if (_sel >= 0) { + _sel = -1; + parentWidget()->update(); + } +} + +void MembersInner::mouseMoveEvent(QMouseEvent *e) { + _mouseSel = true; + _lastMousePos = e->globalPos(); + updateSel(); +} + +void MembersInner::mousePressEvent(QMouseEvent *e) { + _mouseSel = true; + _lastMousePos = e->globalPos(); + updateSel(); + if (e->button() == Qt::LeftButton && _kickSel < 0) { + chooseParticipant(); + } + _kickDown = _kickSel; + update(); +} + +void MembersInner::mouseReleaseEvent(QMouseEvent *e) { + _mouseSel = true; + _lastMousePos = e->globalPos(); + updateSel(); + if (_kickDown >= 0 && _kickDown == _kickSel && !_kickRequestId) { + _kickConfirm = _rows.at(_kickSel); + if (_kickBox) _kickBox->deleteLater(); + _kickBox = new ConfirmBox((_filter == MembersFilterRecent ? lng_profile_sure_kick_channel : lng_profile_sure_kick_admin)(lt_user, _kickConfirm->firstName)); + connect(_kickBox, SIGNAL(confirmed()), this, SLOT(onKickConfirm())); + connect(_kickBox, SIGNAL(destroyed(QObject*)), this, SLOT(onKickBoxDestroyed(QObject*))); + App::wnd()->replaceLayer(_kickBox); + } + _kickDown = -1; +} + +void MembersInner::onKickBoxDestroyed(QObject *obj) { + if (_kickBox == obj) { + _kickBox = 0; + } +} + +void MembersInner::onKickConfirm() { + if (_filter == MembersFilterRecent) { + _kickRequestId = MTP::send(MTPchannels_KickFromChannel(_channel->inputChannel, _kickConfirm->inputUser, MTP_bool(true)), rpcDone(&MembersInner::kickDone), rpcFail(&MembersInner::kickFail)); + } else { + _kickRequestId = MTP::send(MTPchannels_EditAdmin(_channel->inputChannel, _kickConfirm->inputUser, MTP_channelRoleEmpty()), rpcDone(&MembersInner::kickAdminDone), rpcFail(&MembersInner::kickFail)); + } +} + +void MembersInner::paintDialog(Painter &p, PeerData *peer, MemberData *data, bool sel, bool kickSel, bool kickDown) { + int32 left = st::profileListPadding.width(); + + UserData *user = peer->asUser(); + if (sel) { + p.fillRect(0, 0, width(), 2 * st::profileListPadding.height() + st::profileListPhotoSize, st::profileHoverBG->b); + } + + p.drawPixmap(left, st::profileListPadding.height(), peer->photo->pix(st::profileListPhotoSize)); + + p.setPen(st::profileListNameColor->p); + + data->name.drawElided(p, left + st::profileListPhotoSize + st::participantDelta, st::profileListNameTop, width() - left - st::profileListPhotoSize - st::profileListPadding.width() - st::participantDelta - st::scrollDef.width - (data->canKick ? _kickWidth : 0)); + + if (data->canKick) { + p.setFont((kickSel ? st::linkOverFont : st::linkFont)->f); + if (kickDown) { + p.setPen(st::btnDefLink.downColor->p); + } else { + p.setPen(st::btnDefLink.color->p); + } + p.drawText(width() - _kickWidth - st::profileCheckDeltaX, st::profileListPadding.height() + (st::profileListPhotoSize - st::normalFont->height) / 2 + st::normalFont->ascent, _kickText); + } + + p.setFont(st::normalFont); + p.setPen(st::profileOfflineColor->p); + p.drawText(left + st::profileListPhotoSize + st::profileListPadding.width(), st::profileListPadding.height() + st::profileListPhotoSize - st::profileListStatusBottom, data->online); +} + +void MembersInner::selectSkip(int32 dir) { + _time = unixtime(); + _mouseSel = false; + int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2, origDir = dir; + + int cur = (_sel >= 0) ? _sel : -1; + cur += dir; + if (cur <= 0) { + _sel = _rows.isEmpty() ? -1 : 0; + } else if (cur >= _rows.size()) { + _sel = -1; + } else { + _sel = cur; + } + if (dir > 0) { + if (_sel < 0 || _sel >= _rows.size()) { + _sel = -1; + } + } else { + if (!_rows.isEmpty()) { + if (_sel < 0) _sel = _rows.size() - 1; + } + } + if (_sel >= 0) { + emit mustScrollTo(_sel * rh, (_sel + 1) * rh); + } + + parentWidget()->update(); +} + +void MembersInner::selectSkipPage(int32 h, int32 dir) { + int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2; + int32 points = h / rh; + if (!points) return; + selectSkip(points * dir); +} + +void MembersInner::loadProfilePhotos(int32 yFrom) { + int32 yTo = yFrom + (parentWidget() ? parentWidget()->height() : App::wnd()->height()) * 5; + MTP::clearLoaderPriorities(); + + if (yTo < 0) return; + if (yFrom < 0) yFrom = 0; + + int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2; + if (!_rows.isEmpty()) { + int32 from = yFrom / rh; + if (from < 0) from = 0; + if (from < _rows.size()) { + int32 to = (yTo / rh) + 1; + if (to > _rows.size()) to = _rows.size(); + + for (; from < to; ++from) { + _rows[from]->photo->load(); + } + } + } +} + +void MembersInner::chooseParticipant() { + int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2, from; + if (_sel < 0 || _sel >= _rows.size()) return; + if (PeerData *peer = _rows[_sel]) { + App::wnd()->hideLayer(); + App::main()->showPeerProfile(peer, ShowAtUnreadMsgId); + } +} + +void MembersInner::refresh() { + int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2; + if (_rows.isEmpty()) { + resize(width(), st::membersPadding.top() + st::noContactsHeight + st::membersPadding.bottom()); + } else { + resize(width(), st::membersPadding.top() + _rows.size() * rh + st::membersPadding.bottom()); + } + update(); +} + +ChannelData *MembersInner::channel() const { + return _channel; +} + +MembersFilter MembersInner::filter() const { + return _filter; +} + +QMap MembersInner::already() const { + MembersAlreadyIn result; + for (int32 i = 0, l = _rows.size(); i < l; ++i) { + if (_rows.at(i)->isUser()) { + result.insert(_rows.at(i)->asUser(), true); + } + } + return result; +} + +void MembersInner::clearSel() { + _sel = _kickSel = _kickDown = -1; + _lastMousePos = QCursor::pos(); + updateSel(); +} + +MembersInner::MemberData *MembersInner::data(int32 index) { + if (MemberData *result = _datas.at(index)) { + return result; + } + MemberData *result = _datas[index] = new MemberData(); + result->name.setText(st::profileListNameFont, _rows[index]->name, _textNameOptions); + result->online = lng_mediaview_date_time(lt_date, _dates[index].date().toString(qsl("dd.MM.yy")), lt_time, _dates[index].time().toString(cTimeFormat())); + if (_filter == MembersFilterRecent) { + result->canKick = (_channel->amCreator() || _channel->amEditor() || _channel->amModerator()) ? (_roles[index] == MemberRoleNone) : false; + } else if (_filter == MembersFilterAdmins) { + result->canKick = _channel->amCreator() ? (_roles[index] == MemberRoleEditor || _roles[index] == MemberRoleModerator) : false; + } else { + result->canKick = false; + } + return result; +} + +void MembersInner::clear() { + for (int32 i = 0, l = _datas.size(); i < l; ++i) { + delete _datas.at(i); + } + _datas.clear(); + _rows.clear(); + _dates.clear(); + _roles.clear(); + if (_kickBox) _kickBox->deleteLater(); + clearSel(); +} + +MembersInner::~MembersInner() { + clear(); +} + +void MembersInner::updateSel() { + QPoint p(mapFromGlobal(_lastMousePos)); + p.setY(p.y() - st::membersPadding.top()); + bool in = parentWidget()->rect().contains(parentWidget()->mapFromGlobal(_lastMousePos)); + int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2; + int32 newSel = (in && p.y() >= 0 && p.y() < _rows.size() * rh) ? (p.y() / rh) : -1; + int32 newKickSel = newSel; + if (newSel >= 0 && (!data(newSel)->canKick || !QRect(width() - _kickWidth - st::profileCheckDeltaX, newSel * rh + st::profileListPadding.height() + (st::profileListPhotoSize - st::normalFont->height) / 2, _kickWidth, st::normalFont->height).contains(p))) { + newKickSel = -1; + } + if (newSel != _sel || newKickSel != _kickSel) { + _sel = newSel; + _kickSel = newKickSel; + parentWidget()->update(); + setCursor(_kickSel >= 0 ? style::cur_pointer : style::cur_default); + } +} + +void MembersInner::peerUpdated(PeerData *peer) { + parentWidget()->update(); +} + +void MembersInner::onPeerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars) { + for (int32 i = 0, l = _rows.size(); i < l; ++i) { + if (_rows.at(i) == peer) { + if (_datas.at(i)) { + _datas.at(i)->name.setText(st::profileListNameFont, peer->name, _textNameOptions); + parentWidget()->update(); + } else { + break; + } + } + } +} + +void MembersInner::membersReceived(const MTPchannels_ChannelParticipants &result, mtpRequestId req) { + clear(); + _loadingRequestId = 0; + + if (result.type() == mtpc_channels_channelParticipants) { + const MTPDchannels_channelParticipants &d(result.c_channels_channelParticipants()); + const QVector &v(d.vparticipants.c_vector().v); + _rows.reserve(v.size()); + _datas.reserve(v.size()); + _dates.reserve(v.size()); + _roles.reserve(v.size()); + if (_filter == MembersFilterRecent && _channel->count != d.vcount.v) { + _channel->count = d.vcount.v; + if (App::main()) emit App::main()->peerUpdated(_channel); + } else if (_filter == MembersFilterAdmins && _channel->adminsCount != d.vcount.v) { + _channel->adminsCount = d.vcount.v; + if (App::main()) emit App::main()->peerUpdated(_channel); + } + App::feedUsers(d.vusers); + for (QVector::const_iterator i = v.cbegin(), e = v.cend(); i != e; ++i) { + int32 userId = 0, addedTime = 0; + MemberRole role = MemberRoleNone; + switch (i->type()) { + case mtpc_channelParticipant: + userId = i->c_channelParticipant().vuser_id.v; + addedTime = i->c_channelParticipant().vdate.v; + break; + case mtpc_channelParticipantSelf: + role = MemberRoleSelf; + userId = i->c_channelParticipantSelf().vuser_id.v; + addedTime = i->c_channelParticipantSelf().vdate.v; + break; + case mtpc_channelParticipantModerator: + role = MemberRoleModerator; + userId = i->c_channelParticipantModerator().vuser_id.v; + addedTime = i->c_channelParticipantModerator().vdate.v; + break; + case mtpc_channelParticipantEditor: + role = MemberRoleEditor; + userId = i->c_channelParticipantEditor().vuser_id.v; + addedTime = i->c_channelParticipantEditor().vdate.v; + break; + case mtpc_channelParticipantKicked: + userId = i->c_channelParticipantKicked().vuser_id.v; + addedTime = i->c_channelParticipantKicked().vdate.v; + role = MemberRoleKicked; + break; + case mtpc_channelParticipantCreator: + userId = i->c_channelParticipantCreator().vuser_id.v; + addedTime = _channel->date; + role = MemberRoleCreator; + break; + } + if (UserData *user = App::userLoaded(userId)) { + _rows.push_back(user); + _dates.push_back(date(addedTime)); + _roles.push_back(role); + _datas.push_back(0); + } + } + } + if (_rows.isEmpty()) { + _rows.push_back(App::self()); + _dates.push_back(date(MTP_int(_channel->date))); + _roles.push_back(MemberRoleSelf); + _datas.push_back(0); + } + + clearSel(); + _loading = false; + refresh(); + + emit loaded(); +} + +bool MembersInner::membersFailed(const RPCError &error, mtpRequestId req) { + if (mtpIsFlood(error)) return false; + App::wnd()->hideLayer(); + return true; +} + +void MembersInner::kickDone(const MTPUpdates &result, mtpRequestId req) { + App::main()->sentUpdatesReceived(result); + + if (_kickRequestId != req) return; + removeKicked(); + if (_kickBox) _kickBox->onClose(); +} + +void MembersInner::kickAdminDone(const MTPBool &result, mtpRequestId req) { + if (_kickRequestId != req) return; + removeKicked(); + if (_kickBox) _kickBox->onClose(); +} + +bool MembersInner::kickFail(const RPCError &error, mtpRequestId req) { + if (mtpIsFlood(error)) return false; + + if (_kickBox) _kickBox->onClose(); + load(); + return true; +} + +void MembersInner::removeKicked() { + _kickRequestId = 0; + int32 index = _rows.indexOf(_kickConfirm); + if (index >= 0) { + _rows.removeAt(index); + delete _datas.at(index); + _datas.removeAt(index); + _dates.removeAt(index); + _roles.removeAt(index); + clearSel(); + if (_filter == MembersFilterRecent && _channel->count > 1) { + --_channel->count; + if (App::main()) emit App::main()->peerUpdated(_channel); + } else if (_filter == MembersFilterAdmins && _channel->adminsCount > 1) { + --_channel->adminsCount; + if (App::main()) emit App::main()->peerUpdated(_channel); + } + } + _kickConfirm = 0; +} + +MembersBox::MembersBox(ChannelData *channel, MembersFilter filter) : ItemListBox(st::boxScroll), _inner(channel, filter), +_add(this, lang(filter == MembersFilterRecent ? lng_participant_invite : lng_channel_add_admins), st::contactsAdd), +_done(this, lang(lng_contacts_done), st::contactsClose), +_addBox(0) { + ItemListBox::init(&_inner, _done.height()); + + connect(&_add, SIGNAL(clicked()), this, SLOT(onAdd())); + + connect(&_done, SIGNAL(clicked()), this, SLOT(onClose())); + connect(&_scroll, SIGNAL(scrolled()), &_inner, SLOT(updateSel())); + connect(&_scroll, SIGNAL(scrolled()), this, SLOT(onScroll())); + connect(&_inner, SIGNAL(mustScrollTo(int, int)), &_scroll, SLOT(scrollToY(int, int))); + connect(&_inner, SIGNAL(loaded()), this, SLOT(onLoaded())); + + prepare(); +} + +void MembersBox::keyPressEvent(QKeyEvent *e) { + if (e->key() == Qt::Key_Down) { + _inner.selectSkip(1); + } else if (e->key() == Qt::Key_Up) { + _inner.selectSkip(-1); + } else if (e->key() == Qt::Key_PageDown) { + _inner.selectSkipPage(_scroll.height(), 1); + } else if (e->key() == Qt::Key_PageUp) { + _inner.selectSkipPage(_scroll.height(), -1); + } else { + ItemListBox::keyPressEvent(e); + } +} + +void MembersBox::paintEvent(QPaintEvent *e) { + Painter p(this); + if (paint(p)) return; + + QString title(lang(_inner.filter() == MembersFilterRecent ? lng_channel_members : lng_channel_admins)); + paintTitle(p, title, false); +} + +void MembersBox::resizeEvent(QResizeEvent *e) { + ItemListBox::resizeEvent(e); + _inner.resize(width(), _inner.height()); + _done.move(0, height() - _done.height()); + _add.move(width() - _add.width(), 0); +} + +void MembersBox::onLoaded() { + if (!_done.isHidden() && _inner.channel()->amCreator() && (_inner.channel()->count < cMaxGroupCount() || !_inner.channel()->isPublic())) { + _add.show(); + } +} + +void MembersBox::onScroll() { + _inner.loadProfilePhotos(_scroll.scrollTop()); +} + +void MembersBox::onAdd() { + if (_inner.filter() == MembersFilterRecent && _inner.channel()->count >= cMaxGroupCount()) { + App::wnd()->replaceLayer(new MaxInviteBox(_inner.channel()->invitationUrl)); + return; + } + ContactsBox *box = new ContactsBox(_inner.channel(), _inner.filter(), _inner.already()); + if (_inner.filter() == MembersFilterRecent) { + App::wnd()->hideLayer(true); + App::wnd()->showLayer(box, true); + } else { + _addBox = box; + connect(_addBox, SIGNAL(adminAdded()), this, SLOT(onAdminAdded())); + App::wnd()->replaceLayer(_addBox); + } +} + +void MembersBox::onAdminAdded() { + if (!_addBox) return; + _addBox->onClose(); + _addBox = 0; + _inner.load(); +} + +void MembersBox::hideAll() { + ItemListBox::hideAll(); + _add.hide(); + _done.hide(); +} + +void MembersBox::showAll() { + ItemListBox::showAll(); + if (_inner.channel()->amCreator() && _inner.isLoaded() && (_inner.channel()->count < cMaxGroupCount() || !_inner.channel()->isPublic())) { + _add.show(); + } else { + _add.hide(); + } + _done.show(); +} + +void MembersBox::showDone() { + setFocus(); +} + NewGroupBox::NewGroupBox() : AbstractBox(), _group(this, qsl("group_type"), 0, lang(lng_create_group_title), true), _channel(this, qsl("group_type"), 1, lang(lng_create_channel_title)), _aboutGroupWidth(width() - st::newGroupPadding.left() - st::newGroupPadding.right() - st::rbDefFlat.textLeft), -_aboutGroup(st::normalFont, lang(lng_create_group_about), _defaultOptions, _aboutGroupWidth), +_aboutGroup(st::normalFont, lng_create_group_about(lt_count, QString::number(cMaxGroupCount())), _defaultOptions, _aboutGroupWidth), _aboutChannel(st::normalFont, lang(lng_create_channel_about), _defaultOptions, _aboutGroupWidth), _next(this, lang(lng_create_group_next), st::btnSelectDone), _cancel(this, lang(lng_cancel), st::btnSelectCancel) { @@ -1900,6 +2521,10 @@ void SetupChannelBox::mousePressEvent(QMouseEvent *e) { } } +void SetupChannelBox::leaveEvent(QEvent *e) { + updateSelected(QCursor::pos()); +} + void SetupChannelBox::updateSelected(const QPoint &cursorGlobalPosition) { QPoint p(mapFromGlobal(cursorGlobalPosition)); diff --git a/Telegram/SourceFiles/boxes/contactsbox.h b/Telegram/SourceFiles/boxes/contactsbox.h index c326f062f..b885844fb 100644 --- a/Telegram/SourceFiles/boxes/contactsbox.h +++ b/Telegram/SourceFiles/boxes/contactsbox.h @@ -25,7 +25,14 @@ enum CreatingGroupType { CreatingGroupChannel, }; -class ContactsInner : public QWidget, public RPCSender { +enum MembersFilter { + MembersFilterRecent, + MembersFilterAdmins, +}; +typedef QMap MembersAlreadyIn; + +class ConfirmBox; +class ContactsInner : public TWidget, public RPCSender { Q_OBJECT private: @@ -35,7 +42,7 @@ private: public: ContactsInner(CreatingGroupType creating = CreatingGroupNone); - ContactsInner(ChannelData *channel); + ContactsInner(ChannelData *channel, MembersFilter channelFilter = MembersFilterRecent, const MembersAlreadyIn &already = MembersAlreadyIn()); ContactsInner(ChatData *chat); ContactsInner(UserData *bot); void init(); @@ -47,7 +54,7 @@ public: void mousePressEvent(QMouseEvent *e); void resizeEvent(QResizeEvent *e); - void paintDialog(QPainter &p, PeerData *peer, ContactData *data, bool sel); + void paintDialog(Painter &p, PeerData *peer, ContactData *data, bool sel); void updateFilter(QString filter = QString()); void selectSkip(int32 dir); @@ -68,10 +75,14 @@ public: ChatData *chat() const; ChannelData *channel() const; + MembersFilter channelFilter() const; UserData *bot() const; CreatingGroupType creating() const; int32 selectedCount() const; + bool hasAlreadyMembersInChannel() const { + return !_already.isEmpty(); + } ~ContactsInner(); @@ -81,6 +92,7 @@ signals: void selectAllQuery(); void searchByUsername(); void chosenChanged(); + void adminAdded(); public slots: @@ -91,15 +103,25 @@ public slots: void onPeerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars); void onAddBot(); + void onAddAdmin(); + void onNoAddAdminBox(QObject *obj); private: + void addAdminDone(const MTPBool &result, mtpRequestId req); + bool addAdminFail(const RPCError &error, mtpRequestId req); + ChatData *_chat; ChannelData *_channel; + MembersFilter _channelFilter; UserData *_bot; CreatingGroupType _creating; + MembersAlreadyIn _already; ChatData *_addToChat; + UserData *_addAdmin; + mtpRequestId _addAdminRequestId; + ConfirmBox *_addAdminBox; int32 _time; @@ -148,6 +170,7 @@ public: ContactsBox(); ContactsBox(const QString &name, const QImage &photo); // group creation ContactsBox(ChannelData *channel); // channel setup + ContactsBox(ChannelData *channel, MembersFilter filter, const MembersAlreadyIn &already); ContactsBox(ChatData *chat); ContactsBox(UserData *bot); void keyPressEvent(QKeyEvent *e); @@ -160,6 +183,10 @@ public: _filter.setFocus(); } +signals: + + void adminAdded(); + public slots: void onFilterUpdate(); @@ -187,6 +214,7 @@ private: FlatInput _filter; FlatButton _next, _cancel; + MembersFilter _membersFilter; void peopleReceived(const MTPcontacts_Found &result, mtpRequestId req); bool peopleFailed(const RPCError &error, mtpRequestId req); @@ -211,6 +239,155 @@ private: bool creationFail(const RPCError &e); }; +class MembersInner : public TWidget, public RPCSender { + Q_OBJECT + +private: + + struct MemberData; + +public: + + MembersInner(ChannelData *channel, MembersFilter filter); + + void paintEvent(QPaintEvent *e); + void enterEvent(QEvent *e); + void leaveEvent(QEvent *e); + void mouseMoveEvent(QMouseEvent *e); + void mousePressEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *e); + + void paintDialog(Painter &p, PeerData *peer, MemberData *data, bool sel, bool kickSel, bool kickDown); + + void selectSkip(int32 dir); + void selectSkipPage(int32 h, int32 dir); + + void loadProfilePhotos(int32 yFrom); + void chooseParticipant(); + + void refresh(); + + ChannelData *channel() const; + MembersFilter filter() const; + + void load(); + bool isLoaded() const { + return !_loading; + } + + QMap already() const; + + ~MembersInner(); + +signals: + + void mustScrollTo(int ymin, int ymax); + + void loaded(); + +public slots: + + void updateSel(); + void peerUpdated(PeerData *peer); + void onPeerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars); + void onKickConfirm(); + void onKickBoxDestroyed(QObject *obj); + +private: + + void clearSel(); + MemberData *data(int32 index); + + void membersReceived(const MTPchannels_ChannelParticipants &result, mtpRequestId req); + bool membersFailed(const RPCError &error, mtpRequestId req); + + void kickDone(const MTPUpdates &result, mtpRequestId req); + void kickAdminDone(const MTPBool &result, mtpRequestId req); + bool kickFail(const RPCError &error, mtpRequestId req); + void removeKicked(); + + void clear(); + + ChannelData *_channel; + MembersFilter _filter; + + QString _kickText; + int32 _time, _kickWidth; + + int32 _sel, _kickSel, _kickDown; + bool _mouseSel; + + UserData *_kickConfirm; + mtpRequestId _kickRequestId; + + ConfirmBox *_kickBox; + + enum MemberRole { + MemberRoleNone, + MemberRoleSelf, + MemberRoleCreator, + MemberRoleEditor, + MemberRoleModerator, + MemberRoleKicked + }; + + struct MemberData { + Text name; + QString online; + bool canKick; + }; + + bool _loading; + mtpRequestId _loadingRequestId; + typedef QVector MemberRows; + typedef QVector MemberDates; + typedef QVector MemberRoles; + typedef QVector MemberDatas; + MemberRows _rows; + MemberDates _dates; + MemberRoles _roles; + MemberDatas _datas; + + QPoint _lastMousePos; + +}; + +class MembersBox : public ItemListBox { + Q_OBJECT + +public: + + MembersBox(ChannelData *channel, MembersFilter filter); + void keyPressEvent(QKeyEvent *e); + void paintEvent(QPaintEvent *e); + void resizeEvent(QResizeEvent *e); + + void setInnerFocus() { + setFocus(); + } + +public slots: + + void onLoaded(); + void onScroll(); + + void onAdd(); + void onAdminAdded(); + +protected: + + void hideAll(); + void showAll(); + void showDone(); + +private: + + MembersInner _inner; + FlatButton _add, _done; + + ContactsBox *_addBox; +}; + class NewGroupBox : public AbstractBox { Q_OBJECT @@ -319,6 +496,7 @@ public: void resizeEvent(QResizeEvent *e); void mouseMoveEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e); + void leaveEvent(QEvent *e); void closePressed(); diff --git a/Telegram/SourceFiles/boxes/photosendbox.cpp b/Telegram/SourceFiles/boxes/photosendbox.cpp index 5ae743d90..7b4010c95 100644 --- a/Telegram/SourceFiles/boxes/photosendbox.cpp +++ b/Telegram/SourceFiles/boxes/photosendbox.cpp @@ -105,7 +105,7 @@ _phone(phone), _fname(fname), _lname(lname), _replyTo(replyTo) { _compressed.hide(); - _name = _fname + QChar(' ') + _lname; + _name = lng_full_name(lt_first_name, _fname, lt_last_name, _lname); _namew = st::mediaFont->m.width(_name); _size = _phone; _textw = qMax(_namew, st::mediaFont->m.width(_size)); diff --git a/Telegram/SourceFiles/dialogswidget.cpp b/Telegram/SourceFiles/dialogswidget.cpp index 0407a0c57..02a6eba22 100644 --- a/Telegram/SourceFiles/dialogswidget.cpp +++ b/Telegram/SourceFiles/dialogswidget.cpp @@ -228,25 +228,29 @@ void DialogsListWidget::paintEvent(QPaintEvent *e) { } } -void DialogsListWidget::peopleResultPaint(PeerData *peer, QPainter &p, int32 w, bool act, bool sel) const { +void DialogsListWidget::peopleResultPaint(PeerData *peer, Painter &p, int32 w, bool act, bool sel) const { QRect fullRect(0, 0, w, st::dlgHeight); p.fillRect(fullRect, (act ? st::dlgActiveBG : (sel ? st::dlgHoverBG : st::dlgBG))->b); History *history = App::history(peer->id); - p.drawPixmap(st::dlgPaddingHor, st::dlgPaddingVer, history->peer->photo->pix(st::dlgPhotoSize)); + p.drawPixmap(st::dlgPaddingHor, st::dlgPaddingVer, peer->photo->pix(st::dlgPhotoSize)); int32 nameleft = st::dlgPaddingHor + st::dlgPhotoSize + st::dlgPhotoPadding; int32 namewidth = w - nameleft - st::dlgPaddingHor; QRect rectForName(nameleft, st::dlgPaddingVer + st::dlgNameTop, namewidth, st::msgNameFont->height); // draw chat icon - if (history->peer->isChat()) { + if (peer->isChat()) { p.drawPixmap(QPoint(rectForName.left() + st::dlgChatImgPos.x(), rectForName.top() + st::dlgChatImgPos.y()), App::sprite(), (act ? st::dlgActiveChatImg : st::dlgChatImg)); rectForName.setLeft(rectForName.left() + st::dlgImgSkip); - } else if (history->peer->isChannel()) { + } else if (peer->isChannel()) { p.drawPixmap(QPoint(rectForName.left() + st::dlgChannelImgPos.x(), rectForName.top() + st::dlgChannelImgPos.y()), App::sprite(), (act ? st::dlgActiveChannelImg : st::dlgChannelImg)); rectForName.setLeft(rectForName.left() + st::dlgImgSkip); + if (peer->asChannel()->isVerified()) { + rectForName.setWidth(rectForName.width() - st::verifiedCheck.pxWidth() - st::verifiedCheckPos.x()); + p.drawSprite(rectForName.topLeft() + QPoint(qMin(peer->dialogName().maxWidth(), rectForName.width()), 0) + st::verifiedCheckPos, (act ? st::verifiedCheckInv : st::verifiedCheck)); + } } QRect tr(nameleft, st::dlgPaddingVer + st::dlgFont->height + st::dlgSep, namewidth, st::dlgFont->height); @@ -273,7 +277,7 @@ void DialogsListWidget::peopleResultPaint(PeerData *peer, QPainter &p, int32 w, peer->dialogName().drawElided(p, rectForName.left(), rectForName.top(), rectForName.width()); } -void DialogsListWidget::searchInPeerPaint(QPainter &p, int32 w) const { +void DialogsListWidget::searchInPeerPaint(Painter &p, int32 w) const { QRect fullRect(0, 0, w, st::dlgHeight); p.fillRect(fullRect, st::dlgBG->b); @@ -450,6 +454,8 @@ void DialogsListWidget::removePeer(PeerData *peer) { History *history = App::history(peer->id); dialogs.del(peer); history->dialogs = History::DialogLinks(); + history->clearNotifications(); + if (App::wnd()) App::wnd()->notifyClear(history); if (contacts.list.rowByPeer.constFind(peer->id) != contacts.list.rowByPeer.cend()) { if (contactsNoDialogs.list.rowByPeer.constFind(peer->id) == contactsNoDialogs.list.rowByPeer.cend()) { contactsNoDialogs.addByName(App::history(peer->id)); @@ -1665,8 +1671,6 @@ void DialogsWidget::dialogsReceived(const MTPmessages_Dialogs &dialogs, mtpReque } break; } - unreadCountsReceived(*dlgList); - if (!_contactsRequest) { _contactsRequest = MTP::send(MTPcontacts_GetContacts(MTP_string("")), rpcDone(&DialogsWidget::contactsReceived), rpcFail(&DialogsWidget::contactsFailed)); } @@ -1674,6 +1678,7 @@ void DialogsWidget::dialogsReceived(const MTPmessages_Dialogs &dialogs, mtpReque if (_dialogsRequest == req) { _dialogsCount = count; if (dlgList) { + unreadCountsReceived(*dlgList); list.dialogsReceived(*dlgList); onListScroll(); @@ -1693,6 +1698,7 @@ void DialogsWidget::dialogsReceived(const MTPmessages_Dialogs &dialogs, mtpReque } else if (_channelDialogsRequest == req) { //_channelDialogsCount = count; if (dlgList) { + unreadCountsReceived(*dlgList); list.dialogsReceived(*dlgList); onListScroll(); diff --git a/Telegram/SourceFiles/dialogswidget.h b/Telegram/SourceFiles/dialogswidget.h index 38d423a81..a1bc5227b 100644 --- a/Telegram/SourceFiles/dialogswidget.h +++ b/Telegram/SourceFiles/dialogswidget.h @@ -49,8 +49,8 @@ public: void enterEvent(QEvent *e); void leaveEvent(QEvent *e); - void peopleResultPaint(PeerData *peer, QPainter &p, int32 w, bool act, bool sel) const; - void searchInPeerPaint(QPainter &p, int32 w) const; + void peopleResultPaint(PeerData *peer, Painter &p, int32 w, bool act, bool sel) const; + void searchInPeerPaint(Painter &p, int32 w) const; void selectSkip(int32 direction); void selectSkipPage(int32 pixels, int32 direction); diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index b67de76f9..c94e20860 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -647,11 +647,12 @@ void ChannelHistory::addNewGroup(const MTPMessageGroup &group) { } HistoryJoined *ChannelHistory::insertJoinedMessage(bool unread) { - if (_joinedMessage || peer->asChannel()->haveLeft() || peer->asChannel()->wasKicked()) return _joinedMessage; + if (_joinedMessage || !peer->asChannel()->amIn()) return _joinedMessage; UserData *inviter = (peer->asChannel()->inviter > 0) ? App::userLoaded(peer->asChannel()->inviter) : 0; if (!inviter) return 0; + if (peerToUser(inviter->id) == MTP::authedId()) unread = false; int32 flags = (unread ? MTPDmessage_flag_unread : 0); QDateTime inviteDate = peer->asChannel()->inviteDate; if (unread) _maxReadMessageDate = inviteDate; @@ -1725,8 +1726,11 @@ void History::newItemAdded(HistoryItem *item) { if (item->out()) { if (unreadBar) unreadBar->destroy(); } else if (item->unread()) { - notifies.push_back(item); - App::main()->newUnreadMsg(this, item); + bool skip = false; + if (!isChannel() || peer->asChannel()->amIn()) { + notifies.push_back(item); + App::main()->newUnreadMsg(this, item); + } } } @@ -2310,7 +2314,7 @@ void History::setLastMessage(HistoryItem *msg) { } void History::setPosInDialogsDate(const QDateTime &date) { - bool updateDialog = (App::main() && (!peer->isChannel() || peer->asChannel()->amCreator() || (!peer->asChannel()->haveLeft() && !peer->asChannel()->wasKicked()))); + bool updateDialog = (App::main() && (!peer->isChannel() || peer->asChannel()->amIn())); if (!lastMsgDate.isNull() && lastMsgDate >= date) { if (!updateDialog || !dialogs.isEmpty()) { return; @@ -4493,7 +4497,24 @@ HistoryContact::HistoryContact(int32 userId, const QString &first, const QString App::regSharedContactPhone(userId, phone); _maxw = st::mediaMaxWidth; - name.setText(st::mediaFont, (first + ' ' + last).trimmed(), _textNameOptions); + name.setText(st::mediaFont, lng_full_name(lt_first_name, first, lt_last_name, last).trimmed(), _textNameOptions); + + phonew = st::mediaFont->m.width(phone); + + if (contact) { + contact->photo->load(); + } +} + +HistoryContact::HistoryContact(int32 userId, const QString &fullname, const QString &phone) : HistoryMedia(0) +, userId(userId) +, phone(App::formatPhone(phone)) +, contact(App::userLoaded(userId)) +{ + App::regSharedContactPhone(userId, phone); + + _maxw = st::mediaMaxWidth; + name.setText(st::mediaFont, fullname.trimmed(), _textNameOptions); phonew = st::mediaFont->m.width(phone); @@ -4589,14 +4610,7 @@ void HistoryContact::getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 } HistoryMedia *HistoryContact::clone() const { - QStringList names = name.original(0, 0xFFFF, false).split(QChar(' '), QString::SkipEmptyParts); - if (names.isEmpty()) { - names.push_back(QString()); - } - QString fname = names.front(); - names.pop_front(); - HistoryContact *result = new HistoryContact(userId, fname, names.join(QChar(' ')), phone); - return result; + return new HistoryContact(userId, name.original(0, 0xFFFF, false), phone); } void HistoryContact::draw(Painter &p, const HistoryItem *parent, bool selected, int32 width) const { @@ -5966,7 +5980,7 @@ void HistoryImageLink::getState(TextLinkPtr &lnk, HistoryCursorState &state, int skipx = st::mediaPadding.left(); if (reply) { skipy = st::msgReplyPadding.top() + st::msgReplyBarSize.height() + st::msgReplyPadding.bottom(); - } if (fwd) { + } else if (fwd) { skipy = st::msgServiceNameFont->height + st::msgPadding.top(); } if (parent->displayFromName()) { diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index 3286aaf2e..4d367734d 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -827,7 +827,7 @@ public: } bool unread() const { if ((out() && (id > 0 && id < _history->outboxReadBefore)) || (!out() && id > 0 && id < _history->inboxReadBefore)) return false; - return (id > 0) ? true : (_flags & MTPDmessage_flag_unread); + return (id > 0 && !out()) ? true : (_flags & MTPDmessage_flag_unread); } bool notifyByFrom() const { return _flags & MTPDmessage_flag_notify_by_from; @@ -1332,6 +1332,7 @@ class HistoryContact : public HistoryMedia { public: HistoryContact(int32 userId, const QString &first, const QString &last, const QString &phone); + HistoryContact(int32 userId, const QString &fullname, const QString &phone); void initDimensions(const HistoryItem *parent); void draw(Painter &p, const HistoryItem *parent, bool selected, int32 width) const; diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index 3a2757f81..888c53540 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -3867,6 +3867,10 @@ bool HistoryWidget::joinFail(const RPCError &error, mtpRequestId req) { if (error.type().startsWith(qsl("FLOOD_WAIT_"))) return false; if (_unblockRequest == req) _unblockRequest = 0; + if (error.type() == qstr("CHANNEL_PRIVATE")) { + App::wnd()->showLayer(new ConfirmBox(lang(lng_channel_not_accessible), true)); + return true; + } return false; } @@ -4221,7 +4225,7 @@ void HistoryWidget::sendBotCommand(const QString &cmd, MsgId replyTo) { // reply QString toSend = cmd; PeerData *bot = _peer->isUser() ? _peer : (App::hoveredLinkItem() ? (App::hoveredLinkItem()->toHistoryForwarded() ? App::hoveredLinkItem()->toHistoryForwarded()->fromForwarded() : App::hoveredLinkItem()->from()) : 0); - if (!bot->isUser() || !bot->asUser()->botInfo) bot = 0; + if (bot && (!bot->isUser() || !bot->asUser()->botInfo)) bot = 0; QString username = bot ? bot->asUser()->username : QString(); int32 botStatus = _peer->isChat() ? _peer->asChat()->botStatus : (_peer->isChannel() ? _peer->asChannel()->botStatus : -1); if (!replyTo && toSend.indexOf('@') < 2 && !username.isEmpty() && (botStatus == 0 || botStatus == 2)) { @@ -4352,7 +4356,7 @@ bool HistoryWidget::canSendMessages(PeerData *peer) const { } else if (peer->isChat()) { return !peer->asChat()->isForbidden && !peer->asChat()->haveLeft; } else if (peer->isChannel()) { - return !peer->asChannel()->isForbidden && !peer->asChannel()->haveLeft() && !peer->asChannel()->wasKicked() && (peer->asChannel()->canPublish() || !peer->asChannel()->isBroadcast()); + return peer->asChannel()->amIn() && (peer->asChannel()->canPublish() || !peer->asChannel()->isBroadcast()); } } return false; @@ -4376,7 +4380,7 @@ bool HistoryWidget::isBlocked() const { } bool HistoryWidget::isJoinChannel() const { - return _peer && _peer->isChannel() && !_peer->asChannel()->amParticipant(); + return _peer && _peer->isChannel() && !_peer->asChannel()->amIn(); } bool HistoryWidget::isMuteUnmute() const { diff --git a/Telegram/SourceFiles/intro/introsignup.cpp b/Telegram/SourceFiles/intro/introsignup.cpp index cc4bcdde1..ee24a7513 100644 --- a/Telegram/SourceFiles/intro/introsignup.cpp +++ b/Telegram/SourceFiles/intro/introsignup.cpp @@ -31,13 +31,18 @@ IntroSignup::IntroSignup(IntroWidget *parent) : IntroStage(parent), errorAlpha(0), a_photo(0), next(this, lang(lng_intro_finish), st::btnIntroNext), first(this, st::inpIntroName, lang(lng_signup_firstname)), - last(this, st::inpIntroName, lang(lng_signup_lastname)) { + last(this, st::inpIntroName, lang(lng_signup_lastname)), + _invertOrder(langFirstNameGoesSecond()) { setVisible(false); setGeometry(parent->innerRect()); connect(&next, SIGNAL(clicked()), this, SLOT(onSubmitName())); connect(&checkRequest, SIGNAL(timeout()), this, SLOT(onCheckRequest())); + if (_invertOrder) { + setTabOrder(&last, &first); + } + setMouseTracking(true); } @@ -102,7 +107,12 @@ void IntroSignup::paintEvent(QPaintEvent *e) { if (animating() || error.length()) { p.setOpacity(errorAlpha.current()); - QRect errRect((width() - st::introErrWidth) / 2, (last.y() + last.height() + next.y() - st::introErrHeight) / 2, st::introErrWidth, st::introErrHeight); + QRect errRect; + if (_invertOrder) { + errRect = QRect((width() - st::introErrWidth) / 2, (first.y() + first.height() + next.y() - st::introErrHeight) / 2, st::introErrWidth, st::introErrHeight); + } else { + errRect = QRect((width() - st::introErrWidth) / 2, (last.y() + last.height() + next.y() - st::introErrHeight) / 2, st::introErrWidth, st::introErrHeight); + } p.setFont(st::introErrFont->f); p.setPen(st::introErrColor->p); p.drawText(errRect, error, QTextOption(style::al_center)); @@ -135,8 +145,13 @@ void IntroSignup::resizeEvent(QResizeEvent *e) { _phTop = st::introTextTop + st::introTextSize.height() + st::introCountry.top; if (e->oldSize().width() != width()) { next.move((width() - next.width()) / 2, st::introBtnTop); - first.move((width() - next.width()) / 2 + next.width() - first.width(), _phTop); - last.move((width() - next.width()) / 2 + next.width() - last.width(), first.y() + st::introCountry.height + st::introCountry.ptrSize.height() + st::introPhoneTop); + if (_invertOrder) { + last.move((width() - next.width()) / 2 + next.width() - last.width(), _phTop); + first.move((width() - next.width()) / 2 + next.width() - first.width(), last.y() + st::introCountry.height + st::introCountry.ptrSize.height() + st::introPhoneTop); + } else { + first.move((width() - next.width()) / 2 + next.width() - first.width(), _phTop); + last.move((width() - next.width()) / 2 + next.width() - last.width(), first.y() + st::introCountry.height + st::introCountry.ptrSize.height() + st::introPhoneTop); + } } textRect = QRect((width() - st::introTextSize.width()) / 2, st::introTextTop, st::introTextSize.width(), st::introTextSize.height()); } @@ -175,7 +190,11 @@ bool IntroSignup::animStep(float64 ms) { void IntroSignup::activate() { show(); - first.setFocus(); + if (_invertOrder) { + last.setFocus(); + } else { + first.setFocus(); + } } void IntroSignup::deactivate() { @@ -196,7 +215,11 @@ void IntroSignup::onCheckRequest() { if (!first.isEnabled()) { first.setDisabled(false); last.setDisabled(false); - last.setFocus(); + if (_invertOrder) { + first.setFocus(); + } else { + last.setFocus(); + } } } } @@ -241,7 +264,11 @@ bool IntroSignup::nameSubmitFail(const RPCError &error) { return true; } else if (error.type().startsWith(qsl("FLOOD_WAIT_"))) { showError(lang(lng_flood_error)); - last.setFocus(); + if (_invertOrder) { + first.setFocus(); + } else { + last.setFocus(); + } return true; } if (cDebug()) { // internal server error @@ -249,7 +276,11 @@ bool IntroSignup::nameSubmitFail(const RPCError &error) { } else { showError(lang(lng_server_error)); } - first.setFocus(); + if (_invertOrder) { + last.setFocus(); + } else { + first.setFocus(); + } return false; } @@ -258,12 +289,22 @@ void IntroSignup::onInputChange() { } void IntroSignup::onSubmitName(bool force) { - if ((first.hasFocus() || first.text().trimmed().length()) && !last.text().trimmed().length()) { - last.setFocus(); - return; - } else if (!first.text().trimmed().length()) { - first.setFocus(); - return; + if (_invertOrder) { + if ((last.hasFocus() || last.text().trimmed().length()) && !first.text().trimmed().length()) { + first.setFocus(); + return; + } else if (!last.text().trimmed().length()) { + last.setFocus(); + return; + } + } else { + if ((first.hasFocus() || first.text().trimmed().length()) && !last.text().trimmed().length()) { + last.setFocus(); + return; + } else if (!first.text().trimmed().length()) { + first.setFocus(); + return; + } } if (!force && !first.isEnabled()) return; diff --git a/Telegram/SourceFiles/intro/introsignup.h b/Telegram/SourceFiles/intro/introsignup.h index d4775266e..9d68fa10d 100644 --- a/Telegram/SourceFiles/intro/introsignup.h +++ b/Telegram/SourceFiles/intro/introsignup.h @@ -72,5 +72,7 @@ private: QString firstName, lastName; mtpRequestId sentRequest; + bool _invertOrder; + QTimer checkRequest; }; diff --git a/Telegram/SourceFiles/lang.h b/Telegram/SourceFiles/lang.h index e99c42dca..9091f2806 100644 --- a/Telegram/SourceFiles/lang.h +++ b/Telegram/SourceFiles/lang.h @@ -139,3 +139,19 @@ public: QString translate(const char *context, const char *sourceText, const char *disambiguation = 0, int n = -1) const; }; + +inline bool langFirstNameGoesSecond() { + QString fullname = lang(lng_full_name__tagged); + for (const QChar *s = fullname.constData(), *ch = s, *e = ch + fullname.size(); ch != e;) { + if (*ch == TextCommand) { + if (ch + 3 < e && (ch + 1)->unicode() == TextCommandLangTag && *(ch + 3) == TextCommand) { + if ((ch + 2)->unicode() == 0x0020 + lt_last_name) { + return true; + } else if ((ch + 2)->unicode() == 0x0020 + lt_first_name) { + break; + } + } + } + } + return false; +} diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 5a2dd957c..537d154e8 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -864,7 +864,7 @@ void MainWidget::addParticipants(PeerData *chatOrChannel, const QVector::const_iterator i = users.cbegin(), e = users.cend(); i != e; ++i) { inputUsers.push_back((*i)->inputUser); } - MTP::send(MTPchannels_InviteToChannel(chatOrChannel->asChannel()->inputChannel, MTP_vector(inputUsers)), rpcDone(&MainWidget::sentUpdatesReceived), rpcFail(&MainWidget::addParticipantsFail), 0, 5); + MTP::send(MTPchannels_InviteToChannel(chatOrChannel->asChannel()->inputChannel, MTP_vector(inputUsers)), rpcDone(&MainWidget::inviteToChannelDone, chatOrChannel->asChannel()), rpcFail(&MainWidget::addParticipantsFail), 0, 5); } } @@ -960,15 +960,13 @@ void MainWidget::checkedHistory(PeerData *peer, const MTPmessages_Messages &resu showDialogs(); } } else if (peer->isChannel()) { - if (peer->asChannel()->inviter > 0) { - if (!peer->asChannel()->isForbidden && !peer->asChannel()->haveLeft() && !peer->asChannel()->wasKicked()) { - if (UserData *from = App::userLoaded(peer->asChannel()->inviter)) { - History *h = App::history(peer->id); - h->clear(true); - h->addNewerSlice(QVector(), 0); - h->asChannelHistory()->insertJoinedMessage(true); - history.peerMessagesUpdated(h->peer->id); - } + if (peer->asChannel()->inviter > 0 && peer->asChannel()->amIn()) { + if (UserData *from = App::userLoaded(peer->asChannel()->inviter)) { + History *h = App::history(peer->id); + h->clear(true); + h->addNewerSlice(QVector(), 0); + h->asChannelHistory()->insertJoinedMessage(true); + history.peerMessagesUpdated(h->peer->id); } } } else { @@ -990,12 +988,10 @@ void MainWidget::checkedHistory(PeerData *peer, const MTPmessages_Messages &resu } } if (!h->lastMsgDate.isNull() && h->loadedAtBottom()) { - if (peer->isChannel() && peer->asChannel()->inviter > 0 && h->lastMsgDate <= peer->asChannel()->inviteDate) { - if (!peer->asChannel()->isForbidden && !peer->asChannel()->haveLeft() && !peer->asChannel()->wasKicked()) { - if (UserData *from = App::userLoaded(peer->asChannel()->inviter)) { - h->asChannelHistory()->insertJoinedMessage(true); - history.peerMessagesUpdated(h->peer->id); - } + if (peer->isChannel() && peer->asChannel()->inviter > 0 && h->lastMsgDate <= peer->asChannel()->inviteDate && peer->asChannel()->amIn()) { + if (UserData *from = App::userLoaded(peer->asChannel()->inviter)) { + h->asChannelHistory()->insertJoinedMessage(true); + history.peerMessagesUpdated(h->peer->id); } } } @@ -1264,8 +1260,12 @@ void MainWidget::saveRecentHashtags(const QString &text) { void MainWidget::readServerHistory(History *hist, bool force) { if (!hist || (!force && !hist->unreadCount)) return; - ReadRequests::const_iterator i = _readRequests.constFind(hist->peer); MsgId upTo = hist->inboxRead(0); + if (hist->isChannel() && !hist->peer->asChannel()->amIn()) { + return; // no read request for channels that I didn't koin + } + + ReadRequests::const_iterator i = _readRequests.constFind(hist->peer); if (i == _readRequests.cend()) { sendReadRequest(hist->peer, upTo); } else { @@ -1670,7 +1670,7 @@ void MainWidget::messagesAffected(PeerData *peer, const MTPmessages_AffectedMess App::emitPeerUpdated(); } } - if (History *h = App::historyLoaded(peer->id)) { + if (History *h = App::historyLoaded(peer ? peer->id : 0)) { if (!h->lastMsg) { checkPeerHistory(peer); } @@ -2651,6 +2651,11 @@ void MainWidget::sentUpdatesReceived(uint64 randomId, const MTPUpdates &result) App::emitPeerUpdated(); } +void MainWidget::inviteToChannelDone(ChannelData *channel, const MTPUpdates &updates) { + sentUpdatesReceived(updates); + channel->updateFull(true); +} + void MainWidget::msgUpdated(PeerId peer, const HistoryItem *msg) { if (!msg) return; history.msgUpdated(peer, msg); @@ -3504,6 +3509,8 @@ void MainWidget::openPeerByName(const QString &username, bool toProfile, const Q if (peer->isUser() && peer->asUser()->botInfo && !peer->asUser()->botInfo->cantJoinGroups && !startToken.isEmpty()) { peer->asUser()->botInfo->startGroupToken = startToken; App::wnd()->showLayer(new ContactsBox(peer->asUser())); + } else if (peer->isChannel()) { + showPeerHistory(peer->id, ShowAtUnreadMsgId); } else { showPeerProfile(peer); } @@ -3574,6 +3581,8 @@ void MainWidget::usernameResolveDone(QPair toProfileStartToken, c if (peer->isUser() && peer->asUser()->botInfo && !peer->asUser()->botInfo->cantJoinGroups && !toProfileStartToken.second.isEmpty()) { peer->asUser()->botInfo->startGroupToken = toProfileStartToken.second; App::wnd()->showLayer(new ContactsBox(peer->asUser())); + } else if (peer->isChannel()) { + showPeerHistory(peer->id, ShowAtUnreadMsgId); } else { showPeerProfile(peer); } @@ -4504,7 +4513,7 @@ void MainWidget::feedUpdate(const MTPUpdate &update) { if (ChannelData *channel = App::channelLoaded(d.vchannel_id.v)) { App::markPeerUpdated(channel); channel->inviter = 0; - if (channel->isForbidden || channel->wasKicked() || channel->haveLeft()) { + if (!channel->amIn()) { dialogs.removePeer(channel); if (History *h = App::historyLoaded(channel->id)) { h->clear(true); diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index 6d93af396..a7ca59a1e 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -227,6 +227,7 @@ public: void sentUpdatesReceived(const MTPUpdates &updates) { return sentUpdatesReceived(0, updates); } + void inviteToChannelDone(ChannelData *channel, const MTPUpdates &updates); void msgUpdated(PeerId peer, const HistoryItem *msg); void historyToDown(History *hist); void dialogsToUp(); diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 98a6dce58..afc01138d 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -44,13 +44,18 @@ namespace { MediaView *_view; }; - TextParseOptions _captionTextOptions = { TextParseLinks | TextParseMentions | TextParseHashtags | TextParseMultiline | TextParseRichText, // flags 0, // maxw 0, // maxh Qt::LayoutDirectionAuto, // dir }; + TextParseOptions _captionBotOptions = { + TextParseLinks | TextParseMentions | TextParseHashtags | TextParseMultiline | TextParseRichText | TextParseBotCommands, // flags + 0, // maxw + 0, // maxh + Qt::LayoutDirectionAuto, // dir + }; } MediaView::MediaView() : TWidget(App::wnd()), @@ -763,7 +768,7 @@ void MediaView::displayPhoto(PhotoData *photo, HistoryItem *item) { _caption = Text(); if (HistoryMessage *itemMsg = item ? item->toHistoryMessage() : 0) { if (HistoryPhoto *photoMsg = dynamic_cast(itemMsg->getMedia())) { - _caption.setText(st::mvCaptionFont, photoMsg->captionForClone().original(0, 0xFFFF), _captionTextOptions); + _caption.setText(st::mvCaptionFont, photoMsg->captionForClone().original(0, 0xFFFF), (item->from()->isUser() && item->from()->asUser()->botInfo) ? _captionBotOptions : _captionTextOptions); } } diff --git a/Telegram/SourceFiles/profilewidget.cpp b/Telegram/SourceFiles/profilewidget.cpp index 632da334c..2e7444363 100644 --- a/Telegram/SourceFiles/profilewidget.cpp +++ b/Telegram/SourceFiles/profilewidget.cpp @@ -47,8 +47,9 @@ ProfileInner::ProfileInner(ProfileWidget *profile, ScrollArea *scroll, const Pee _invitationLink(this, qsl("telegram.me/joinchat/")), _botSettings(this, lang(lng_profile_bot_settings)), _botHelp(this, lang(lng_profile_bot_help)), - _username(this, qsl("https://telegram.me/") + (_peerChannel ? _peerChannel->username : QString())), - _editLink(this, lang((_peerChannel && _peerChannel->isPublic()) ? lng_profile_edit_public_link : lng_profile_create_public_link)), + _username(this, (_peerChannel && _peerChannel->isPublic()) ? (qsl("telegram.me/") + _peerChannel->username) : lang(lng_profile_create_public_link)), + _members(this, lng_channel_members_link(lt_count, (_peerChannel && _peerChannel->count > 0) ? _peerChannel->count : 1)), + _admins(this, lng_channel_admins_link(lt_count, (_peerChannel && _peerChannel->adminsCount > 0) ? _peerChannel->adminsCount : 1)), // about _about(st::wndMinWidth - st::profilePadding.left() - st::profilePadding.right()), @@ -121,6 +122,8 @@ ProfileInner::ProfileInner(ProfileWidget *profile, ScrollArea *scroll, const Pee connect(&_createInvitationLink, SIGNAL(clicked()), this, SLOT(onCreateInvitationLink())); connect(&_invitationLink, SIGNAL(clicked()), this, SLOT(onInvitationLink())); connect(&_username, SIGNAL(clicked()), this, SLOT(onPublicLink())); + connect(&_members, SIGNAL(clicked()), this, SLOT(onMembers())); + connect(&_admins, SIGNAL(clicked()), this, SLOT(onAdmins())); _invitationLink.setAcceptBoth(true); _username.setAcceptBoth(true); updateInvitationLink(); @@ -128,7 +131,7 @@ ProfileInner::ProfileInner(ProfileWidget *profile, ScrollArea *scroll, const Pee if (_peerChat) { QString maxStr = lang(_uploadPhoto.textWidth() > _addParticipant.textWidth() ? lng_profile_set_group_photo : lng_profile_add_participant); _uploadPhoto.setAutoFontSize(st::profileMinBtnPadding, maxStr); - _uploadPhoto.setAutoFontSize(st::profileMinBtnPadding, maxStr); + _addParticipant.setAutoFontSize(st::profileMinBtnPadding, maxStr); } else if (_peerUser) { QString maxStr; if (_peerUser->botInfo && !_peerUser->botInfo->cantJoinGroups) { @@ -141,11 +144,12 @@ ProfileInner::ProfileInner(ProfileWidget *profile, ScrollArea *scroll, const Pee _sendMessage.setAutoFontSize(st::profileMinBtnPadding, maxStr); _shareContact.setAutoFontSize(st::profileMinBtnPadding, maxStr); _inviteToGroup.setAutoFontSize(st::profileMinBtnPadding, maxStr); + } else if (_peerChannel && _amCreator) { + _uploadPhoto.setAutoFontSize(st::profileMinBtnPadding, lang(lng_profile_set_group_photo)); } connect(&_botSettings, SIGNAL(clicked()), this, SLOT(onBotSettings())); connect(&_botHelp, SIGNAL(clicked()), this, SLOT(onBotHelp())); - connect(&_editLink, SIGNAL(clicked()), this, SLOT(onEditPublicLink())); connect(App::app(), SIGNAL(peerPhotoDone(PeerId)), this, SLOT(onPhotoUpdateDone(PeerId))); connect(App::app(), SIGNAL(peerPhotoFail(PeerId)), this, SLOT(onPhotoUpdateFail(PeerId))); @@ -340,9 +344,9 @@ bool ProfileInner::blockFail(const RPCError &error) { } void ProfileInner::onAddParticipant() { - if (!_peerChat && !_peerChannel) return; + if (!_peerChat) return; - App::wnd()->showLayer(_peerChat ? (new ContactsBox(_peerChat)) : (new ContactsBox(_peerChannel))); + App::wnd()->showLayer(new ContactsBox(_peerChat)); } void ProfileInner::onUpdatePhotoCancel() { @@ -398,10 +402,24 @@ void ProfileInner::onInvitationLink() { } void ProfileInner::onPublicLink() { - if (!_peerChannel || !_peerChannel->isPublic()) return; + if (!_peerChannel) return; + + if (_peerChannel->isPublic()) { + QApplication::clipboard()->setText(qsl("https://telegram.me/") + _peerChannel->username); + App::wnd()->showLayer(new ConfirmBox(lang(lng_channel_public_link_copied), true)); + } else { + App::wnd()->showLayer(new SetupChannelBox(_peerChannel, true)); + } +} - QApplication::clipboard()->setText(qsl("https://telegram.me/") + _peerChannel->username); - App::wnd()->showLayer(new ConfirmBox(lang(lng_channel_public_link_copied), true)); +void ProfileInner::onMembers() { + if (!_peerChannel) return; + App::wnd()->showLayer(new MembersBox(_peerChannel, MembersFilterRecent)); +} + +void ProfileInner::onAdmins() { + if (!_peerChannel) return; + App::wnd()->showLayer(new MembersBox(_peerChannel, MembersFilterAdmins)); } void ProfileInner::onCreateInvitationLink() { @@ -459,6 +477,9 @@ void ProfileInner::onFullPeerUpdated(PeerData *peer) { resizeEvent(0); } else if (_peerChannel) { updateInvitationLink(); + _members.setText(lng_channel_members_link(lt_count, (_peerChannel->count > 0) ? _peerChannel->count : 1)); + _admins.setText(lng_channel_admins_link(lt_count, (_peerChannel->adminsCount > 0) ? _peerChannel->adminsCount : 1)); + _onlineText = lng_chat_status_members(lt_count, _peerChannel->count > 0 ? _peerChannel->count : 1); if (_peerChannel->about.isEmpty()) { _about = Text(st::wndMinWidth - st::profilePadding.left() - st::profilePadding.right()); } else { @@ -497,10 +518,6 @@ void ProfileInner::onBotHelp() { updateBotLinksVisibility(); } -void ProfileInner::onEditPublicLink() { - App::wnd()->showLayer(new SetupChannelBox(_peerChannel, true), true); -} - void ProfileInner::peerUpdated(PeerData *data) { if (data == _peer) { PhotoData *photo = 0; @@ -518,6 +535,9 @@ void ProfileInner::peerUpdated(PeerData *data) { if (_peerChannel->isPublic() != _invitationLink.isHidden()) { peerUsernameChanged(); } + _members.setText(lng_channel_members_link(lt_count, (_peerChannel->count > 0) ? _peerChannel->count : 1)); + _admins.setText(lng_channel_admins_link(lt_count, (_peerChannel->adminsCount > 0) ? _peerChannel->adminsCount : 1)); + _onlineText = lng_chat_status_members(lt_count, _peerChannel->count > 0 ? _peerChannel->count : 1); } _photoLink = (photo && photo->date) ? TextLinkPtr(new PhotoLink(photo, _peer)) : TextLinkPtr(); if (_peer->name != _nameCache) { @@ -600,7 +620,7 @@ void ProfileInner::reorderParticipants() { if (_peerUser) { _onlineText = App::onlineText(_peerUser, t, true); } else if (_peerChannel) { - _onlineText = _peerChannel->count ? lng_chat_status_members(lt_count, _peerChannel->count) : lang(lng_channel_status); + _onlineText = lng_chat_status_members(lt_count, _peerChannel->count > 0 ? _peerChannel->count : 1); } else { _onlineText = lang(lng_chat_status_unaccessible); } @@ -615,12 +635,7 @@ void ProfileInner::start() { void ProfileInner::peerUsernameChanged() { if (_peerChannel) { - if (_peerChannel->isPublic()) { - _username.setText(qsl("https://telegram.me/") + _peerChannel->username); - _editLink.setText(lang(lng_profile_edit_public_link)); - } else { - _editLink.setText(lang(lng_profile_create_public_link)); - } + _username.setText(_peerChannel->isPublic() ? (qsl("telegram.me/") + _peerChannel->username) : lang(lng_profile_create_public_link)); resizeEvent(0); showAll(); } @@ -636,7 +651,7 @@ bool ProfileInner::event(QEvent *e) { } void ProfileInner::paintEvent(QPaintEvent *e) { - QPainter p(this); + Painter p(this); QRect r(e->rect()); p.setClipRect(r); @@ -657,8 +672,15 @@ void ProfileInner::paintEvent(QPaintEvent *e) { p.setOpacity(1); } } + + int32 namew = _width - st::profilePhotoSize - st::profileNameLeft; p.setPen(st::black->p); - _nameText.drawElided(p, _left + st::profilePhotoSize + st::profileNameLeft, top + st::profileNameTop, _width - st::profilePhotoSize - st::profileNameLeft); + if (_peerChannel && _peerChannel->isVerified()) { + namew -= st::verifiedCheckProfile.pxWidth() + st::verifiedCheckProfilePos.x(); + int32 cx = _left + st::profilePhotoSize + st::profileNameLeft + qMin(_nameText.maxWidth(), namew); + p.drawSprite(QPoint(cx, top + st::profileNameTop) + st::verifiedCheckProfilePos, st::verifiedCheckProfile); + } + _nameText.drawElided(p, _left + st::profilePhotoSize + st::profileNameLeft, top + st::profileNameTop, namew); p.setFont(st::profileStatusFont->f); int32 addbyname = 0; @@ -666,24 +688,22 @@ void ProfileInner::paintEvent(QPaintEvent *e) { addbyname = st::profileStatusTop + st::linkFont->ascent - (st::profileNameTop + st::profileNameFont->ascent); p.setPen(st::black->p); p.drawText(_left + st::profilePhotoSize + st::profileStatusLeft, top + st::profileStatusTop + st::linkFont->ascent, '@' + _peerUser->username); + } else if (_peerChannel && (_peerChannel->isPublic() || _amCreator)) { + addbyname = st::profileStatusTop + st::linkFont->ascent - (st::profileNameTop + st::profileNameFont->ascent); } - p.setPen((_peerUser && App::onlineColorUse(_peerUser, l_time) ? st::profileOnlineColor : st::profileOfflineColor)->p); - p.drawText(_left + st::profilePhotoSize + st::profileStatusLeft, top + addbyname + st::profileStatusTop + st::linkFont->ascent, _onlineText); - if (_amCreator && ((_peerChat && !_peerChat->invitationUrl.isEmpty()) || (_peerChannel && !_peerChannel->invitationUrl.isEmpty()))) { - if (!_peerChannel || !_peerChannel->isPublic()) { - p.setPen(st::black->p); - p.drawText(_left + st::profilePhotoSize + st::profilePhoneLeft, _createInvitationLink.y() + st::linkFont->ascent, lang(lng_group_invite_link)); - } + if (!_peerChannel || (!_amCreator && !_peerChannel->amEditor() && !_peerChannel->amModerator())) { + p.setPen((_peerUser && App::onlineColorUse(_peerUser, l_time) ? st::profileOnlineColor : st::profileOfflineColor)->p); + p.drawText(_left + st::profilePhotoSize + st::profileStatusLeft, top + addbyname + st::profileStatusTop + st::linkFont->ascent, _onlineText); } if (!_cancelPhoto.isHidden()) { p.setPen(st::profileOfflineColor->p); - p.drawText(_left + st::profilePhotoSize + st::profilePhoneLeft, _cancelPhoto.y() + addbyname + st::linkFont->ascent, lang(lng_settings_uploading_photo)); + p.drawText(_left + st::profilePhotoSize + st::profilePhoneLeft, _cancelPhoto.y() + st::linkFont->ascent, lang(lng_settings_uploading_photo)); } if (!_errorText.isEmpty()) { p.setFont(st::setErrFont->f); p.setPen(st::setErrColor->p); - p.drawText(_left + st::profilePhotoSize + st::profilePhoneLeft, _cancelPhoto.y() + addbyname + st::profilePhoneFont->ascent, _errorText); + p.drawText(_left + st::profilePhotoSize + st::profilePhoneLeft, _cancelPhoto.y() + st::profilePhoneFont->ascent, _errorText); } if (!_phoneText.isEmpty()) { p.setPen(st::black->p); @@ -702,20 +722,12 @@ void ProfileInner::paintEvent(QPaintEvent *e) { if (!_peerChannel || _amCreator) { top += _shareContact.height(); } - if (_peerChannel && (_amCreator || _peerChannel->isPublic())) { - if (!_amCreator) { - top += st::setLittleSkip; - } else { - top += st::setSectionSkip; - } - top += _editLink.height(); - } // about if (!_about.isEmpty()) { p.setFont(st::profileHeaderFont->f); p.setPen(st::profileHeaderColor->p); - p.drawText(_left + st::profileHeaderLeft, top + st::profileHeaderTop + st::profileHeaderFont->ascent, lang(lng_profile_about_section)); + p.drawText(_left + st::profileHeaderLeft, top + st::profileHeaderTop + st::profileHeaderFont->ascent, lang(_peerChannel ? lng_profile_description_section : lng_profile_about_section)); top += st::profileHeaderSkip; _about.draw(p, _left, top, _width); @@ -728,6 +740,17 @@ void ProfileInner::paintEvent(QPaintEvent *e) { p.drawText(_left + st::profileHeaderLeft, top + st::profileHeaderTop + st::profileHeaderFont->ascent, lang(lng_profile_settings_section)); top += st::profileHeaderSkip; + // invite link stuff + if (_amCreator && (!_peerChannel || !_peerChannel->isPublic())) { + if ((_peerChat && !_peerChat->invitationUrl.isEmpty()) || (_peerChannel && !_peerChannel->invitationUrl.isEmpty())) { + p.setPen(st::black); + p.setFont(st::linkFont); + p.drawText(_left, _invitationLink.y() + st::linkFont->ascent, lang(lng_group_invite_link)); + top += _invitationLink.height() + st::setLittleSkip; + } + top += _createInvitationLink.height() + st::setSectionSkip; + } + top += _enableNotifications.height(); // shared media @@ -764,7 +787,7 @@ void ProfileInner::paintEvent(QPaintEvent *e) { if (_peerUser || _peerChat) { top += st::setLittleSkip + _clearHistory.height(); } - if (_peerUser || _peerChat || !_amCreator) { + if (_peerUser || _peerChat || (_peerChannel->amIn() && !_amCreator)) { top += st::setLittleSkip + _deleteConversation.height(); } if (_peerUser && peerToUser(_peerUser->id) != MTP::authedId()) { @@ -874,7 +897,7 @@ void ProfileInner::updateSelected() { if (_peerUser || _peerChat) { partfrom = _clearHistory.y() + _clearHistory.height(); } - if (_peerUser || _peerChat || !_amCreator) { + if (_peerUser || _peerChat || (_peerChannel->amIn() && !_amCreator)) { partfrom = _deleteConversation.y() + _deleteConversation.height(); } partfrom += st::profileHeaderSkip; @@ -1075,16 +1098,15 @@ void ProfileInner::resizeEvent(QResizeEvent *e) { // profile top += st::profilePadding.top(); + int32 addbyname = 0; + if (_peerChannel && (_amCreator || _peerChannel->isPublic())) { + _username.move(_left + st::profilePhotoSize + st::profileStatusLeft, top + st::profileStatusTop); + addbyname = st::profileStatusTop + st::linkFont->ascent - (st::profileNameTop + st::profileNameFont->ascent); + } + _members.move(_left + st::profilePhotoSize + st::profileStatusLeft, top + addbyname + st::profileStatusTop); + addbyname = st::profileStatusTop + st::linkFont->ascent - (st::profileNameTop + st::profileNameFont->ascent); + _admins.move(_left + st::profilePhotoSize + st::profileStatusLeft, top + 2 * addbyname + st::profileStatusTop); if (_amCreator) { - if ((_peerChat && _peerChat->invitationUrl.isEmpty()) || (_peerChannel && _peerChannel->invitationUrl.isEmpty())) { - _createInvitationLink.move(_left + st::profilePhotoSize + st::profilePhoneLeft, top + st::profilePhoneTop); - } else { - _createInvitationLink.move(_left + _width - _createInvitationLink.width(), top + st::profilePhoneTop); - } - if (!_invitationText.isEmpty()) { - _invitationLink.setText(st::linkFont->m.elidedText(_invitationText, Qt::ElideRight, _width - st::profilePhotoSize - st::profilePhoneLeft)); - } - _invitationLink.move(_left + st::profilePhotoSize + st::profilePhoneLeft, top + st::profilePhoneTop + st::linkFont->height * 1.2); _cancelPhoto.move(_left + _width - _cancelPhoto.width(), top + st::profilePhotoSize - st::linkFont->height); } else { _cancelPhoto.move(_left + _width - _cancelPhoto.width(), top + st::profilePhoneTop); @@ -1105,20 +1127,6 @@ void ProfileInner::resizeEvent(QResizeEvent *e) { if (!_peerChannel || _amCreator) { top += _shareContact.height(); } - if (_peerChannel && (_amCreator || _peerChannel->isPublic())) { - if (!_amCreator) { - top += st::setLittleSkip; - } else { - top += st::setSectionSkip; - } - if (_peerChannel->isPublic()) { - _username.move(_left, top); - _editLink.move(_left + _width - _editLink.width(), top); - } else { - _editLink.move(_left, top); - } - top += _editLink.height(); - } // about if (!_about.isEmpty()) { @@ -1130,6 +1138,23 @@ void ProfileInner::resizeEvent(QResizeEvent *e) { // settings top += st::profileHeaderSkip; + + // invite link stuff + int32 _inviteLinkTextWidth(st::linkFont->m.width(lang(lng_group_invite_link)) + st::linkFont->spacew); + if (_amCreator && (!_peerChannel || !_peerChannel->isPublic())) { + if (!_invitationText.isEmpty()) { + _invitationLink.setText(st::linkFont->m.elidedText(_invitationText, Qt::ElideRight, _width - _inviteLinkTextWidth)); + } + if ((_peerChat && !_peerChat->invitationUrl.isEmpty()) || (_peerChannel && !_peerChannel->invitationUrl.isEmpty())) { + _invitationLink.move(_left + _inviteLinkTextWidth, top); + top += _invitationLink.height() + st::setLittleSkip; + _createInvitationLink.move(_left, top); + } else { + _createInvitationLink.move(_left, top); + } + top += _createInvitationLink.height() + st::setSectionSkip; + } + _enableNotifications.move(_left, top); top += _enableNotifications.height(); // shared media @@ -1157,7 +1182,7 @@ void ProfileInner::resizeEvent(QResizeEvent *e) { if (_peerUser || _peerChat) { _clearHistory.move(_left, top); top += _clearHistory.height() + st::setLittleSkip; } - if (_peerUser || _peerChat || !_amCreator) { + if (_peerUser || _peerChat || (_peerChannel->amIn() && !_amCreator)) { _deleteConversation.move(_left, top); top += _deleteConversation.height(); } if (_peerUser && peerToUser(_peerUser->id) != MTP::authedId()) { @@ -1288,8 +1313,10 @@ int32 ProfileInner::countMinHeight() { } else if (_peerChannel) { if (_amCreator) { h = _deleteChannel.y() + _deleteChannel.height() + st::profileHeaderSkip; - } else { + } else if (_peerChannel->amIn()) { h = _deleteConversation.y() + _deleteConversation.height() + st::profileHeaderSkip; + } else { + h = _searchInPeer.y() + _searchInPeer.height() + st::profileHeaderSkip; } } return h; @@ -1309,7 +1336,7 @@ void ProfileInner::showAll() { } else { _clearHistory.hide(); } - if (_peerUser || _peerChat || !_amCreator) { + if (_peerUser || _peerChat || (_peerChannel->amIn() && !_amCreator)) { _deleteConversation.show(); } else { _deleteConversation.hide(); @@ -1339,8 +1366,9 @@ void ProfileInner::showAll() { _blockUser.hide(); } _deleteChannel.hide(); - _editLink.hide(); _username.hide(); + _members.hide(); + _admins.hide(); } else if (_peerChat) { _sendMessage.hide(); _shareContact.hide(); @@ -1378,8 +1406,9 @@ void ProfileInner::showAll() { } _blockUser.hide(); _deleteChannel.hide(); - _editLink.hide(); _username.hide(); + _members.hide(); + _admins.hide(); } else if (_peerChannel) { _sendMessage.hide(); _shareContact.hide(); @@ -1387,7 +1416,6 @@ void ProfileInner::showAll() { if (_peerChannel->isForbidden) { _uploadPhoto.hide(); _cancelPhoto.hide(); - _addParticipant.hide(); _createInvitationLink.hide(); _invitationLink.hide(); } else { @@ -1413,25 +1441,26 @@ void ProfileInner::showAll() { _createInvitationLink.hide(); _invitationLink.hide(); } - if (_amCreator) { - _addParticipant.show(); - } else { - _addParticipant.hide(); - } } + _addParticipant.hide(); _blockUser.hide(); if (_amCreator) { _deleteChannel.show(); - _editLink.show(); } else { _deleteChannel.hide(); - _editLink.hide(); } - if (_peerChannel->isPublic()) { + if (_peerChannel->isPublic() || _amCreator) { _username.show(); } else { _username.hide(); } + if (_amCreator || _peerChannel->amEditor() || _peerChannel->amModerator()) { + _members.show(); + _admins.show(); + } else { + _members.hide(); + _admins.hide(); + } } _enableNotifications.show(); updateNotifySettings(); diff --git a/Telegram/SourceFiles/profilewidget.h b/Telegram/SourceFiles/profilewidget.h index b67795a26..667604e3d 100644 --- a/Telegram/SourceFiles/profilewidget.h +++ b/Telegram/SourceFiles/profilewidget.h @@ -110,11 +110,13 @@ public slots: void onCreateInvitationLinkSure(); void onPublicLink(); + void onMembers(); + void onAdmins(); + void onFullPeerUpdated(PeerData *peer); void onBotSettings(); void onBotHelp(); - void onEditPublicLink(); private: @@ -146,7 +148,7 @@ private: FlatButton _sendMessage, _shareContact, _inviteToGroup; LinkButton _cancelPhoto, _createInvitationLink, _invitationLink; QString _invitationText; - LinkButton _botSettings, _botHelp, _username, _editLink; + LinkButton _botSettings, _botHelp, _username, _members, _admins; Text _about; int32 _aboutTop, _aboutHeight; diff --git a/Telegram/SourceFiles/pspecific_wnd.cpp b/Telegram/SourceFiles/pspecific_wnd.cpp index 51feeda62..dd53fdacb 100644 --- a/Telegram/SourceFiles/pspecific_wnd.cpp +++ b/Telegram/SourceFiles/pspecific_wnd.cpp @@ -2107,7 +2107,6 @@ bool psShowOpenWithMenu(int x, int y, const QString &file) { if (sel > 0) { if (sel <= handlers.size()) { IDataObject *dataObj = 0; - IEnumAssocHandlers *assocHandlers = 0; if (SUCCEEDED(pItem->BindToHandler(nullptr, BHID_DataObject, IID_PPV_ARGS(&dataObj))) && dataObj) { handlers.at(sel - 1).handler->Invoke(dataObj); dataObj->Release(); diff --git a/Telegram/SourceFiles/structs.cpp b/Telegram/SourceFiles/structs.cpp index ab15f05fa..6f2a9d304 100644 --- a/Telegram/SourceFiles/structs.cpp +++ b/Telegram/SourceFiles/structs.cpp @@ -129,7 +129,17 @@ void PeerData::updateName(const QString &newName, const QString &newNameOrPhone, asUser()->username = newUsername; asUser()->setNameOrPhone(newNameOrPhone); } else if (isChannel()) { - asChannel()->username = newUsername; + if (asChannel()->username != newUsername) { + asChannel()->username = newUsername; + if (newUsername.isEmpty()) { + asChannel()->flags &= ~MTPDchannel::flag_username; + } else { + asChannel()->flags |= MTPDchannel::flag_username; + } + if (App::main()) { + App::main()->peerUsernameChanged(this); + } + } } Names oldNames = names; @@ -207,7 +217,7 @@ void UserData::setName(const QString &first, const QString &last, const QString firstName = first; lastName = last; } - updateName(lastName.isEmpty() ? firstName : (firstName + ' ' + lastName), phoneName, usern); + updateName(lastName.isEmpty() ? firstName : lng_full_name(lt_first_name, firstName, lt_last_name, lastName), phoneName, usern); } if (updUsername) { if (App::main()) { @@ -383,20 +393,10 @@ void ChannelData::setName(const QString &newName, const QString &usern) { bool updName = !newName.isEmpty(), updUsername = (username != usern); updateName(newName.isEmpty() ? name : newName, QString(), usern); - if (updUsername) { - if (usern.isEmpty()) { - flags &= ~MTPDchannel::flag_username; - } else { - flags |= MTPDchannel::flag_username; - } - if (App::main()) { - App::main()->peerUsernameChanged(this); - } - } } -void ChannelData::updateFull() { - if (!_lastFullUpdate || getms(true) > _lastFullUpdate + UpdateFullChannelTimeout) { +void ChannelData::updateFull(bool force) { + if (!_lastFullUpdate || force || getms(true) > _lastFullUpdate + UpdateFullChannelTimeout) { App::api()->requestFullPeer(this); if (!amCreator() && !inviter) App::api()->requestSelfParticipant(this); } @@ -959,7 +959,7 @@ id(id), type(type), url(url), displayUrl(displayUrl), siteName(siteName), title( void PeerLink::onClick(Qt::MouseButton button) const { if (button == Qt::LeftButton && App::main()) { if (peer() && peer()->isChannel() && App::main()->historyPeer() != peer()) { - if (!peer()->asChannel()->isPublic() && (peer()->asChannel()->isForbidden || peer()->asChannel()->haveLeft() || peer()->asChannel()->wasKicked())) { + if (!peer()->asChannel()->isPublic() && !peer()->asChannel()->amIn()) { App::wnd()->showLayer(new ConfirmBox(lang(lng_channel_not_accessible), true)); } else { App::main()->showPeerHistory(peer()->id, ShowAtUnreadMsgId); diff --git a/Telegram/SourceFiles/structs.h b/Telegram/SourceFiles/structs.h index 6ed1ef8d9..e36a1a1c7 100644 --- a/Telegram/SourceFiles/structs.h +++ b/Telegram/SourceFiles/structs.h @@ -451,13 +451,13 @@ private: class ChannelData : public PeerData { public: - ChannelData(const PeerId &id) : PeerData(id), access(0), inputChannel(MTP_inputChannel(MTP_int(bareId()), MTP_long(0))), count(0), date(0), version(0), isForbidden(true), botStatus(-1), inviter(0), _lastFullUpdate(0) { + ChannelData(const PeerId &id) : PeerData(id), access(0), inputChannel(MTP_inputChannel(MTP_int(bareId()), MTP_long(0))), count(1), adminsCount(1), date(0), version(0), isForbidden(true), botStatus(-1), inviter(0), _lastFullUpdate(0) { setName(QString(), QString()); } void setPhoto(const MTPChatPhoto &photo, const PhotoId &phId = UnknownPeerPhotoId); void setName(const QString &name, const QString &username); - void updateFull(); + void updateFull(bool force = false); void fullUpdated(); uint64 access; @@ -466,7 +466,7 @@ public: QString username, about; - int32 count; + int32 count, adminsCount; int32 date; int32 version; int32 flags; @@ -491,13 +491,16 @@ public: bool wasKicked() const { return flags & MTPDchannel_flag_was_kicked; } + bool amIn() const { + return !isForbidden && !haveLeft() && !wasKicked(); + } bool canPublish() const { return amCreator() || amEditor(); } - bool amParticipant() const { - return canPublish() || (!haveLeft() && !wasKicked()); - } bool isForbidden; + bool isVerified() const { + return flags & MTPDchannel_flag_is_verified; + } int32 botStatus; // -1 - no bots, 0 - unknown, 1 - one bot, that sees all history, 2 - other // ImagePtr photoFull;