├── .github └── workflows │ └── ci.yml ├── .gitignore ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro ├── schemas │ └── io.github.a13e300.ro_tieba.db.AppDataBase │ │ ├── 1.json │ │ ├── 2.json │ │ └── 3.json └── src │ ├── debug │ └── res │ │ └── values │ │ └── strings.xml │ └── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── java │ └── io │ │ └── github │ │ └── a13e300 │ │ └── ro_tieba │ │ ├── App.kt │ │ ├── BaseActivity.kt │ │ ├── BaseFragment.kt │ │ ├── Constants.kt │ │ ├── Emotions.kt │ │ ├── Logger.kt │ │ ├── MainActivity.kt │ │ ├── account │ │ └── AccountManager.kt │ │ ├── api │ │ ├── TiebaApiError.kt │ │ ├── TiebaClient.kt │ │ ├── TiebaJsonAPI.kt │ │ ├── TiebaLoginAPI.kt │ │ ├── TiebaLoginClient.kt │ │ ├── TiebaProtobufAPI.kt │ │ ├── TiebaWebAPI.kt │ │ ├── WebAPIResultConverter.kt │ │ ├── adapters │ │ │ ├── IntBooleanAdapter.kt │ │ │ ├── IntStringAdapter.kt │ │ │ └── NullAdapter.kt │ │ ├── json │ │ │ ├── GetFollowForums.kt │ │ │ ├── LoginInfo.kt │ │ │ ├── SearchForumPost.kt │ │ │ ├── TiebaApiErrorInfo.kt │ │ │ └── UserPostResponse.kt │ │ ├── protobuf │ │ │ ├── FrsPageSortType.kt │ │ │ └── GeneralTabListSortType.kt │ │ └── web │ │ │ ├── GetFid.kt │ │ │ ├── SearchForum.kt │ │ │ ├── SearchThread.kt │ │ │ ├── SearchUser.kt │ │ │ └── WebApiResult.kt │ │ ├── arch │ │ └── Event.kt │ │ ├── cache │ │ └── CachedThread.kt │ │ ├── db │ │ ├── AccountDao.kt │ │ ├── AppDataBase.kt │ │ └── HistoryDao.kt │ │ ├── history │ │ └── HistoryManager.kt │ │ ├── misc │ │ ├── BounceScrollHelper.kt │ │ ├── ContainerBehavior.kt │ │ ├── EmojiSpan.kt │ │ ├── IconSpan.kt │ │ ├── MyChangeImageTransform.kt │ │ ├── MyURLSpan.kt │ │ ├── OnPreImeBackPressedListener.kt │ │ ├── PauseLoadOnQuickScrollListener.kt │ │ ├── PhotoDescScrollBehavior.kt │ │ └── RoundSpan.kt │ │ ├── models │ │ ├── Comment.kt │ │ ├── Content.kt │ │ ├── Forum.kt │ │ ├── ForumSortType.kt │ │ ├── ForumTab.kt │ │ ├── IPost.kt │ │ ├── Photo.kt │ │ ├── Post.kt │ │ ├── PostId.kt │ │ ├── Reply.kt │ │ ├── SearchedPost.kt │ │ ├── ThreadType.kt │ │ ├── TiebaThread.kt │ │ └── User.kt │ │ ├── serializer │ │ ├── SearchHistorySerializer.kt │ │ └── Settings.kt │ │ ├── ui │ │ ├── DetailDialogFragment.kt │ │ ├── HomePageFragment.kt │ │ ├── account │ │ │ └── AccountFragment.kt │ │ ├── comment │ │ │ ├── CommentFragment.kt │ │ │ └── CommentViewModel.kt │ │ ├── dashboard │ │ │ ├── DashboardFragment.kt │ │ │ └── DashboardViewModel.kt │ │ ├── forum │ │ │ ├── ForumFragment.kt │ │ │ └── ForumViewModel.kt │ │ ├── history │ │ │ ├── HistoryFragment.kt │ │ │ └── HistoryViewModel.kt │ │ ├── home │ │ │ ├── HomeFragment.kt │ │ │ └── HomeViewModel.kt │ │ ├── login │ │ │ └── LoginFragment.kt │ │ ├── photo │ │ │ ├── PhotoFragment.kt │ │ │ └── PhotoViewModel.kt │ │ ├── profile │ │ │ ├── ProfileForumsFragment.kt │ │ │ ├── ProfileFragment.kt │ │ │ ├── ProfileReplyFragment.kt │ │ │ ├── ProfileThreadsFragment.kt │ │ │ └── ProfileViewModel.kt │ │ ├── search │ │ │ ├── SearchForumFragment.kt │ │ │ ├── SearchFragment.kt │ │ │ ├── SearchPostFragment.kt │ │ │ ├── SearchUserFragment.kt │ │ │ └── SearchViewModel.kt │ │ ├── settings │ │ │ └── SettingsFragment.kt │ │ └── thread │ │ │ ├── ThreadFragment.kt │ │ │ └── ThreadViewModel.kt │ │ ├── utils │ │ ├── AnimUtils.kt │ │ ├── PhotoUtils.kt │ │ ├── SpanUtils.kt │ │ ├── UriUtils.kt │ │ └── Utils.kt │ │ └── view │ │ ├── BounceScrollView.kt │ │ ├── ContentTextView.kt │ │ ├── InPagerCoordinatorLayout.kt │ │ ├── ItemView.kt │ │ ├── MyImageFilterView.kt │ │ ├── MySearchView.kt │ │ └── PreImeBackInterceptorView.kt │ ├── protobuf │ ├── datastore │ │ ├── SearchHistory.proto │ │ └── Settings.proto │ └── tbclient │ │ ├── Abstract.proto │ │ ├── Agree.proto │ │ ├── CommitPersonalMsgReqIdl.proto │ │ ├── CommitPersonalMsgResIdl.proto │ │ ├── CommitReceivedPmsgReqIdl.proto │ │ ├── CommitReceivedPmsgResIdl.proto │ │ ├── CommonReq.proto │ │ ├── Error.proto │ │ ├── ForumList.proto │ │ ├── FrsPageReqIdl.proto │ │ ├── FrsPageResIdl.proto │ │ ├── FrsTabInfo.proto │ │ ├── GeneralTabListReqIdl.proto │ │ ├── GeneralTabListResIdl.proto │ │ ├── GetBawuInfoReqIdl.proto │ │ ├── GetBawuInfoResIdl.proto │ │ ├── GetDislikeListReqIdl.proto │ │ ├── GetDislikeListResIdl.proto │ │ ├── GetForumSquareReqIdl.proto │ │ ├── GetForumSquareResIdl.proto │ │ ├── GetGroupMsgReqIdl.proto │ │ ├── GetGroupMsgResIdl.proto │ │ ├── GetUserByTiebaUidReqIdl.proto │ │ ├── GetUserByTiebaUidResIdl.proto │ │ ├── GetUserInfoReqIdl.proto │ │ ├── GetUserInfoResIdl.proto │ │ ├── Media.proto │ │ ├── Page.proto │ │ ├── PbContent.proto │ │ ├── PbFloorReqIdl.proto │ │ ├── PbFloorResIdl.proto │ │ ├── PbPageReqIdl.proto │ │ ├── PbPageResIdl.proto │ │ ├── PollInfo.proto │ │ ├── Post.proto │ │ ├── PostInfoList.proto │ │ ├── ProfileReqIdl.proto │ │ ├── ProfileResIdl.proto │ │ ├── PushNotifyResIdl.proto │ │ ├── ReplyMeReqIdl.proto │ │ ├── ReplyMeResIdl.proto │ │ ├── SearchPostForumReqIdl.proto │ │ ├── SearchPostForumResIdl.proto │ │ ├── SimpleForum.proto │ │ ├── SubPostList.proto │ │ ├── ThreadInfo.proto │ │ ├── UpdateClientInfoReqIdl.proto │ │ ├── UpdateClientInfoResIdl.proto │ │ ├── User.proto │ │ ├── UserPostReqIdl.proto │ │ └── UserPostResIdl.proto │ └── res │ ├── anim │ ├── fade_enter_anim.xml │ ├── fade_exit_anim.xml │ ├── fade_pop_enter_anim.xml │ ├── fade_pop_exit_anim.xml │ ├── nav_default_enter_anim.xml │ ├── nav_default_exit_anim.xml │ ├── nav_default_pop_enter_anim.xml │ ├── nav_default_pop_exit_anim.xml │ ├── slide_in_down.xml │ ├── slide_in_up.xml │ ├── slide_out_down.xml │ └── slide_out_up.xml │ ├── drawable │ ├── background.xml │ ├── background_with_divider.xml │ ├── emoji_bearchildren_01.webp │ ├── emoji_bearchildren_02.webp │ ├── emoji_bearchildren_03.webp │ ├── emoji_bearchildren_04.webp │ ├── emoji_bearchildren_05.webp │ ├── emoji_bearchildren_06.webp │ ├── emoji_bearchildren_07.webp │ ├── emoji_bearchildren_08.webp │ ├── emoji_bearchildren_09.webp │ ├── emoji_bearchildren_10.webp │ ├── emoji_bearchildren_11.webp │ ├── emoji_bearchildren_12.webp │ ├── emoji_bearchildren_13.webp │ ├── emoji_bearchildren_14.webp │ ├── emoji_bearchildren_15.webp │ ├── emoji_bearchildren_16.webp │ ├── emoji_bearchildren_17.webp │ ├── emoji_bearchildren_18.webp │ ├── emoji_bearchildren_19.webp │ ├── emoji_bearchildren_20.webp │ ├── emoji_image_emoticon.png │ ├── emoji_image_emoticon10.png │ ├── emoji_image_emoticon100.png │ ├── emoji_image_emoticon101.png │ ├── emoji_image_emoticon102.png │ ├── emoji_image_emoticon103.png │ ├── emoji_image_emoticon104.png │ ├── emoji_image_emoticon105.png │ ├── emoji_image_emoticon106.png │ ├── emoji_image_emoticon107.png │ ├── emoji_image_emoticon108.png │ ├── emoji_image_emoticon109.png │ ├── emoji_image_emoticon11.png │ ├── emoji_image_emoticon110.png │ ├── emoji_image_emoticon111.png │ ├── emoji_image_emoticon112.png │ ├── emoji_image_emoticon113.png │ ├── emoji_image_emoticon114.png │ ├── emoji_image_emoticon115.png │ ├── emoji_image_emoticon116.png │ ├── emoji_image_emoticon117.png │ ├── emoji_image_emoticon118.png │ ├── emoji_image_emoticon119.png │ ├── emoji_image_emoticon12.png │ ├── emoji_image_emoticon120.png │ ├── emoji_image_emoticon121.png │ ├── emoji_image_emoticon122.png │ ├── emoji_image_emoticon123.png │ ├── emoji_image_emoticon124.png │ ├── emoji_image_emoticon125.png │ ├── emoji_image_emoticon126.png │ ├── emoji_image_emoticon127.png │ ├── emoji_image_emoticon128.png │ ├── emoji_image_emoticon129.png │ ├── emoji_image_emoticon13.png │ ├── emoji_image_emoticon130.png │ ├── emoji_image_emoticon131.png │ ├── emoji_image_emoticon132.png │ ├── emoji_image_emoticon133.png │ ├── emoji_image_emoticon134.png │ ├── emoji_image_emoticon135.png │ ├── emoji_image_emoticon136.png │ ├── emoji_image_emoticon137.png │ ├── emoji_image_emoticon14.png │ ├── emoji_image_emoticon15.png │ ├── emoji_image_emoticon16.png │ ├── emoji_image_emoticon17.png │ ├── emoji_image_emoticon18.png │ ├── emoji_image_emoticon19.png │ ├── emoji_image_emoticon2.png │ ├── emoji_image_emoticon20.png │ ├── emoji_image_emoticon21.png │ ├── emoji_image_emoticon22.png │ ├── emoji_image_emoticon23.png │ ├── emoji_image_emoticon24.png │ ├── emoji_image_emoticon25.png │ ├── emoji_image_emoticon26.png │ ├── emoji_image_emoticon27.png │ ├── emoji_image_emoticon28.png │ ├── emoji_image_emoticon29.png │ ├── emoji_image_emoticon3.png │ ├── emoji_image_emoticon30.png │ ├── emoji_image_emoticon31.png │ ├── emoji_image_emoticon32.png │ ├── emoji_image_emoticon33.png │ ├── emoji_image_emoticon34.png │ ├── emoji_image_emoticon35.png │ ├── emoji_image_emoticon36.png │ ├── emoji_image_emoticon37.png │ ├── emoji_image_emoticon38.png │ ├── emoji_image_emoticon39.png │ ├── emoji_image_emoticon4.png │ ├── emoji_image_emoticon40.png │ ├── emoji_image_emoticon41.png │ ├── emoji_image_emoticon42.png │ ├── emoji_image_emoticon43.png │ ├── emoji_image_emoticon44.png │ ├── emoji_image_emoticon45.png │ ├── emoji_image_emoticon46.png │ ├── emoji_image_emoticon47.png │ ├── emoji_image_emoticon48.png │ ├── emoji_image_emoticon49.png │ ├── emoji_image_emoticon5.png │ ├── emoji_image_emoticon50.png │ ├── emoji_image_emoticon6.png │ ├── emoji_image_emoticon61.png │ ├── emoji_image_emoticon62.png │ ├── emoji_image_emoticon63.png │ ├── emoji_image_emoticon64.png │ ├── emoji_image_emoticon65.png │ ├── emoji_image_emoticon66.png │ ├── emoji_image_emoticon67.png │ ├── emoji_image_emoticon68.png │ ├── emoji_image_emoticon69.png │ ├── emoji_image_emoticon7.png │ ├── emoji_image_emoticon70.png │ ├── emoji_image_emoticon71.png │ ├── emoji_image_emoticon72.png │ ├── emoji_image_emoticon73.png │ ├── emoji_image_emoticon74.png │ ├── emoji_image_emoticon75.png │ ├── emoji_image_emoticon76.png │ ├── emoji_image_emoticon77.png │ ├── emoji_image_emoticon78.png │ ├── emoji_image_emoticon79.png │ ├── emoji_image_emoticon8.png │ ├── emoji_image_emoticon80.png │ ├── emoji_image_emoticon81.png │ ├── emoji_image_emoticon82.png │ ├── emoji_image_emoticon83.png │ ├── emoji_image_emoticon84.png │ ├── emoji_image_emoticon85.png │ ├── emoji_image_emoticon86.png │ ├── emoji_image_emoticon87.png │ ├── emoji_image_emoticon88.png │ ├── emoji_image_emoticon89.png │ ├── emoji_image_emoticon9.png │ ├── emoji_image_emoticon90.png │ ├── emoji_image_emoticon91.png │ ├── emoji_image_emoticon92.png │ ├── emoji_image_emoticon93.png │ ├── emoji_image_emoticon94.png │ ├── emoji_image_emoticon95.png │ ├── emoji_image_emoticon96.png │ ├── emoji_image_emoticon97.png │ ├── emoji_image_emoticon98.png │ ├── emoji_image_emoticon99.png │ ├── emoji_shoubai_emoji_face_01.webp │ ├── emoji_shoubai_emoji_face_02.webp │ ├── emoji_shoubai_emoji_face_03.webp │ ├── emoji_shoubai_emoji_face_04.webp │ ├── emoji_shoubai_emoji_face_05.webp │ ├── emoji_shoubai_emoji_face_06.webp │ ├── emoji_shoubai_emoji_face_07.webp │ ├── emoji_shoubai_emoji_face_08.webp │ ├── emoji_shoubai_emoji_face_09.webp │ ├── emoji_shoubai_emoji_face_10.webp │ ├── emoji_shoubai_emoji_face_100.webp │ ├── emoji_shoubai_emoji_face_101.webp │ ├── emoji_shoubai_emoji_face_102.webp │ ├── emoji_shoubai_emoji_face_103.webp │ ├── emoji_shoubai_emoji_face_104.webp │ ├── emoji_shoubai_emoji_face_105.webp │ ├── emoji_shoubai_emoji_face_106.webp │ ├── emoji_shoubai_emoji_face_11.webp │ ├── emoji_shoubai_emoji_face_12.webp │ ├── emoji_shoubai_emoji_face_13.webp │ ├── emoji_shoubai_emoji_face_14.webp │ ├── emoji_shoubai_emoji_face_15.webp │ ├── emoji_shoubai_emoji_face_16.webp │ ├── emoji_shoubai_emoji_face_17.webp │ ├── emoji_shoubai_emoji_face_18.webp │ ├── emoji_shoubai_emoji_face_19.webp │ ├── emoji_shoubai_emoji_face_20.webp │ ├── emoji_shoubai_emoji_face_21.webp │ ├── emoji_shoubai_emoji_face_22.webp │ ├── emoji_shoubai_emoji_face_23.webp │ ├── emoji_shoubai_emoji_face_24.webp │ ├── emoji_shoubai_emoji_face_25.webp │ ├── emoji_shoubai_emoji_face_26.webp │ ├── emoji_shoubai_emoji_face_27.webp │ ├── emoji_shoubai_emoji_face_28.webp │ ├── emoji_shoubai_emoji_face_29.webp │ ├── emoji_shoubai_emoji_face_30.webp │ ├── emoji_shoubai_emoji_face_31.webp │ ├── emoji_shoubai_emoji_face_32.webp │ ├── emoji_shoubai_emoji_face_33.webp │ ├── emoji_shoubai_emoji_face_34.webp │ ├── emoji_shoubai_emoji_face_35.webp │ ├── emoji_shoubai_emoji_face_36.webp │ ├── emoji_shoubai_emoji_face_37.webp │ ├── emoji_shoubai_emoji_face_38.webp │ ├── emoji_shoubai_emoji_face_39.webp │ ├── emoji_shoubai_emoji_face_40.webp │ ├── emoji_shoubai_emoji_face_41.webp │ ├── emoji_shoubai_emoji_face_42.webp │ ├── emoji_shoubai_emoji_face_43.webp │ ├── emoji_shoubai_emoji_face_44.webp │ ├── emoji_shoubai_emoji_face_45.webp │ ├── emoji_shoubai_emoji_face_46.webp │ ├── emoji_shoubai_emoji_face_47.webp │ ├── emoji_shoubai_emoji_face_48.webp │ ├── emoji_shoubai_emoji_face_49.webp │ ├── emoji_shoubai_emoji_face_50.webp │ ├── emoji_shoubai_emoji_face_51.webp │ ├── emoji_shoubai_emoji_face_52.webp │ ├── emoji_shoubai_emoji_face_53.webp │ ├── emoji_shoubai_emoji_face_54.webp │ ├── emoji_shoubai_emoji_face_55.webp │ ├── emoji_shoubai_emoji_face_56.webp │ ├── emoji_shoubai_emoji_face_57.webp │ ├── emoji_shoubai_emoji_face_58.webp │ ├── emoji_shoubai_emoji_face_59.webp │ ├── emoji_shoubai_emoji_face_60.webp │ ├── emoji_shoubai_emoji_face_61.webp │ ├── emoji_shoubai_emoji_face_62.webp │ ├── emoji_shoubai_emoji_face_63.webp │ ├── emoji_shoubai_emoji_face_64.png │ ├── emoji_shoubai_emoji_face_65.webp │ ├── emoji_shoubai_emoji_face_66.webp │ ├── emoji_shoubai_emoji_face_67.webp │ ├── emoji_shoubai_emoji_face_68.webp │ ├── emoji_shoubai_emoji_face_69.webp │ ├── emoji_shoubai_emoji_face_70.webp │ ├── emoji_shoubai_emoji_face_71.webp │ ├── emoji_shoubai_emoji_face_72.webp │ ├── emoji_shoubai_emoji_face_73.webp │ ├── emoji_shoubai_emoji_face_74.png │ ├── emoji_shoubai_emoji_face_75.webp │ ├── emoji_shoubai_emoji_face_76.webp │ ├── emoji_shoubai_emoji_face_77.webp │ ├── emoji_shoubai_emoji_face_78.webp │ ├── emoji_shoubai_emoji_face_79.webp │ ├── emoji_shoubai_emoji_face_80.webp │ ├── emoji_shoubai_emoji_face_81.png │ ├── emoji_shoubai_emoji_face_82.webp │ ├── emoji_shoubai_emoji_face_83.webp │ ├── emoji_shoubai_emoji_face_84.webp │ ├── emoji_shoubai_emoji_face_85.webp │ ├── emoji_shoubai_emoji_face_86.webp │ ├── emoji_shoubai_emoji_face_87.webp │ ├── emoji_shoubai_emoji_face_88.webp │ ├── emoji_shoubai_emoji_face_89.webp │ ├── emoji_shoubai_emoji_face_90.webp │ ├── emoji_shoubai_emoji_face_91.webp │ ├── emoji_shoubai_emoji_face_92.webp │ ├── emoji_shoubai_emoji_face_93.webp │ ├── emoji_shoubai_emoji_face_94.webp │ ├── emoji_shoubai_emoji_face_95.webp │ ├── emoji_shoubai_emoji_face_96.webp │ ├── emoji_shoubai_emoji_face_97.webp │ ├── emoji_shoubai_emoji_face_98.webp │ ├── emoji_shoubai_emoji_face_99.webp │ ├── ic_account.xml │ ├── ic_add.xml │ ├── ic_agree.xml │ ├── ic_back.xml │ ├── ic_comment.xml │ ├── ic_copy.xml │ ├── ic_dashboard_black_24dp.xml │ ├── ic_delete.xml │ ├── ic_disagree.xml │ ├── ic_down.xml │ ├── ic_download.xml │ ├── ic_error.xml │ ├── ic_history.xml │ ├── ic_home_black_24dp.xml │ ├── ic_idea.xml │ ├── ic_info.xml │ ├── ic_input.xml │ ├── ic_jump.xml │ ├── ic_launcher_background.xml │ ├── ic_launcher_foreground.xml │ ├── ic_link.xml │ ├── ic_location.xml │ ├── ic_notifications_black_24dp.xml │ ├── ic_ok.xml │ ├── ic_open.xml │ ├── ic_paste.xml │ ├── ic_refresh.xml │ ├── ic_search.xml │ ├── ic_see.xml │ ├── ic_settings.xml │ ├── ic_share.xml │ ├── ic_sort.xml │ ├── ic_time.xml │ └── ic_up.xml │ ├── layout │ ├── activity_main.xml │ ├── activity_search.xml │ ├── activity_thread.xml │ ├── dialog_account_info.xml │ ├── dialog_detail.xml │ ├── dialog_detail_item_content.xml │ ├── dialog_detail_item_title.xml │ ├── dialog_jump_page.xml │ ├── dialog_login_method.xml │ ├── fragment_account_item.xml │ ├── fragment_account_list.xml │ ├── fragment_comment.xml │ ├── fragment_comment_item.xml │ ├── fragment_dashboard.xml │ ├── fragment_forum.xml │ ├── fragment_forum_thread_item.xml │ ├── fragment_history.xml │ ├── fragment_history_forum_item.xml │ ├── fragment_history_post_item.xml │ ├── fragment_history_user_item.xml │ ├── fragment_home.xml │ ├── fragment_home_bar_item.xml │ ├── fragment_home_page.xml │ ├── fragment_login.xml │ ├── fragment_photo.xml │ ├── fragment_profile.xml │ ├── fragment_profile_followed_forums.xml │ ├── fragment_profile_forum_item.xml │ ├── fragment_profile_reply.xml │ ├── fragment_profile_reply_item.xml │ ├── fragment_profile_thread_item.xml │ ├── fragment_profile_threads.xml │ ├── fragment_search.xml │ ├── fragment_search_post.xml │ ├── fragment_search_post_item.xml │ ├── fragment_search_post_load_state.xml │ ├── fragment_search_result.xml │ ├── fragment_search_result_bar_item.xml │ ├── fragment_search_user.xml │ ├── fragment_search_user_item.xml │ ├── fragment_settings.xml │ ├── fragment_thread.xml │ ├── fragment_thread_bar.xml │ ├── fragment_thread_comment_preview.xml │ ├── fragment_thread_header.xml │ ├── fragment_thread_post_item.xml │ ├── image_content.xml │ ├── search_suggestion_item.xml │ ├── thread_list_footer.xml │ └── video_view.xml │ ├── menu │ ├── account_item_menu.xml │ ├── accounts_menu.xml │ ├── bottom_nav_menu.xml │ ├── comment_menu.xml │ ├── forum_menu.xml │ ├── forum_sort_menu.xml │ ├── history_item_menu.xml │ ├── history_menu.xml │ ├── home_menu.xml │ ├── photo_menu.xml │ ├── post_item_menu.xml │ ├── profile_menu.xml │ ├── search_order_menu.xml │ └── thread_menu.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── navigation │ ├── home_page_navigation.xml │ └── mobile_navigation.xml │ ├── values-night-v29 │ └── themes.xml │ ├── values-night │ ├── colors.xml │ └── themes.xml │ ├── values-v31 │ └── colors.xml │ ├── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── ic_launcher_background.xml │ ├── ids.xml │ ├── integers.xml │ ├── strings.xml │ ├── styles.xml │ └── themes.xml │ └── xml │ ├── backup_rules.xml │ ├── data_extraction_rules.xml │ ├── file_paths.xml │ └── preference.xml ├── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle.kts /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | keystore.properties 12 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | RoTieba Debug 4 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/Constants.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba 2 | 3 | const val DEFAULT_FORUM_AVATAR = "https://tb1.bdstatic.com/tb/cms/frs/bg/default_avatar20141017.jpg" -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/Logger.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba 2 | 3 | import android.util.Log 4 | 5 | object Logger { 6 | private const val TAG = "RoTieba" 7 | 8 | fun d(msg: String) { 9 | if (BuildConfig.DEBUG) 10 | Log.d(TAG, msg) 11 | } 12 | 13 | fun e(msg: String) { 14 | Log.e(TAG, msg) 15 | } 16 | 17 | fun e(msg: String, t: Throwable) { 18 | Log.e(TAG, msg, t) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/TiebaApiError.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api 2 | 3 | import java.io.IOException 4 | 5 | class TiebaApiError(val errno: Int, val msg: String?) : IOException() { 6 | override val message: String 7 | get() = "$errno: $msg" 8 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/TiebaLoginAPI.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api 2 | 3 | import io.github.a13e300.ro_tieba.api.json.LoginInfo 4 | import retrofit2.http.Field 5 | import retrofit2.http.FormUrlEncoded 6 | import retrofit2.http.POST 7 | 8 | interface TiebaLoginAPI { 9 | @FormUrlEncoded 10 | @POST("/c/s/login") 11 | suspend fun login(@Field("bdusstoken") bduss: String): LoginInfo 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/TiebaProtobufAPI.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api 2 | 3 | import okhttp3.MultipartBody 4 | import okhttp3.ResponseBody 5 | import retrofit2.http.Headers 6 | import retrofit2.http.Multipart 7 | import retrofit2.http.POST 8 | import retrofit2.http.Part 9 | 10 | interface TiebaProtobufAPI { 11 | @Headers("x_bd_data_type: protobuf") 12 | @Multipart 13 | @POST("/c/f/pb/page?cmd=302001") 14 | suspend fun getPosts(@Part part: MultipartBody.Part): ResponseBody 15 | 16 | @Headers("x_bd_data_type: protobuf") 17 | @Multipart 18 | @POST("/c/f/frs/page?cmd=301001") 19 | suspend fun getThreads(@Part part: MultipartBody.Part): ResponseBody 20 | 21 | @Headers("x_bd_data_type: protobuf") 22 | @Multipart 23 | @POST("/c/f/pb/floor?cmd=302002") 24 | suspend fun getComments(@Part part: MultipartBody.Part): ResponseBody 25 | 26 | @Headers("x_bd_data_type: protobuf") 27 | @Multipart 28 | @POST("/c/u/user/profile?cmd=303012") 29 | suspend fun getUserProfile(@Part part: MultipartBody.Part): ResponseBody 30 | 31 | @Headers("x_bd_data_type: protobuf") 32 | @Multipart 33 | @POST("/c/f/frs/generalTabList?cmd=309622") 34 | suspend fun getThreadsInTab(@Part part: MultipartBody.Part): ResponseBody 35 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/TiebaWebAPI.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api 2 | 3 | import io.github.a13e300.ro_tieba.api.web.GetFid 4 | import io.github.a13e300.ro_tieba.api.web.SearchForum 5 | import io.github.a13e300.ro_tieba.api.web.SearchThread 6 | import io.github.a13e300.ro_tieba.api.web.SearchUser 7 | import retrofit2.Call 8 | import retrofit2.http.FormUrlEncoded 9 | import retrofit2.http.GET 10 | import retrofit2.http.Query 11 | 12 | interface TiebaWebAPI { 13 | @FormUrlEncoded 14 | @GET("/f/commit/share/fnameShareApi?ie=utf-8") 15 | fun getFid(@Query("fname") forumName: String): Call 16 | 17 | @GET("/mo/q/search/forum") 18 | suspend fun searchForum( 19 | @Query("word") keyword: String 20 | ): SearchForum 21 | 22 | @GET("/mo/q/search/thread") 23 | suspend fun searchThread( 24 | @Query("word") keyword: String, 25 | @Query("pn") page: Int, 26 | @Query("st") order: String, // 0 -> old, 1 -> new, 2 -> relevant 27 | @Query("tt") filter: String, // 2 -> all, 1 -> thread 28 | @Query("ct") ct: String = "2" 29 | ): SearchThread 30 | 31 | @GET("/mo/q/search/user") 32 | suspend fun searchUser( 33 | @Query("word") keyword: String 34 | ): SearchUser 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/adapters/IntBooleanAdapter.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.adapters 2 | 3 | import com.google.gson.JsonDeserializationContext 4 | import com.google.gson.JsonDeserializer 5 | import com.google.gson.JsonElement 6 | import com.google.gson.JsonPrimitive 7 | import java.lang.reflect.Type 8 | 9 | class IntBooleanAdapter : JsonDeserializer { 10 | override fun deserialize( 11 | json: JsonElement, 12 | typeOfT: Type?, 13 | context: JsonDeserializationContext 14 | ): Any? { 15 | if (json is JsonPrimitive) { 16 | if (json.isBoolean) 17 | return json.asBoolean 18 | else if (json.isNumber) 19 | return json.asInt != 0 20 | else if (json.isString) 21 | return json.asString == "1" 22 | return context.deserialize(json, typeOfT) 23 | } 24 | return null 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/adapters/IntStringAdapter.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.adapters 2 | 3 | import com.google.gson.JsonDeserializationContext 4 | import com.google.gson.JsonDeserializer 5 | import com.google.gson.JsonElement 6 | import com.google.gson.JsonPrimitive 7 | import java.lang.reflect.Type 8 | 9 | class IntStringAdapter : JsonDeserializer { 10 | override fun deserialize( 11 | json: JsonElement, 12 | typeOfT: Type?, 13 | context: JsonDeserializationContext 14 | ): Any? { 15 | if (json is JsonPrimitive) { 16 | if (json.isNumber) { 17 | if (typeOfT == Integer.TYPE || typeOfT == Integer::class.java) 18 | return json.asInt 19 | else if (typeOfT == java.lang.Long.TYPE || typeOfT == java.lang.Long::class.java) 20 | return json.asLong 21 | } else if (json.isString) { 22 | if (typeOfT == Integer.TYPE || typeOfT == Integer::class.java) 23 | return json.asString.toInt() 24 | else if (typeOfT == java.lang.Long.TYPE || typeOfT == java.lang.Long::class.java) 25 | return json.asString.toLong() 26 | } 27 | return context.deserialize(json, typeOfT) 28 | } 29 | return null 30 | } 31 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/adapters/NullAdapter.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.adapters 2 | 3 | import com.google.gson.JsonDeserializationContext 4 | import com.google.gson.JsonDeserializer 5 | import com.google.gson.JsonElement 6 | import java.lang.reflect.Type 7 | 8 | class NullAdapter : JsonDeserializer { 9 | override fun deserialize( 10 | json: JsonElement, 11 | typeOfT: Type?, 12 | context: JsonDeserializationContext 13 | ): Any? { 14 | if (json.isJsonObject) { 15 | return context.deserialize(json, typeOfT) 16 | } 17 | return null 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/json/GetFollowForums.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.json 2 | 3 | import com.google.gson.annotations.JsonAdapter 4 | import com.google.gson.annotations.SerializedName 5 | import io.github.a13e300.ro_tieba.api.adapters.NullAdapter 6 | 7 | data class GetFollowForums( 8 | @SerializedName("has_more") 9 | val hasMore: Boolean, 10 | @JsonAdapter(NullAdapter::class) 11 | @SerializedName("forum_list") 12 | val forumList: ForumList?, 13 | ) { 14 | data class ForumList( 15 | @SerializedName("non-gconforum") 16 | val nonGconForum: List?, 17 | @SerializedName("gconforum") 18 | val gconForum: List? 19 | ) 20 | 21 | data class Forum( 22 | val id: String, 23 | val name: String, 24 | @SerializedName("level_id") 25 | val levelId: String, 26 | val avatar: String, 27 | val slogan: String 28 | ) 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/json/LoginInfo.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.json 2 | 3 | data class LoginInfo( 4 | val user: UserInfo, 5 | val anti: AntiInfo 6 | ) { 7 | data class UserInfo( 8 | val id: String, 9 | val name: String, 10 | val portrait: String 11 | ) 12 | 13 | data class AntiInfo( 14 | val tbs: String 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/json/TiebaApiErrorInfo.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.json 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class TiebaApiErrorInfo( 6 | @SerializedName("error_code", alternate = ["no", "errno"]) 7 | val errorCode: String, 8 | @SerializedName("error_msg", alternate = ["error", "errmsg"]) 9 | val errorMsg: String? 10 | ) -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/protobuf/FrsPageSortType.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.protobuf 2 | 3 | /** 4 | * https://github.com/Starry-OvO/aiotieba/blob/ed8867f6ac73b523389dd1dcbdd4b5f62a16ff81/aiotieba/client.py#L494 5 | * 排序方式 对于有热门分区的贴吧 0热门排序 1按发布时间 2关注的人 34热门排序 >=5是按回复时间 6 | * 对于无热门分区的贴吧 0按回复时间 1按发布时间 2关注的人 >=3按回复时间 7 | */ 8 | enum class FrsPageSortType(val value: Int) { 9 | HOT(0), 10 | CREATE_TIME(1), 11 | FOLLOW(2), 12 | REPLY_TIME(5) 13 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/protobuf/GeneralTabListSortType.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.protobuf 2 | 3 | enum class GeneralTabListSortType(val value: Int) { 4 | REPLY_TIME(0), 5 | CREATE_TIME(1) 6 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/web/GetFid.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.web 2 | 3 | data class GetFid( 4 | val data: Data 5 | ) { 6 | data class Data( 7 | val fid: String 8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/web/SearchForum.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.web 2 | 3 | import com.google.gson.annotations.JsonAdapter 4 | import com.google.gson.annotations.SerializedName 5 | import io.github.a13e300.ro_tieba.api.adapters.NullAdapter 6 | 7 | data class SearchForum( 8 | @JsonAdapter(NullAdapter::class) 9 | val exactMatch: ForumInfo?, 10 | val fuzzyMatch: List 11 | ) { 12 | data class ForumInfo( 13 | @SerializedName("forum_id") 14 | val forumId: Int, 15 | @SerializedName("forum_name") 16 | val forumName: String, 17 | val avatar: String, 18 | val intro: String?, 19 | val slogan: String? 20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/web/SearchUser.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.web 2 | 3 | import com.google.gson.annotations.JsonAdapter 4 | import com.google.gson.annotations.SerializedName 5 | import io.github.a13e300.ro_tieba.api.adapters.NullAdapter 6 | 7 | data class SearchUser( 8 | @JsonAdapter(NullAdapter::class) 9 | val exactMatch: UserInfo?, 10 | val fuzzyMatch: List 11 | ) { 12 | data class UserInfo( 13 | val id: Long, 14 | val intro: String, 15 | @SerializedName("user_nickname") 16 | val nickname: String, 17 | val name: String?, // empty! 18 | @SerializedName("show_nickname") 19 | val showNickName: String, 20 | @SerializedName("portrait") 21 | val avatar: String, 22 | @SerializedName("encry_uid") 23 | val portrait: String, 24 | @SerializedName("has_concerned") 25 | val concerned: Int, 26 | @SerializedName("fans_num") 27 | val fansNum: String // String (3.6w) or Int (36) 28 | ) 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/api/web/WebApiResult.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.api.web 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class WebApiResult( 6 | @SerializedName("no") 7 | val errorCode: Int, 8 | @SerializedName("error") 9 | val errorMsg: String, 10 | val data: T 11 | ) 12 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/arch/Event.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.arch 2 | 3 | class Event(val data: T) { 4 | var handled = false 5 | 6 | inline fun handle(handler: (T) -> Unit) { 7 | if (!handled) { 8 | handler(data) 9 | handled = true 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/db/AccountDao.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.db 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Delete 5 | import androidx.room.Entity 6 | import androidx.room.Insert 7 | import androidx.room.OnConflictStrategy 8 | import androidx.room.PrimaryKey 9 | import androidx.room.Query 10 | import io.github.a13e300.ro_tieba.account.AccountManager 11 | import kotlinx.coroutines.flow.Flow 12 | 13 | @Entity 14 | data class Account( 15 | @PrimaryKey 16 | val uid: String = AccountManager.ACCOUNT_ANONYMOUS, 17 | val name: String? = null, 18 | val portrait: String? = null, 19 | val tbs: String? = null, 20 | val bduss: String? = null, 21 | val stoken: String? = null, 22 | val baiduId: String? = null 23 | ) 24 | 25 | @Dao 26 | interface AccountDao { 27 | @Query("SELECT * FROM Account") 28 | fun getAccounts(): Flow> 29 | 30 | @Query("SELECT * FROM Account WHERE uid = :uid") 31 | fun getAccount(uid: String): Account? 32 | 33 | @Insert(onConflict = OnConflictStrategy.REPLACE) 34 | fun addAccount(account: Account) 35 | 36 | @Delete 37 | fun removeAccount(account: Account) 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/db/AppDataBase.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.db 2 | 3 | import androidx.room.AutoMigration 4 | import androidx.room.Database 5 | import androidx.room.RoomDatabase 6 | 7 | @Database( 8 | entities = [Account::class, HistoryEntry::class], 9 | version = 3, 10 | exportSchema = true, 11 | autoMigrations = [AutoMigration(from = 1, to = 2), AutoMigration(from = 2, to = 3)] 12 | ) 13 | abstract class AppDataBase : RoomDatabase() { 14 | abstract fun accountDao(): AccountDao 15 | abstract fun historyDao(): HistoryDao 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/misc/ContainerBehavior.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.misc 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.View 6 | import androidx.coordinatorlayout.widget.CoordinatorLayout 7 | import io.github.a13e300.ro_tieba.R 8 | 9 | class ContainerBehavior(context: Context, attrs: AttributeSet) : 10 | CoordinatorLayout.Behavior(context, attrs) { 11 | override fun onMeasureChild( 12 | parent: CoordinatorLayout, 13 | child: View, 14 | parentWidthMeasureSpec: Int, 15 | widthUsed: Int, 16 | parentHeightMeasureSpec: Int, 17 | heightUsed: Int 18 | ): Boolean { 19 | parent.onMeasureChild( 20 | child, 21 | parentWidthMeasureSpec, 22 | widthUsed, 23 | parentHeightMeasureSpec, 24 | heightUsed 25 | ) 26 | return true 27 | } 28 | 29 | override fun onLayoutChild( 30 | parent: CoordinatorLayout, 31 | child: View, 32 | layoutDirection: Int 33 | ): Boolean { 34 | parent.onLayoutChild(child, layoutDirection) 35 | child.offsetTopAndBottom(parent.findViewById(R.id.list).top) 36 | return true 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/misc/MyURLSpan.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.misc 2 | 3 | import android.text.TextPaint 4 | import android.text.style.URLSpan 5 | 6 | open class MyURLSpan(url: String) : URLSpan(url) { 7 | var pressed = false 8 | override fun updateDrawState(ds: TextPaint) { 9 | ds.color = ds.linkColor 10 | ds.isUnderlineText = pressed 11 | } 12 | } 13 | 14 | class UserSpan(val uidOrPortrait: String) : 15 | MyURLSpan("rotieba://user/profile?uid_or_portrait=$uidOrPortrait") 16 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/misc/OnPreImeBackPressedListener.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.misc 2 | 3 | import android.view.View 4 | 5 | fun interface OnPreImeBackPressedListener { 6 | fun onBackPressed(view: View): Boolean 7 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/Comment.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import java.util.Date 4 | 5 | data class Comment( 6 | override val user: User, 7 | override val content: List, 8 | override val floor: Int, 9 | val postId: Long, 10 | val tid: Long, 11 | override val time: Date, 12 | val ppid: Long 13 | ) : IPost { 14 | override val id: Long 15 | get() = ppid 16 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/Content.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | @Parcelize 7 | sealed class Content : Parcelable { 8 | data class TextContent(val text: String) : Content() 9 | data class ImageContent( 10 | val previewSrc: String, 11 | val src: String, 12 | val width: Int, 13 | val height: Int, 14 | val order: Int, 15 | ) : Content() 16 | 17 | data class EmojiContent( 18 | val id: String 19 | ) : Content() 20 | 21 | data class LinkContent(val text: String, val link: String) : Content() 22 | data class UserContent(val text: String, val uidOrPortrait: String) : Content() 23 | 24 | data class VideoContent( 25 | val src: String, 26 | val previewSrc: String, 27 | val width: Int, 28 | val height: Int, 29 | val duration: Int, 30 | val size: Int, 31 | val text: String 32 | ) : Content() 33 | 34 | data class UnknownContent( 35 | val type: Int, 36 | val text: String, 37 | val source: String 38 | ) : Content() 39 | 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/Forum.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import io.github.a13e300.ro_tieba.DEFAULT_FORUM_AVATAR 4 | import io.github.a13e300.ro_tieba.api.json.GetFollowForums 5 | import io.github.a13e300.ro_tieba.api.web.SearchForum 6 | 7 | data class Forum( 8 | val name: String, 9 | val id: Long, 10 | val avatarUrl: String = DEFAULT_FORUM_AVATAR, 11 | val desc: String? = null 12 | ) 13 | 14 | fun SearchForum.ForumInfo.toForum(): Forum = 15 | Forum(forumName, forumId.toLong(), avatar.ifEmpty { DEFAULT_FORUM_AVATAR }, slogan) 16 | 17 | data class UserForum( 18 | val name: String, 19 | val id: Long, 20 | val avatarUrl: String = DEFAULT_FORUM_AVATAR, 21 | val desc: String? = null, 22 | val levelId: Int 23 | ) 24 | 25 | fun GetFollowForums.Forum.toUserForum() = UserForum( 26 | name, id.toLong(), avatar.ifEmpty { DEFAULT_FORUM_AVATAR }, slogan, levelId.toInt() 27 | ) 28 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/ForumSortType.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import io.github.a13e300.ro_tieba.api.protobuf.FrsPageSortType 4 | import io.github.a13e300.ro_tieba.api.protobuf.GeneralTabListSortType 5 | 6 | enum class ForumSortType(val frsType: FrsPageSortType, val tabType: GeneralTabListSortType) { 7 | REPLY_TIME(FrsPageSortType.REPLY_TIME, GeneralTabListSortType.REPLY_TIME), 8 | CREATE_TIME(FrsPageSortType.CREATE_TIME, GeneralTabListSortType.CREATE_TIME) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/ForumTab.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | sealed class ForumTab(open val name: String) { 4 | sealed class PrimaryTab(override val name: String) : ForumTab(name) 5 | data object HotTab : PrimaryTab("热门") 6 | data object LatestTab : PrimaryTab("最新") 7 | data object GoodTab : PrimaryTab("精品") 8 | 9 | data class GeneralTab( 10 | val id: Int, 11 | override val name: String, 12 | val type: Int 13 | ) : ForumTab(name) 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/IPost.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import java.util.Date 4 | 5 | interface IPost { 6 | val user: User 7 | val content: List 8 | val floor: Int 9 | val id: Long 10 | val time: Date 11 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/Photo.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | @Parcelize 7 | data class Photo( 8 | val url: String, 9 | val order: Int, 10 | val source: String, 11 | val content: List? = null 12 | ) : Parcelable 13 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/Post.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import java.util.Date 4 | 5 | data class Post( 6 | override val user: User, 7 | override val content: List, 8 | override val floor: Int, 9 | val postId: Long, 10 | val tid: Long, 11 | override val time: Date, 12 | val comments: List, 13 | val commentCount: Int, 14 | val agreeNum: Long = 0, 15 | val disagreeNum: Long = 0, 16 | val page: Int = 0 17 | ) : IPost { 18 | override val id: Long 19 | get() = postId 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/PostId.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | sealed class PostId { 4 | abstract val tid: Long 5 | open val pid: Long = 0L 6 | open val spid: Long = 0L 7 | 8 | data class Thread(override val tid: Long) : PostId() 9 | data class Post(override val tid: Long, override val pid: Long) : PostId() 10 | data class Comment(override val tid: Long, override val pid: Long, override val spid: Long) : 11 | PostId() 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/Reply.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import java.util.Date 4 | 5 | data class Reply( 6 | val content: List, 7 | val pid: Long, 8 | val comment: Boolean, 9 | val quota: QuotaInfo?, 10 | val threadId: Long, 11 | val threadTitle: String, 12 | val time: Date, 13 | val forumId: Long, 14 | val forumName: String 15 | ) { 16 | data class QuotaInfo( 17 | val pid: Long, 18 | val uid: Long, 19 | val username: String, 20 | val content: String 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/SearchedPost.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import java.util.Date 4 | 5 | data class SearchedPost( 6 | val user: User, 7 | val id: PostId, 8 | val time: Date, 9 | val title: String, 10 | val forum: Forum, 11 | val content: List 12 | ) 13 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/ThreadType.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | enum class ThreadType { 4 | NORMAL, 5 | HELP 6 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/models/TiebaThread.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.models 2 | 3 | import androidx.recyclerview.widget.DiffUtil 4 | import java.util.Date 5 | 6 | data class TiebaThread( 7 | val tid: Long, 8 | val postId: Long, 9 | val title: String, 10 | val author: User, 11 | val content: List, 12 | val time: Date, 13 | val replyNum: Int, 14 | val isGood: Boolean, 15 | val forum: Forum? = null, 16 | val createTime: Date? = null, 17 | val viewNum: Int = 0, 18 | val agreeNum: Long = 0, 19 | val disagreeNum: Long = 0, 20 | val images: List = emptyList(), 21 | val tabInfo: ForumTab.GeneralTab? = null, 22 | val threadType: ThreadType = ThreadType.NORMAL, 23 | val isTop: Boolean = false 24 | ) 25 | 26 | object ThreadComparator : DiffUtil.ItemCallback() { 27 | override fun areItemsTheSame(oldItem: TiebaThread, newItem: TiebaThread): Boolean { 28 | return oldItem.tid == newItem.tid 29 | } 30 | 31 | override fun areContentsTheSame(oldItem: TiebaThread, newItem: TiebaThread): Boolean { 32 | return oldItem == newItem 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/serializer/SearchHistorySerializer.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.serializer 2 | 3 | import androidx.datastore.core.CorruptionException 4 | import androidx.datastore.core.Serializer 5 | import com.google.protobuf.InvalidProtocolBufferException 6 | import io.github.a13e300.ro_tieba.datastore.SearchHistory 7 | import java.io.InputStream 8 | import java.io.OutputStream 9 | 10 | object SearchHistorySerializer : 11 | Serializer { 12 | override val defaultValue: SearchHistory = SearchHistory.getDefaultInstance() 13 | 14 | override suspend fun readFrom(input: InputStream): SearchHistory { 15 | try { 16 | return SearchHistory.parseFrom(input) 17 | } catch (exception: InvalidProtocolBufferException) { 18 | throw CorruptionException("Cannot read proto.", exception) 19 | } 20 | } 21 | 22 | override suspend fun writeTo( 23 | t: SearchHistory, 24 | output: OutputStream 25 | ) = t.writeTo(output) 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/serializer/Settings.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.serializer 2 | 3 | import androidx.datastore.core.CorruptionException 4 | import androidx.datastore.core.Serializer 5 | import com.google.protobuf.InvalidProtocolBufferException 6 | import io.github.a13e300.ro_tieba.datastore.Settings 7 | import java.io.InputStream 8 | import java.io.OutputStream 9 | 10 | object SettingsSerializer : Serializer { 11 | override val defaultValue: Settings = Settings.getDefaultInstance() 12 | 13 | override suspend fun readFrom(input: InputStream): Settings { 14 | try { 15 | return Settings.parseFrom(input) 16 | } catch (exception: InvalidProtocolBufferException) { 17 | throw CorruptionException("Cannot read proto.", exception) 18 | } 19 | } 20 | 21 | override suspend fun writeTo( 22 | t: Settings, 23 | output: OutputStream 24 | ) = t.writeTo(output) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/ui/HomePageFragment.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.ui 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.navigation.fragment.NavHostFragment 8 | import androidx.navigation.ui.setupWithNavController 9 | import com.google.android.material.bottomnavigation.BottomNavigationView 10 | import io.github.a13e300.ro_tieba.BaseFragment 11 | import io.github.a13e300.ro_tieba.R 12 | import io.github.a13e300.ro_tieba.databinding.FragmentHomePageBinding 13 | 14 | class HomePageFragment : BaseFragment() { 15 | 16 | override fun onCreateView( 17 | inflater: LayoutInflater, container: ViewGroup?, 18 | savedInstanceState: Bundle? 19 | ): View { 20 | val binding = FragmentHomePageBinding.inflate(inflater, container, false) 21 | val navView: BottomNavigationView = binding.navView 22 | 23 | val navHostFragment = 24 | childFragmentManager.findFragmentById(R.id.nav_host_fragment_homepage) as NavHostFragment 25 | val navController = navHostFragment.navController 26 | navView.setupWithNavController(navController) 27 | return binding.root 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/ui/dashboard/DashboardViewModel.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.ui.dashboard 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.lifecycle.MutableLiveData 5 | import androidx.lifecycle.ViewModel 6 | 7 | class DashboardViewModel : ViewModel() { 8 | 9 | private val _text = MutableLiveData().apply { 10 | value = "WIP" 11 | } 12 | val text: LiveData = _text 13 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/ui/history/HistoryViewModel.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.ui.history 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.viewModelScope 5 | import androidx.paging.Pager 6 | import androidx.paging.PagingConfig 7 | import androidx.paging.cachedIn 8 | import io.github.a13e300.ro_tieba.App 9 | 10 | class HistoryViewModel : ViewModel() { 11 | val flow = Pager( 12 | PagingConfig(pageSize = 30) 13 | ) { 14 | App.instance.db.historyDao().getHistories() 15 | }.flow 16 | .cachedIn(viewModelScope) 17 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/utils/AnimUtils.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.utils 2 | 3 | import android.view.View 4 | import android.view.animation.Animation 5 | import android.view.animation.AnimationUtils 6 | import androidx.core.view.isGone 7 | import io.github.a13e300.ro_tieba.R 8 | 9 | fun View.showAnim(down: Boolean) { 10 | val anim = AnimationUtils.loadAnimation( 11 | context, 12 | if (down) R.anim.slide_in_down else R.anim.slide_in_up 13 | ) 14 | isGone = false 15 | startAnimation(anim) 16 | } 17 | 18 | fun View.hideAnim(down: Boolean) { 19 | val anim = AnimationUtils.loadAnimation( 20 | context, 21 | if (down) R.anim.slide_out_down else R.anim.slide_out_up 22 | ) 23 | anim.setAnimationListener(object : Animation.AnimationListener { 24 | override fun onAnimationStart(p0: Animation?) { 25 | } 26 | 27 | override fun onAnimationEnd(p0: Animation?) { 28 | isGone = true 29 | } 30 | 31 | override fun onAnimationRepeat(p0: Animation?) { 32 | } 33 | }) 34 | startAnimation(anim) 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/view/MySearchView.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.view 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.KeyEvent 6 | import com.google.android.material.search.SearchView 7 | import io.github.a13e300.ro_tieba.misc.OnPreImeBackPressedListener 8 | 9 | class MySearchView : SearchView { 10 | constructor(context: Context) : super(context) 11 | constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) 12 | 13 | override fun dispatchKeyEventPreIme(event: KeyEvent): Boolean { 14 | if (event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_BACK && 15 | onBackPressedListener?.onBackPressed(this) == true 16 | ) { 17 | return true 18 | } 19 | return super.dispatchKeyEventPreIme(event) 20 | } 21 | 22 | var onBackPressedListener: OnPreImeBackPressedListener? = null 23 | } -------------------------------------------------------------------------------- /app/src/main/java/io/github/a13e300/ro_tieba/view/PreImeBackInterceptorView.kt: -------------------------------------------------------------------------------- 1 | package io.github.a13e300.ro_tieba.view 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.KeyEvent 6 | import android.widget.FrameLayout 7 | import io.github.a13e300.ro_tieba.misc.OnPreImeBackPressedListener 8 | 9 | class PreImeBackInterceptorView : FrameLayout { 10 | constructor(context: Context) : super(context) 11 | constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) 12 | 13 | override fun dispatchKeyEventPreIme(event: KeyEvent): Boolean { 14 | if (event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_BACK && 15 | onBackPressedListener?.onBackPressed(this) == true 16 | ) { 17 | return true 18 | } 19 | return super.dispatchKeyEventPreIme(event) 20 | } 21 | 22 | var onBackPressedListener: OnPreImeBackPressedListener? = null 23 | } -------------------------------------------------------------------------------- /app/src/main/protobuf/datastore/SearchHistory.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | option java_package = "io.github.a13e300.ro_tieba.datastore"; 4 | option java_multiple_files = true; 5 | 6 | message SearchHistory { 7 | message Entry { 8 | string keyword = 1; 9 | } 10 | repeated Entry entries = 1; 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/protobuf/datastore/Settings.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | option java_package = "io.github.a13e300.ro_tieba.datastore"; 4 | option java_multiple_files = true; 5 | 6 | message Settings { 7 | string current_account = 1; 8 | bool disable_auto_link = 2; 9 | bool disable_auto_bv = 3; 10 | } -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/Abstract.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Agree 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | 5 | message Abstract { 6 | int32 type = 1; 7 | string text = 2; 8 | string link = 3; 9 | string src = 4; 10 | string un = 5; 11 | string during_time = 6; 12 | string voice_md5 = 7; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/Agree.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Agree 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message Agree { 5 | int64 agree_num = 1; 6 | int64 disagree_num = 4; 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/CommitPersonalMsgReqIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.CommitPersonalMsg.CommitPersonalMsgReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.CommitPersonalMsg"; 4 | message CommitPersonalMsgReqIdl { 5 | message DataReq { 6 | int64 toUid = 2; 7 | int32 msgType = 3; 8 | string content = 4; 9 | int64 recordId = 6; 10 | } 11 | DataReq data = 1; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/CommitPersonalMsgResIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.CommitPersonalMsg.CommitPersonalMsgResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.CommitPersonalMsg"; 4 | import "Error.proto"; 5 | 6 | message CommitPersonalMsgResIdl { 7 | Error error = 1; 8 | message DataRes { 9 | int64 msgId = 1; 10 | message BlockInfo { 11 | int32 blockErrno = 1; 12 | string blockErrmsg = 2; 13 | } 14 | BlockInfo blockInfo = 6; 15 | } 16 | DataRes data = 2; 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/CommitReceivedPmsgReqIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.CommitReceivedPmsg.CommitReceivedPmsgReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.CommitReceivedPmsg"; 4 | message CommitReceivedPmsgReqIdl { 5 | message DataReq { 6 | int64 groupId = 1; 7 | int64 toUid = 2; 8 | int32 msgType = 3; 9 | int64 msgId = 4; 10 | } 11 | DataReq data = 1; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/CommitReceivedPmsgResIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.CommitReceivedPmsg.CommitReceivedPmsgResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.CommitReceivedPmsg"; 4 | import "Error.proto"; 5 | 6 | message CommitReceivedPmsgResIdl { 7 | Error error = 1; 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/CommonReq.proto: -------------------------------------------------------------------------------- 1 | // tbclient.CommonReq 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message CommonReq { 5 | int32 _client_type = 1; 6 | string _client_version = 2; 7 | string BDUSS = 10; 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/Error.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Error 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message Error { 5 | int32 errorno = 1; 6 | string errmsg = 2; 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/ForumList.proto: -------------------------------------------------------------------------------- 1 | // Not actually exist 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message ForumList { 5 | int64 forum_id = 1; 6 | string forum_name = 2; 7 | int32 member_count = 4; 8 | int64 post_num = 7; 9 | int64 thread_num = 8; 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/FrsPageReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.FrsPage.FrsPageReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.FrsPage"; 4 | import "CommonReq.proto"; 5 | 6 | message FrsPageReqIdl { 7 | message DataReq { 8 | CommonReq common = 39; 9 | string fname = 1; 10 | int32 rn = 2; 11 | int32 rn_need = 3; 12 | int32 is_good = 4; 13 | int32 cid = 5; 14 | int32 pn = 15; 15 | int32 sort = 47; 16 | } 17 | DataReq data = 1; 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/FrsPageResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.FrsPage.FrsPageResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.FrsPage"; 4 | import "Error.proto"; 5 | import "Page.proto"; 6 | import "ThreadInfo.proto"; 7 | import "User.proto"; 8 | import "FrsTabInfo.proto"; 9 | 10 | message FrsPageResIdl { 11 | Error error = 1; 12 | message DataRes { 13 | // https://github.com/n0099/tbclient.protobuf/blob/main/proto/FrsPage/ForumInfo.proto 14 | message ForumInfo { 15 | int64 id = 1; 16 | string name = 2; 17 | string avatar = 24; 18 | string slogan = 25; 19 | } 20 | ForumInfo forum = 2; 21 | Page page = 4; 22 | repeated ThreadInfo thread_list = 7; 23 | repeated User user_list = 17; 24 | message NavTabInfo { 25 | repeated FrsTabInfo tab = 1; 26 | } 27 | NavTabInfo nav_tab_info = 37; 28 | } 29 | DataRes data = 2; 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/FrsTabInfo.proto: -------------------------------------------------------------------------------- 1 | // tbclient.FrsTabInfo 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message FrsTabInfo { 5 | int32 tab_id = 1; 6 | int32 tab_type = 2; 7 | string tab_name = 3; 8 | string tab_url = 4; 9 | string tab_gid = 5; 10 | string tab_title = 6; 11 | int32 is_general_tab = 7; 12 | string tab_code = 8; 13 | uint32 tab_version = 9; 14 | int32 is_default = 10; 15 | int32 need_page = 11; 16 | // TabPic head_pics = 12; 17 | string exposure_monitor_url = 13; 18 | string click_monitor_url = 14; 19 | string demote_url = 15; 20 | int32 is_no_show_publisher = 16; 21 | int32 is_no_show_in_publisher = 17; 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GeneralTabListReqIdl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | option java_package = "tbclient.GeneralTabList"; 3 | import "CommonReq.proto"; 4 | 5 | message GeneralTabListReqIdl { 6 | message DataReq { 7 | CommonReq common = 1; 8 | int32 tab_id = 2; 9 | int64 forum_id = 3; 10 | int32 pn = 4; 11 | int32 rn = 5; 12 | int32 scr_w = 6; 13 | int32 scr_h = 7; 14 | int32 scr_dip = 8; 15 | int64 last_thread_id = 9; 16 | int32 is_default_navtab = 10; 17 | string tab_name = 11; 18 | int32 is_general_tab = 12; 19 | int32 sort_type = 13; 20 | int32 tab_type = 14; 21 | int32 request_times = 20; 22 | } 23 | DataReq data = 1; 24 | } -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GeneralTabListResIdl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | option java_package = "tbclient.GeneralTabList"; 3 | import "Error.proto"; 4 | import "ThreadInfo.proto"; 5 | import "User.proto"; 6 | 7 | message GeneralTabListResIdl { 8 | message DataRes { 9 | repeated ThreadInfo general_list = 1; 10 | int32 has_more = 2; 11 | repeated User user_list = 3; 12 | int32 new_thread_num = 6; 13 | int32 sort_type = 7; 14 | } 15 | Error error = 1; 16 | DataRes data = 2; 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetBawuInfoReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetBawuInfo.GetBawuInfoReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetBawuInfo"; 4 | import "CommonReq.proto"; 5 | 6 | message GetBawuInfoReqIdl { 7 | message DataReq { 8 | CommonReq common = 1; 9 | uint64 fid = 2; 10 | } 11 | DataReq data = 1; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetBawuInfoResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetBawuInfo.GetBawuInfoResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetBawuInfo"; 4 | import "Error.proto"; 5 | 6 | message GetBawuInfoResIdl { 7 | message DataRes { 8 | message BawuTeam { 9 | int32 total_num = 1; 10 | message BawuRoleDes { 11 | string role_name = 1; 12 | message BawuRoleInfoPub { 13 | int64 user_id = 2; 14 | string portrait = 5; 15 | int32 user_level = 6; 16 | string user_name = 8; 17 | string name_show = 9; 18 | } 19 | repeated BawuRoleInfoPub role_info = 2; 20 | } 21 | repeated BawuRoleDes bawu_team_list = 2; 22 | } 23 | BawuTeam bawu_team_info = 1; 24 | } 25 | DataRes data = 1; 26 | Error error = 2; 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetDislikeListReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetDislikeList.GetDislikeListReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetDislikeList"; 4 | import "CommonReq.proto"; 5 | 6 | message GetDislikeListReqIdl { 7 | message DataReq { 8 | CommonReq common = 1; 9 | int32 pn = 3; 10 | int32 rn = 4; 11 | } 12 | DataReq data = 1; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetDislikeListResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetDislikeList.GetDislikeListResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetDislikeList"; 4 | import "Error.proto"; 5 | import "ForumList.proto"; 6 | 7 | message GetDislikeListResIdl { 8 | Error error = 1; 9 | message DataRes { 10 | repeated ForumList forum_list = 1; 11 | int32 has_more = 2; 12 | int32 cur_page = 3; 13 | } 14 | DataRes data = 2; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetForumSquareReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetForumSquare.GetForumSquareReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetForumSquare"; 4 | import "CommonReq.proto"; 5 | 6 | message GetForumSquareReqIdl { 7 | message DataReq { 8 | CommonReq common = 1; 9 | string class_name = 2; 10 | int32 pn = 3; 11 | int32 rn = 4; 12 | int64 user_id = 5; 13 | } 14 | DataReq data = 1; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetForumSquareResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetForumSquare.GetForumSquareResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetForumSquare"; 4 | import "Error.proto"; 5 | import "Page.proto"; 6 | 7 | message GetForumSquareResIdl { 8 | Error error = 1; 9 | message DataRes { 10 | message RecommendForumInfo { 11 | uint64 forum_id = 2; 12 | string forum_name = 3; 13 | uint32 is_like = 4; 14 | uint32 member_count = 5; 15 | uint32 thread_count = 6; 16 | } 17 | repeated RecommendForumInfo forum_info = 2; 18 | Page page = 3; 19 | } 20 | DataRes data = 2; 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetGroupMsgReqIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.GetGroupMsg.GetGroupMsgReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetGroupMsg"; 4 | message GetGroupMsgReqIdl { 5 | string cuid = 1; 6 | message DataReq { 7 | message GroupLastId { 8 | int64 groupId = 1; 9 | int64 lastMsgId = 2; 10 | } 11 | repeated GroupLastId groupMids = 6; 12 | string gettype = 7; 13 | } 14 | DataReq data = 2; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetGroupMsgResIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.GetGroupMsg.GetGroupMsgResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetGroupMsg"; 4 | import "Error.proto"; 5 | 6 | message GetGroupMsgResIdl { 7 | Error error = 1; 8 | message DataRes { 9 | message GroupMsg { 10 | message GroupInfo { 11 | int64 groupId = 1; 12 | int32 groupType = 20; 13 | } 14 | GroupInfo groupInfo = 1; 15 | message MsgInfo { 16 | int64 msgId = 1; 17 | int32 msgType = 3; 18 | string content = 5; 19 | int32 createTime = 8; 20 | message UserInfo { 21 | int64 userId = 1; 22 | string userName = 2; 23 | string portrait = 4; 24 | // string userNameShow = 18; 25 | } 26 | UserInfo userInfo = 10; 27 | } 28 | repeated MsgInfo msgList = 2; 29 | } 30 | repeated GroupMsg groupInfo = 1; 31 | } 32 | DataRes data = 2; 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetUserByTiebaUidReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetUserByTiebaUid.GetUserByTiebaUidReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetUserByTiebaUid"; 4 | import "CommonReq.proto"; 5 | 6 | message GetUserByTiebaUidReqIdl { 7 | message DataReq { 8 | CommonReq common = 1; 9 | string tieba_uid = 2; 10 | } 11 | DataReq data = 1; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetUserByTiebaUidResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetUserByTiebaUid.GetUserByTiebaUidResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetUserByTiebaUid"; 4 | import "Error.proto"; 5 | import "User.proto"; 6 | 7 | message GetUserByTiebaUidResIdl { 8 | Error error = 1; 9 | message DataRes { 10 | User user = 1; 11 | } 12 | DataRes data = 2; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetUserInfoReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetUserInfo.GetUserInfoReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetUserInfo"; 4 | message GetUserInfoReqIdl { 5 | message DataReq { 6 | int64 user_id = 2; 7 | } 8 | DataReq data = 1; 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/GetUserInfoResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.GetUserInfo.GetUserInfoResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.GetUserInfo"; 4 | import "Error.proto"; 5 | import "User.proto"; 6 | 7 | message GetUserInfoResIdl { 8 | Error error = 1; 9 | message DataRes { 10 | User user = 1; 11 | } 12 | DataRes data = 2; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/Media.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Media 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message Media { 5 | int32 type = 1; 6 | string small_pic = 2; 7 | string big_pic = 3; 8 | string water_pic = 4; 9 | string src_pic = 8; 10 | uint32 width = 10; 11 | uint32 height = 11; 12 | string origin_pic = 15; 13 | uint32 origin_size = 16; 14 | } -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/Page.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Page 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message Page { 5 | int32 page_size = 1; 6 | int32 current_page = 3; 7 | int32 total_count = 4; 8 | int32 total_page = 5; 9 | int32 has_more = 6; 10 | int32 has_prev = 7; 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PbContent.proto: -------------------------------------------------------------------------------- 1 | // tbclient.PbContent 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message PbContent { 5 | uint32 type = 1; 6 | string text = 2; 7 | string link = 3; 8 | string src = 4; 9 | string bsize = 5; 10 | string cdn_src = 8; 11 | string big_cdn_src = 9; 12 | string c = 11; 13 | string voice_md5 = 12; 14 | int64 uid = 15; 15 | uint32 during_time = 13; 16 | uint32 is_sub = 14; 17 | string dynamic = 16; 18 | string _static = 17; 19 | uint32 width = 18; 20 | uint32 height = 19; 21 | string origin_src = 25; 22 | uint32 origin_size = 27; 23 | message TiebaPlusInfo { 24 | string title = 1; 25 | string desc = 2; 26 | string jump_url = 3; 27 | string app_icon = 6; 28 | int32 target_type = 12; 29 | int32 h5_jump_type = 13; 30 | string h5_jump_number = 14; 31 | string h5_jump_param = 15; 32 | int32 jump_type = 16; 33 | string button_desc = 23; 34 | } 35 | TiebaPlusInfo tiebaplus_info = 40; 36 | message Item { 37 | string item_name = 2; 38 | } 39 | Item item = 41; 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PbFloorReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.PbFloor.PbFloorReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.PbFloor"; 4 | import "CommonReq.proto"; 5 | 6 | message PbFloorReqIdl { 7 | message DataReq { 8 | CommonReq common = 9; 9 | int64 tid = 1; 10 | int64 pid = 2; 11 | int64 spid = 3; 12 | int32 pn = 4; 13 | } 14 | DataReq data = 1; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PbFloorResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.PbFloor.PbFloorResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.PbFloor"; 4 | import "Error.proto"; 5 | import "SimpleForum.proto"; 6 | import "Page.proto"; 7 | import "Post.proto"; 8 | import "ThreadInfo.proto"; 9 | import "SubPostList.proto"; 10 | 11 | message PbFloorResIdl { 12 | Error error = 1; 13 | message DataRes { 14 | Page page = 1; 15 | Post post = 3; 16 | repeated SubPostList subpost_list = 4; 17 | ThreadInfo thread = 5; 18 | SimpleForum forum = 6; 19 | } 20 | DataRes data = 2; 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PbPageReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.PbPage.PbPageReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.PbPage"; 4 | import "CommonReq.proto"; 5 | 6 | message PbPageReqIdl { 7 | message DataReq { 8 | CommonReq common = 25; 9 | int64 tid = 4; 10 | int32 only_thread_author = 5; 11 | int32 sort = 6; 12 | int64 pid = 7; 13 | int32 with_comments = 8; 14 | int32 comment_rn = 9; 15 | int32 rn = 13; 16 | int32 pn = 18; 17 | int32 comment_sort_by_agree = 74; 18 | int32 is_fold = 78; 19 | } 20 | DataReq data = 1; 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PbPageResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.PbPage.PbPageResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.PbPage"; 4 | import "Error.proto"; 5 | import "SimpleForum.proto"; 6 | import "Page.proto"; 7 | import "Post.proto"; 8 | import "ThreadInfo.proto"; 9 | import "User.proto"; 10 | 11 | message PbPageResIdl { 12 | Error error = 1; 13 | message DataRes { 14 | SimpleForum forum = 2; 15 | Page page = 3; 16 | repeated Post post_list = 6; 17 | ThreadInfo thread = 8; 18 | repeated User user_list = 13; 19 | int32 has_fold_comment = 68; 20 | } 21 | DataRes data = 2; 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PollInfo.proto: -------------------------------------------------------------------------------- 1 | // tbclient.PollInfo 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message PollInfo { 5 | int32 is_multi = 2; 6 | int64 total_num = 3; 7 | message PollOption { 8 | int64 num = 2; 9 | string text = 3; 10 | } 11 | repeated PollOption options = 9; 12 | int64 total_poll = 11; 13 | string title = 12; 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/Post.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Post 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | import "PbContent.proto"; 5 | import "SubPostList.proto"; 6 | import "User.proto"; 7 | import "Agree.proto"; 8 | import "SimpleForum.proto"; 9 | 10 | message Post { 11 | int64 id = 1; 12 | uint32 floor = 3; 13 | uint32 time = 4; 14 | repeated PbContent content = 5; 15 | uint32 sub_post_number = 13; 16 | int64 author_id = 19; 17 | message SubPost { 18 | repeated SubPostList sub_post_list = 2; 19 | } 20 | SubPost sub_post_list = 15; 21 | message SignatureData { 22 | message SignatureContent { 23 | int32 type = 1; 24 | string text = 2; 25 | } 26 | repeated SignatureContent content = 4; 27 | } 28 | SignatureData signature = 21; 29 | User author = 23; 30 | Agree agree = 37; 31 | SimpleForum from_forum = 38; 32 | int64 tid = 46; 33 | message CustomFigure { 34 | string background_value = 3; 35 | } 36 | CustomFigure custom_figure = 60; 37 | message CustomState { 38 | string content = 2; 39 | } 40 | CustomState custom_state = 61; 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PostInfoList.proto: -------------------------------------------------------------------------------- 1 | // tbclient.PostInfoList 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | import "Media.proto"; 5 | import "PollInfo.proto"; 6 | import "PbContent.proto"; 7 | import "Agree.proto"; 8 | 9 | message PostInfoList { 10 | uint64 forum_id = 1; 11 | uint64 thread_id = 2; 12 | uint64 post_id = 3; 13 | uint32 create_time = 5; 14 | string forum_name = 6; 15 | string title = 7; 16 | message PostInfoContent { 17 | repeated PbContent post_content = 1; 18 | uint64 create_time = 2; 19 | uint64 post_type = 3; 20 | uint64 post_id = 4; 21 | } 22 | repeated PostInfoContent content = 8; 23 | string user_name = 10; 24 | repeated Media media = 16; 25 | uint32 reply_num = 17; 26 | int64 user_id = 18; 27 | string user_portrait = 19; 28 | uint64 thread_type = 26; 29 | PollInfo poll_info = 28; 30 | int32 freq_num = 33; 31 | string name_show = 35; 32 | int32 share_num = 39; 33 | Agree agree = 40; 34 | int32 is_share_thread = 44; 35 | repeated PbContent first_post_content = 49; 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/ProfileReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Profile.ProfileReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.Profile"; 4 | import "CommonReq.proto"; 5 | 6 | message ProfileReqIdl { 7 | message DataReq { 8 | int64 uid = 1; 9 | uint32 need_post_count = 2; 10 | uint32 pn = 6; 11 | CommonReq common = 9; 12 | int32 page = 15; 13 | string friend_uid_portrait = 16; 14 | } 15 | DataReq data = 1; 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/ProfileResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.Profile.ProfileResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.Profile"; 4 | import "Error.proto"; 5 | import "User.proto"; 6 | import "PostInfoList.proto"; 7 | 8 | message ProfileResIdl { 9 | Error error = 1; 10 | message DataRes { 11 | User user = 1; 12 | message Anti { 13 | int32 block_stat = 6; 14 | int32 hide_stat = 7; 15 | int32 days_tofree = 9; 16 | } 17 | Anti anti_stat = 2; 18 | repeated PostInfoList post_list = 4; 19 | } 20 | DataRes data = 2; 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/PushNotifyResIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.PushNotify.PushNotifyResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.PushNotify"; 4 | message PushNotifyResIdl { 5 | message PusherMsg { 6 | message PusherMsgInfo { 7 | int64 groupId = 1; 8 | int64 msgId = 2; 9 | int32 type = 4; 10 | string et = 6; 11 | int32 groupType = 7; 12 | } 13 | PusherMsgInfo data = 2; 14 | } 15 | repeated PusherMsg multiMsg = 2; 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/ReplyMeReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.ReplyMe.ReplyMeReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.ReplyMe"; 4 | import "CommonReq.proto"; 5 | 6 | message ReplyMeReqIdl { 7 | message DataReq { 8 | string pn = 1; 9 | CommonReq common = 3; 10 | } 11 | DataReq data = 1; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/ReplyMeResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.ReplyMe.ReplyMeResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.ReplyMe"; 4 | import "Error.proto"; 5 | import "Page.proto"; 6 | import "User.proto"; 7 | 8 | message ReplyMeResIdl { 9 | Error error = 1; 10 | message DataRes { 11 | Page page = 1; 12 | message ReplyList { 13 | uint64 thread_id = 1; 14 | uint64 post_id = 2; 15 | uint32 time = 3; 16 | string fname = 5; 17 | string content = 6; 18 | uint32 is_floor = 7; 19 | string quote_content = 8; 20 | User replyer = 9; 21 | uint64 quote_pid = 14; 22 | User quote_user = 15; 23 | User thread_author_user = 25; 24 | } 25 | repeated ReplyList reply_list = 2; 26 | } 27 | DataRes data = 2; 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/SearchPostForumReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.SearchPostForum.SearchPostForumReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.SearchPostForum"; 4 | import "CommonReq.proto"; 5 | 6 | message SearchPostForumReqIdl { 7 | message DataReq { 8 | CommonReq common = 1; 9 | string fname = 2; 10 | } 11 | DataReq data = 1; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/SearchPostForumResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.SearchPostForum.SearchPostForumResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.SearchPostForum"; 4 | import "Error.proto"; 5 | import "FrsTabInfo.proto"; 6 | 7 | message SearchPostForumResIdl { 8 | Error error = 1; 9 | message DataRes { 10 | message SearchForum { 11 | int64 forum_id = 1; 12 | string forum_name = 2; 13 | repeated FrsTabInfo tab_info = 9; 14 | } 15 | SearchForum exact_match = 1; 16 | } 17 | DataRes data = 2; 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/SimpleForum.proto: -------------------------------------------------------------------------------- 1 | // tbclient.SimpleForum 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | message SimpleForum { 5 | int64 id = 1; 6 | string name = 2; 7 | string avatar = 4; 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/SubPostList.proto: -------------------------------------------------------------------------------- 1 | // tbclient.SubPost 2 | syntax = "proto3"; 3 | option java_package = "tbclient"; 4 | import "PbContent.proto"; 5 | import "User.proto"; 6 | import "Agree.proto"; 7 | 8 | message SubPostList { 9 | int64 id = 1; 10 | repeated PbContent content = 2; 11 | uint32 time = 3; 12 | int64 author_id = 4; 13 | string title = 5; 14 | uint32 floor = 6; 15 | User author = 7; 16 | Agree agree = 9; 17 | } 18 | 19 | message SubPost { 20 | uint64 pid = 1; 21 | repeated SubPostList sub_post_list = 2; 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/UpdateClientInfoReqIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.UpdateClientInfo.UpdateClientInfoReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.UpdateClientInfo"; 4 | message UpdateClientInfoReqIdl { 5 | string cuid = 1; 6 | message DataReq { 7 | string bduss = 1; 8 | string device = 2; 9 | bytes secretKey = 3; 10 | string stoken = 12; 11 | } 12 | DataReq data = 2; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/UpdateClientInfoResIdl.proto: -------------------------------------------------------------------------------- 1 | // protobuf.UpdateClientInfo.UpdateClientInfoResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.UpdateClientInfo"; 4 | import "Error.proto"; 5 | 6 | message UpdateClientInfoResIdl { 7 | Error error = 1; 8 | message DataRes { 9 | message GroupInfo { 10 | int64 groupId = 1; 11 | int32 groupType = 20; 12 | int64 lastMsgId = 21; 13 | } 14 | repeated GroupInfo groupInfo = 1; 15 | } 16 | DataRes data = 2; 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/UserPostReqIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.UserPost.UserPostReqIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.UserPost"; 4 | import "CommonReq.proto"; 5 | 6 | message UserPostReqIdl { 7 | message DataReq { 8 | int64 user_id = 1; 9 | uint32 rn = 2; 10 | uint32 is_thread = 4; 11 | uint32 need_content = 5; 12 | uint32 pn = 26; 13 | int32 is_view_card = 33; 14 | CommonReq common = 27; 15 | } 16 | DataReq data = 1; 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/protobuf/tbclient/UserPostResIdl.proto: -------------------------------------------------------------------------------- 1 | // tbclient.UserPost.UserPostResIdl 2 | syntax = "proto3"; 3 | option java_package = "tbclient.UserPost"; 4 | import "Error.proto"; 5 | import "PostInfoList.proto"; 6 | 7 | message UserPostResIdl { 8 | Error error = 1; 9 | message DataRes { 10 | repeated PostInfoList post_list = 1; 11 | } 12 | DataRes data = 2; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_enter_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_exit_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_pop_enter_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_pop_exit_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_default_enter_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_default_exit_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_default_pop_enter_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_default_pop_exit_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_in_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_in_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_out_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_out_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_with_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_01.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_01.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_02.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_02.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_03.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_03.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_04.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_04.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_05.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_05.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_06.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_06.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_07.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_07.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_08.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_08.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_09.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_10.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_11.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_12.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_13.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_13.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_14.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_14.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_15.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_15.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_16.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_16.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_17.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_18.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_19.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_19.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_bearchildren_20.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_bearchildren_20.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon100.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon101.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon102.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon103.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon104.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon105.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon105.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon106.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon106.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon107.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon107.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon108.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon109.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon109.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon110.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon111.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon112.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon113.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon114.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon115.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon115.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon116.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon116.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon117.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon117.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon118.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon118.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon119.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon119.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon120.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon121.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon122.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon122.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon123.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon123.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon124.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon124.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon125.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon126.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon126.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon127.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon127.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon128.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon129.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon129.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon130.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon130.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon131.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon131.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon132.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon132.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon133.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon133.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon134.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon135.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon135.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon136.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon137.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon137.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon16.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon17.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon19.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon20.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon21.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon22.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon23.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon25.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon26.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon27.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon28.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon29.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon30.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon31.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon32.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon33.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon34.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon35.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon36.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon37.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon38.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon39.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon40.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon41.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon42.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon43.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon44.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon45.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon46.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon47.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon49.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon50.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon61.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon62.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon63.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon64.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon65.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon66.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon67.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon68.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon69.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon70.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon71.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon72.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon73.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon74.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon75.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon76.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon77.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon78.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon79.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon80.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon81.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon82.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon83.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon84.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon85.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon86.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon87.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon88.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon89.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon90.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon91.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon92.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon93.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon94.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon95.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon96.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon97.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon97.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon98.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_image_emoticon99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_image_emoticon99.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_01.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_01.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_02.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_02.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_03.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_03.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_04.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_04.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_05.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_05.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_06.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_06.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_07.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_07.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_08.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_08.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_09.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_10.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_100.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_100.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_101.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_101.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_102.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_102.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_103.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_103.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_104.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_104.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_105.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_105.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_106.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_106.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_11.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_12.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_13.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_13.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_14.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_14.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_15.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_15.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_16.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_16.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_17.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_18.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_19.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_19.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_20.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_20.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_21.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_21.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_22.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_22.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_23.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_23.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_24.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_24.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_25.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_25.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_26.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_26.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_27.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_27.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_28.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_28.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_29.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_29.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_30.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_30.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_31.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_31.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_32.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_32.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_33.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_33.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_34.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_34.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_35.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_35.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_36.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_36.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_37.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_37.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_38.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_38.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_39.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_39.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_40.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_40.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_41.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_41.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_42.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_42.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_43.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_43.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_44.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_44.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_45.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_45.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_46.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_46.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_47.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_47.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_48.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_48.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_49.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_49.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_50.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_50.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_51.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_51.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_52.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_52.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_53.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_53.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_54.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_54.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_55.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_55.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_56.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_56.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_57.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_57.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_58.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_58.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_59.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_59.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_60.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_60.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_61.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_61.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_62.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_62.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_63.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_63.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_64.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_65.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_65.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_66.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_66.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_67.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_67.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_68.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_68.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_69.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_69.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_70.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_70.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_71.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_71.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_72.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_72.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_73.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_73.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_74.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_75.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_75.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_76.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_76.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_77.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_77.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_78.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_78.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_79.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_79.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_80.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_80.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_81.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_82.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_82.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_83.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_83.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_84.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_84.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_85.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_85.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_86.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_86.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_87.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_87.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_88.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_88.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_89.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_89.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_90.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_90.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_91.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_91.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_92.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_92.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_93.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_93.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_94.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_94.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_95.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_95.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_96.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_96.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_97.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_97.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_98.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_98.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/emoji_shoubai_emoji_face_99.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5ec1cff/RoTieba/fef58fb35cc9949be45b7e8e8d486420d99f4ee8/app/src/main/res/drawable/emoji_shoubai_emoji_face_99.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_account.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_agree.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_comment.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_copy.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dashboard_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_disagree.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_down.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_download.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_error.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_history.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_home_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_idea.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_input.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_jump.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_link.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_location.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notifications_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_ok.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_open.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_paste.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_refresh.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_see.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_share.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_sort.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_time.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_up.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_search.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_thread.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_detail_item_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_detail_item_title.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_login_method.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 |