Skip to content

Commit

Permalink
Update to 7.9.2 (2389)
Browse files Browse the repository at this point in the history
  • Loading branch information
DrKLO committed Aug 5, 2021
1 parent 24c6968 commit fc12550
Show file tree
Hide file tree
Showing 3,398 changed files with 463 additions and 543 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
4 changes: 2 additions & 2 deletions TMessagesProj/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ android {
}
}

defaultConfig.versionCode = 2387
defaultConfig.versionCode = 2389

applicationVariants.all { variant ->
variant.outputs.all { output ->
Expand All @@ -318,7 +318,7 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 29
versionName "7.9.1"
versionName "7.9.2"

vectorDrawables.generatedDensities = ['mdpi', 'hdpi', 'xhdpi', 'xxhdpi']

Expand Down
9 changes: 9 additions & 0 deletions TMessagesProj/jni/tgnet/ConnectionSocket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,15 @@ void ConnectionSocket::openConnectionInternal(bool ipv6) {
if (setsockopt(socketFd, IPPROTO_TCP, TCP_NODELAY, &yes, sizeof(int))) {
if (LOGS_ENABLED) DEBUG_E("connection(%p) set TCP_NODELAY failed", this);
}
#ifdef DEBUG_VERSION
int size = 4 * 1024 * 1024;
if (setsockopt(socketFd, SOL_SOCKET, SO_SNDBUF, &size, sizeof(int))) {
if (LOGS_ENABLED) DEBUG_E("connection(%p) set SO_SNDBUF failed", this);
}
if (setsockopt(socketFd, SOL_SOCKET, SO_RCVBUF, &size, sizeof(int))) {
if (LOGS_ENABLED) DEBUG_E("connection(%p) set SO_RCVBUF failed", this);
}
#endif

if (fcntl(socketFd, F_SETFL, O_NONBLOCK) == -1) {
if (LOGS_ENABLED) DEBUG_E("connection(%p) set O_NONBLOCK failed", this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -924,13 +924,13 @@ JNIEXPORT void JNICALL Java_org_telegram_messenger_voip_NativeInstance_setupOutg
std::shared_ptr<tgcalls::VideoCaptureInterface> capturer;
if (type == 0 || type == 1) {
if (instance->_videoCapture == nullptr) {
instance->_videoCapture = tgcalls::VideoCaptureInterface::Create(StaticThreads::getThreads(), type == 1 ? "front" : "back", false, instance->_platformContext);
instance->_videoCapture = tgcalls::VideoCaptureInterface::Create(StaticThreads::getThreads(), type == 1 ? "front" : "back", false, std::make_shared<AndroidContext>(env, nullptr, false));
}
capturer = instance->_videoCapture;
instance->useScreencast = false;
} else {
if (instance->_screenVideoCapture == nullptr) {
instance->_screenVideoCapture = tgcalls::VideoCaptureInterface::Create(StaticThreads::getThreads(), "screen", true, instance->_platformContext);
instance->_screenVideoCapture = tgcalls::VideoCaptureInterface::Create(StaticThreads::getThreads(), "screen", true, std::make_shared<AndroidContext>(env, nullptr, true));
}
capturer = instance->_screenVideoCapture;
instance->useScreencast = true;
Expand Down
65 changes: 29 additions & 36 deletions TMessagesProj/jni/voip/tgcalls/MediaManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -636,28 +636,45 @@ void MediaManager::setSendVideo(std::shared_ptr<VideoCaptureInterface> videoCapt
const auto wasReceiving = computeIsReceivingVideo();

if (_videoCapture) {
GetVideoCaptureAssumingSameThread(_videoCapture.get())->setStateUpdated(nullptr);
GetVideoCaptureAssumingSameThread(_videoCapture.get())->setStateUpdated(nullptr);
}
_videoCapture = videoCapture;
if (_videoCapture) {
if (_videoCapture) {
_videoCapture->setPreferredAspectRatio(_preferredAspectRatio);
_isScreenCapture = _videoCapture->isScreenCapture();

const auto thread = _thread;
const auto weak = std::weak_ptr<MediaManager>(shared_from_this());
GetVideoCaptureAssumingSameThread(_videoCapture.get())->setStateUpdated([=](VideoState state) {
thread->PostTask(RTC_FROM_HERE, [=] {
if (const auto strong = weak.lock()) {
strong->setOutgoingVideoState(state);
}
});
});
const auto thread = _thread;
const auto weak = std::weak_ptr<MediaManager>(shared_from_this());
GetVideoCaptureAssumingSameThread(_videoCapture.get())->setStateUpdated([=](VideoState state) {
thread->PostTask(RTC_FROM_HERE, [=] {
if (const auto strong = weak.lock()) {
strong->setOutgoingVideoState(state);
}
});
});
setOutgoingVideoState(VideoState::Active);
} else {
_isScreenCapture = false;

setOutgoingVideoState(VideoState::Inactive);
resetSendingVideo();
}

if (_enableFlexfec) {
_videoChannel->RemoveSendStream(_ssrcVideo.outgoing);
_videoChannel->RemoveSendStream(_ssrcVideo.fecOutgoing);
} else {
_videoChannel->RemoveSendStream(_ssrcVideo.outgoing);
}

if (_enableFlexfec) {
cricket::StreamParams videoSendStreamParams;
cricket::SsrcGroup videoSendSsrcGroup(cricket::kFecFrSsrcGroupSemantics, {_ssrcVideo.outgoing, _ssrcVideo.fecOutgoing});
videoSendStreamParams.ssrcs = {_ssrcVideo.outgoing};
videoSendStreamParams.ssrc_groups.push_back(videoSendSsrcGroup);
videoSendStreamParams.cname = "cname";
_videoChannel->AddSendStream(videoSendStreamParams);
} else {
_videoChannel->AddSendStream(cricket::StreamParams::CreateLegacy(_ssrcVideo.outgoing));
}

checkIsSendingVideoChanged(wasSending);
Expand Down Expand Up @@ -727,30 +744,6 @@ void MediaManager::configureSendingVideoIfNeeded() {
adjustBitratePreferences(true);
}

void MediaManager::resetSendingVideo() {
if (!_didConfigureVideo) {
return;
}

if (_enableFlexfec) {
_videoChannel->RemoveSendStream(_ssrcVideo.outgoing);
_videoChannel->RemoveSendStream(_ssrcVideo.fecOutgoing);
} else {
_videoChannel->RemoveSendStream(_ssrcVideo.outgoing);
}

if (_enableFlexfec) {
cricket::StreamParams videoSendStreamParams;
cricket::SsrcGroup videoSendSsrcGroup(cricket::kFecFrSsrcGroupSemantics, {_ssrcVideo.outgoing, _ssrcVideo.fecOutgoing});
videoSendStreamParams.ssrcs = {_ssrcVideo.outgoing};
videoSendStreamParams.ssrc_groups.push_back(videoSendSsrcGroup);
videoSendStreamParams.cname = "cname";
_videoChannel->AddSendStream(videoSendStreamParams);
} else {
_videoChannel->AddSendStream(cricket::StreamParams::CreateLegacy(_ssrcVideo.outgoing));
}
}

void MediaManager::checkIsSendingVideoChanged(bool wasSending) {
const auto sending = computeIsSendingVideo();
if (sending == wasSending) {
Expand Down
1 change: 0 additions & 1 deletion TMessagesProj/jni/voip/tgcalls/MediaManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ class MediaManager : public sigslot::has_slots<>, public std::enable_shared_from

bool computeIsSendingVideo() const;
void configureSendingVideoIfNeeded();
void resetSendingVideo();
void checkIsSendingVideoChanged(bool wasSending);
bool videoCodecsNegotiated() const;

Expand Down
159 changes: 135 additions & 24 deletions TMessagesProj/jni/voip/tgcalls/group/GroupInstanceCustomImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,21 @@ namespace tgcalls {

namespace {

template <typename Out>
void splitString(const std::string &s, char delim, Out result) {
std::istringstream iss(s);
std::string item;
while (std::getline(iss, item, delim)) {
*result++ = item;
}
}

std::vector<std::string> splitString(const std::string &s, char delim) {
std::vector<std::string> elems;
splitString(s, delim, std::back_inserter(elems));
return elems;
}

static int stringToInt(std::string const &string) {
std::stringstream stringStream(string);
int value = 0;
Expand Down Expand Up @@ -1130,6 +1145,14 @@ class IncomingVideoChannel : public sigslot::has_slots<> {
_requestedMaxQuality = quality;
}

void setStats(absl::optional<GroupInstanceStats::IncomingVideoStats> stats) {
_stats = stats;
}

absl::optional<GroupInstanceStats::IncomingVideoStats> getStats() {
return _stats;
}

private:
std::shared_ptr<Threads> _threads;
uint32_t _mainVideoSsrc = 0;
Expand All @@ -1145,6 +1168,8 @@ class IncomingVideoChannel : public sigslot::has_slots<> {

VideoChannelDescription::Quality _requestedMinQuality = VideoChannelDescription::Quality::Thumbnail;
VideoChannelDescription::Quality _requestedMaxQuality = VideoChannelDescription::Quality::Thumbnail;

absl::optional<GroupInstanceStats::IncomingVideoStats> _stats;
};

class MissingSsrcPacketBuffer {
Expand Down Expand Up @@ -1776,27 +1801,32 @@ class GroupInstanceCustomInternal : public sigslot::has_slots<>, public std::ena
GroupLevelsUpdate levelsUpdate;
levelsUpdate.updates.reserve(strong->_audioLevels.size() + 1);
for (auto &it : strong->_audioLevels) {
if (it.second.value.level > 0.001f && it.second.timestamp > timestamp - maxSampleTimeout) {
uint32_t effectiveSsrc = it.first.actualSsrc;
if (std::find_if(levelsUpdate.updates.begin(), levelsUpdate.updates.end(), [&](GroupLevelUpdate const &item) {
return item.ssrc == effectiveSsrc;
}) != levelsUpdate.updates.end()) {
continue;
}
levelsUpdate.updates.push_back(GroupLevelUpdate{
effectiveSsrc,
it.second.value,
});
if (it.second.value.level > 0.001f) {
auto audioChannel = strong->_incomingAudioChannels.find(it.first);
if (audioChannel != strong->_incomingAudioChannels.end()) {
audioChannel->second->updateActivity();
}
}
if (it.second.value.level < 0.001f) {
continue;
}
if (it.second.timestamp <= timestamp - maxSampleTimeout) {
continue;
}

it.second.value.level *= 0.5f;
it.second.value.voice = false;
uint32_t effectiveSsrc = it.first.actualSsrc;
if (std::find_if(levelsUpdate.updates.begin(), levelsUpdate.updates.end(), [&](GroupLevelUpdate const &item) {
return item.ssrc == effectiveSsrc;
}) != levelsUpdate.updates.end()) {
continue;
}
levelsUpdate.updates.push_back(GroupLevelUpdate{
effectiveSsrc,
it.second.value,
});
if (it.second.value.level > 0.001f) {
auto audioChannel = strong->_incomingAudioChannels.find(it.first);
if (audioChannel != strong->_incomingAudioChannels.end()) {
audioChannel->second->updateActivity();
}
}

it.second.value.level *= 0.5f;
it.second.value.voice = false;
}

auto myAudioLevel = strong->_myAudioLevel;
Expand Down Expand Up @@ -2463,6 +2493,58 @@ class GroupInstanceCustomInternal : public sigslot::has_slots<>, public std::ena
}
}
}
} else if (messageType == "DebugMessage") {
const auto message = json.object_items().find("message");
if (message != json.object_items().end() && message->second.is_string()) {
std::vector<std::string> parts = splitString(message->second.string_value(), '\n');
for (const auto &part : parts) {
std::string cleanString = part;
std::size_t index = cleanString.find("=");
if (index == std::string::npos) {
continue;
}
cleanString.erase(cleanString.begin(), cleanString.begin() + index + 1);

index = cleanString.find("target=");
if (index == std::string::npos) {
continue;
}

std::string endpointId = cleanString.substr(0, index);
cleanString.erase(cleanString.begin(), cleanString.begin() + index + 7);

index = cleanString.find("p/");
if (index == std::string::npos) {
continue;
}

std::string targetQuality = cleanString.substr(0, index);
cleanString.erase(cleanString.begin(), cleanString.begin() + index + 2);

index = cleanString.find("ideal=");
if (index == std::string::npos) {
continue;
}

cleanString.erase(cleanString.begin(), cleanString.begin() + index + 6);

index = cleanString.find("p/");
if (index == std::string::npos) {
continue;
}

std::string availableQuality = cleanString.substr(0, index);

for (const auto &it : _incomingVideoChannels) {
if (it.second->endpointId() == endpointId) {
GroupInstanceStats::IncomingVideoStats incomingVideoStats;
incomingVideoStats.receivingQuality = stringToInt(targetQuality);
incomingVideoStats.availableQuality = stringToInt(availableQuality);
it.second->setStats(incomingVideoStats);
}
}
}
}
}
}
}
Expand Down Expand Up @@ -2997,11 +3079,21 @@ class GroupInstanceCustomInternal : public sigslot::has_slots<>, public std::ena
if (!strong) {
return;
}
InternalGroupLevelValue updated;
updated.value.level = update.level;
updated.value.voice = update.hasSpeech;
updated.timestamp = rtc::TimeMillis();
strong->_audioLevels.insert(std::make_pair(ChannelId(ssrc), std::move(updated)));

auto it = strong->_audioLevels.find(ChannelId(ssrc));
if (it != strong->_audioLevels.end()) {
it->second.value.level = fmax(it->second.value.level, update.level);
if (update.hasSpeech) {
it->second.value.voice = true;
}
it->second.timestamp = rtc::TimeMillis();
} else {
InternalGroupLevelValue updated;
updated.value.level = update.level;
updated.value.voice = update.hasSpeech;
updated.timestamp = rtc::TimeMillis();
strong->_audioLevels.insert(std::make_pair(ChannelId(ssrc), std::move(updated)));
}
});
};
}
Expand Down Expand Up @@ -3205,6 +3297,19 @@ class GroupInstanceCustomInternal : public sigslot::has_slots<>, public std::ena
}
}

void getStats(std::function<void(GroupInstanceStats)> completion) {
GroupInstanceStats result;

for (const auto &it : _incomingVideoChannels) {
const auto videoStats = it.second->getStats();
if (videoStats) {
result.incomingVideoStats.push_back(std::make_pair(it.second->endpointId(), videoStats.value()));
}
}

completion(result);
}

private:
rtc::scoped_refptr<WrappedAudioDeviceModule> createAudioDeviceModule() {
const auto create = [&](webrtc::AudioDeviceModule::AudioLayer layer) {
Expand Down Expand Up @@ -3465,6 +3570,12 @@ void GroupInstanceCustomImpl::setRequestedVideoChannels(std::vector<VideoChannel
});
}

void GroupInstanceCustomImpl::getStats(std::function<void(GroupInstanceStats)> completion) {
_internal->perform(RTC_FROM_HERE, [completion = std::move(completion)](GroupInstanceCustomInternal *internal) mutable {
internal->getStats(completion);
});
}

std::vector<GroupInstanceInterface::AudioDevice> GroupInstanceInterface::getAudioDevices(AudioDevice::Type type) {
auto result = std::vector<AudioDevice>();
#ifdef WEBRTC_LINUX //Not needed for ios, and some crl::sync stuff is needed for windows
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ class GroupInstanceCustomImpl final : public GroupInstanceInterface {
void setVolume(uint32_t ssrc, double volume);
void setRequestedVideoChannels(std::vector<VideoChannelDescription> &&requestedVideoChannels);

void getStats(std::function<void(GroupInstanceStats)> completion);

private:
std::shared_ptr<Threads> _threads;
std::unique_ptr<ThreadLocalObject<GroupInstanceCustomInternal>> _internal;
Expand Down
11 changes: 11 additions & 0 deletions TMessagesProj/jni/voip/tgcalls/group/GroupInstanceImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,15 @@ struct VideoChannelDescription {
Quality maxQuality = Quality::Thumbnail;
};

struct GroupInstanceStats {
struct IncomingVideoStats {
int receivingQuality = 0;
int availableQuality = 0;
};

std::vector<std::pair<std::string, IncomingVideoStats>> incomingVideoStats;
};

struct GroupInstanceDescriptor {
std::shared_ptr<Threads> threads;
GroupConfig config;
Expand Down Expand Up @@ -185,6 +194,8 @@ class GroupInstanceInterface {
virtual void setVolume(uint32_t ssrc, double volume) = 0;
virtual void setRequestedVideoChannels(std::vector<VideoChannelDescription> &&requestedVideoChannels) = 0;

virtual void getStats(std::function<void(GroupInstanceStats)> completion) = 0;

struct AudioDevice {
enum class Type {Input, Output};
std::string name;
Expand Down
Binary file modified TMessagesProj/src/main/assets/emoji/0_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_100.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1000.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1005.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1006.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1007.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1008.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1009.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_101.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1010.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1011.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1012.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1013.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1014.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1015.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1016.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1017.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1018.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_1019.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified TMessagesProj/src/main/assets/emoji/0_102.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1020.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1021.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1022.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1023.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1024.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1025.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1026.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1027.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1028.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1029.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_103.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1030.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1031.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1032.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1033.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1034.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1035.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1036.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1037.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1038.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1039.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_104.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1040.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1041.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1042.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1043.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1044.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1045.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1046.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1047.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1048.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1049.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_105.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1050.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1051.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1052.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1053.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1054.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1055.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1056.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1057.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1058.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1059.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_106.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1060.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1061.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1062.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1063.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1064.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1065.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1066.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1067.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1068.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1069.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_107.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1070.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1071.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1072.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1073.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1074.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1075.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1076.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1077.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1078.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1079.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_108.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1080.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1081.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1082.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1083.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1084.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1085.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1086.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1087.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1088.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1089.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_109.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1090.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1091.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1092.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1093.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1094.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1095.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1096.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1097.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1098.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1099.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_11.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_110.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1100.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1101.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1102.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1103.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1104.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1105.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1106.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1107.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1108.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1109.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_111.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1110.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1111.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1112.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1113.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1114.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1115.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1116.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1117.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1118.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1119.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_112.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1120.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1121.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1122.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1123.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1124.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1125.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1126.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1127.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1128.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1129.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_113.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1130.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1131.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1132.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1133.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1134.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1135.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1136.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1137.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1138.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1139.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_114.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1140.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1141.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1142.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1143.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1144.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1145.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1146.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1147.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1148.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1149.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_115.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1150.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1151.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1152.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1153.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1154.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1155.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1156.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1157.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1158.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1159.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_116.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1160.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1161.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1162.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1163.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1164.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1165.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1166.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1167.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1168.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1169.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_117.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1170.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1171.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1172.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1173.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1174.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1175.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1176.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1177.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1178.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1179.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_118.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1180.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1181.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1182.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1183.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1184.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1185.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1186.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1187.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1188.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1189.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_119.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1190.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1191.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1192.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1193.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1194.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1195.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1196.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1197.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1198.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1199.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_12.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_120.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1200.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1201.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1202.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1203.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1204.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1205.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1206.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1207.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1208.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1209.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_121.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1210.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1211.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1212.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1213.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1214.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1215.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1216.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1217.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1218.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1219.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_122.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1220.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1221.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1222.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1223.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1224.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1225.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1226.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1227.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1228.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1229.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_123.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1230.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1231.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1232.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1233.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1234.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1235.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1236.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1237.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1238.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1239.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_124.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1240.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1241.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1242.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1243.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1244.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1245.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1246.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1247.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1248.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1249.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_125.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1250.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1251.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1252.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1253.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1254.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1255.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1256.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1257.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1258.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_1259.png
Binary file modified TMessagesProj/src/main/assets/emoji/0_126.png
Loading

0 comments on commit fc12550

Please sign in to comment.