From 19f9b56d2c2a031a213cbd0d4e6a3aae8d38b956 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Sat, 16 Apr 2016 20:51:25 +0300
Subject: [PATCH 01/12] codegen_style project started, basic (common) tokenizer
 done.

---
 Telegram.sln                                  |   1 +
 Telegram/Resources/all_files.style            |  26 ++
 Telegram/Resources/style.txt                  |  11 +-
 Telegram/SourceFiles/app.cpp                  |  13 +-
 .../codegen/common/basic_tokenized_file.cpp   | 271 ++++++++++++++++++
 .../codegen/common/basic_tokenized_file.h     | 151 ++++++++++
 .../codegen/common/checked_utf8_string.cpp    |  54 ++++
 .../codegen/common/checked_utf8_string.h      |  57 ++++
 .../SourceFiles/codegen/common/clean_file.cpp | 159 ++++++++++
 .../SourceFiles/codegen/common/clean_file.h   |  66 +++++
 .../codegen/common/clean_file_reader.h        |  75 +++++
 .../codegen/common/const_utf8_string.h        |  75 +++++
 .../SourceFiles/codegen/common/logging.cpp    |  47 +++
 Telegram/SourceFiles/codegen/common/logging.h |  63 ++++
 .../SourceFiles/codegen/style/generator.cpp   |  62 ++++
 .../SourceFiles/codegen/style/generator.h     |  50 ++++
 Telegram/SourceFiles/codegen/style/main.cpp   |  42 ++-
 .../codegen/style/tokenized_file.cpp          | 136 +++++++++
 .../codegen/style/tokenized_file.h            | 127 ++++++++
 Telegram/Telegram.vcxproj                     |   4 +
 Telegram/Telegram.vcxproj.filters             |   5 +
 .../vc/codegen_style/codegen_style.targets    |  20 ++
 .../vc/codegen_style/codegen_style.vcxproj    |  29 +-
 .../codegen_style.vcxproj.filters             |  64 ++++-
 .../build/vc/codegen_style/codegen_style.xml  |   6 +
 25 files changed, 1587 insertions(+), 27 deletions(-)
 create mode 100644 Telegram/Resources/all_files.style
 create mode 100644 Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
 create mode 100644 Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
 create mode 100644 Telegram/SourceFiles/codegen/common/checked_utf8_string.cpp
 create mode 100644 Telegram/SourceFiles/codegen/common/checked_utf8_string.h
 create mode 100644 Telegram/SourceFiles/codegen/common/clean_file.cpp
 create mode 100644 Telegram/SourceFiles/codegen/common/clean_file.h
 create mode 100644 Telegram/SourceFiles/codegen/common/clean_file_reader.h
 create mode 100644 Telegram/SourceFiles/codegen/common/const_utf8_string.h
 create mode 100644 Telegram/SourceFiles/codegen/common/logging.cpp
 create mode 100644 Telegram/SourceFiles/codegen/common/logging.h
 create mode 100644 Telegram/SourceFiles/codegen/style/generator.cpp
 create mode 100644 Telegram/SourceFiles/codegen/style/generator.h
 create mode 100644 Telegram/SourceFiles/codegen/style/tokenized_file.cpp
 create mode 100644 Telegram/SourceFiles/codegen/style/tokenized_file.h
 create mode 100644 Telegram/build/vc/codegen_style/codegen_style.targets
 create mode 100644 Telegram/build/vc/codegen_style/codegen_style.xml

diff --git a/Telegram.sln b/Telegram.sln
index 6487c468a..fe3eed1b1 100644
--- a/Telegram.sln
+++ b/Telegram.sln
@@ -6,6 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Telegram", "Telegram\Telegram.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}"
 	ProjectSection(ProjectDependencies) = postProject
 		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0} = {6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}
+		{E4DF8176-4DEF-4859-962F-B497E3E7A323} = {E4DF8176-4DEF-4859-962F-B497E3E7A323}
 		{E417CAA4-259B-4C99-88E3-805F1300E8EB} = {E417CAA4-259B-4C99-88E3-805F1300E8EB}
 		{EB7D16AC-EACF-4577-B05A-F28E5F356794} = {EB7D16AC-EACF-4577-B05A-F28E5F356794}
 	EndProjectSection
diff --git a/Telegram/Resources/all_files.style b/Telegram/Resources/all_files.style
new file mode 100644
index 000000000..93a8e078e
--- /dev/null
+++ b/Telegram/Resources/all_files.style
@@ -0,0 +1,26 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+
+// Legacy styles
+using "./style_classes.txt";
+using "./style.txt";
+
+//using "./../SourceFiles/overview/overview.style";
diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt
index 626846aac..ec6871bf4 100644
--- a/Telegram/Resources/style.txt
+++ b/Telegram/Resources/style.txt
@@ -18,14 +18,13 @@ to link the code of portions of this program with the OpenSSL library.
 Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
-defaultFontFamily: 'Open Sans';
-semibold: 'Open Sans Semibold';
+defaultFontFamily: "Open Sans";
+semibold: "Open Sans Semibold";
 
 fsize: 13px;
 normalFont: font(fsize);
 semiboldFont: font(fsize semibold);
 
-spriteFile: ':/gui/art/sprite.png' / 2:':/gui/art/sprite_125x.png' / 3:':/gui/art/sprite_150x.png' / 4:':/gui/art/sprite_200x.png';
 emojiImgSize: 18px; // exceptional value for retina
 emojiSize: 18px;
 emojiPadding: 0px;
@@ -1116,8 +1115,8 @@ msgLinkColor: #2a6dc2;
 msgPressedLinkColor: #004bad;
 msgSkip: 40px;
 msgPtr: 8px;
-msgBG: ':/gui/art/bg.jpg';
-msgBG0: ':/gui/art/bg0.png';
+msgBG: ":/gui/art/bg.jpg";
+msgBG0: ":/gui/art/bg0.png";
 
 msgCheckPos: point(3px, 1px);
 msgSendingImg: sprite(260px, 20px, 20px, 20px);
@@ -1548,7 +1547,7 @@ reportSpamButton: flatButton(reportSpamHide) {
 reportSpamSeparator: 30px;
 reportSpamBg: #fffffff0;
 
-newMsgSound: ':/gui/art/newmsg.wav';
+newMsgSound: ":/gui/art/newmsg.wav";
 
 unreadBarHeight: 32px;
 unreadBarMargin: 8px;
diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp
index ec8db9052..d91437298 100644
--- a/Telegram/SourceFiles/app.cpp
+++ b/Telegram/SourceFiles/app.cpp
@@ -1994,10 +1994,19 @@ namespace {
 			::monofont = style::font(st::normalFont->f.pixelSize(), 0, family);
 		}
 		if (!::sprite) {
+			QString spriteFilePostfix;
+			if (cRetina() || cScale() == dbisTwo) {
+				spriteFilePostfix = qsl("_200x");
+			} else if (cScale() == dbisOneAndQuarter) {
+				spriteFilePostfix = qsl("_125x");
+			} else if (cScale() == dbisOneAndHalf) {
+				spriteFilePostfix = qsl("_150x");
+			}
+			QString spriteFile = qsl(":/gui/art/sprite") + spriteFilePostfix + qsl(".png");
 			if (rtl()) {
-				::sprite = new QPixmap(QPixmap::fromImage(QImage(st::spriteFile).mirrored(true, false)));
+				::sprite = new QPixmap(QPixmap::fromImage(QImage(spriteFile).mirrored(true, false)));
 			} else {
-				::sprite = new QPixmap(st::spriteFile);
+				::sprite = new QPixmap(spriteFile);
 			}
             if (cRetina()) ::sprite->setDevicePixelRatio(cRetinaFactor());
 		}
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
new file mode 100644
index 000000000..1619fcc80
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
@@ -0,0 +1,271 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/common/basic_tokenized_file.h"
+
+#include "codegen/common/logging.h"
+#include "codegen/common/clean_file_reader.h"
+#include "codegen/common/checked_utf8_string.h"
+
+using Token = codegen::common::BasicTokenizedFile::Token;
+using Type = Token::Type;
+
+namespace codegen {
+namespace common {
+namespace {
+
+constexpr int kErrorUnterminatedStringLiteral = 201;
+constexpr int kErrorIncorrectUtf8String       = 202;
+constexpr int kErrorIncorrectToken            = 203;
+constexpr int kErrorUnexpectedToken           = 204;
+
+bool isDigitChar(char ch) {
+	return (ch >= '0') && (ch <= '9');
+}
+
+bool isNameChar(char ch) {
+	return isDigitChar(ch) || ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) || (ch == '_');
+}
+
+bool isWhitespaceChar(char ch) {
+	return (ch == '\n' || ch == ' ' || ch == '\t');
+}
+
+Token invalidToken() {
+	return { Type::Invalid, QString(), ConstUtf8String(nullptr, 0) };
+}
+
+} // namespace
+
+BasicTokenizedFile::BasicTokenizedFile(const QString &filepath) : reader_(filepath) {
+}
+
+bool BasicTokenizedFile::putBack() {
+	if (currentToken_ > 0) {
+		--currentToken_;
+		return true;
+	}
+	return false;
+}
+
+Token BasicTokenizedFile::getAnyToken() {
+	if (currentToken_ >= tokens_.size()) {
+		if (readToken() == Type::Invalid) {
+			return invalidToken();
+		}
+	}
+	return tokens_.at(currentToken_++);
+}
+
+Token BasicTokenizedFile::getToken(Type typeCondition) {
+	if (auto token = getAnyToken()) {
+		if (token.type == typeCondition) {
+			return token;
+		}
+		putBack();
+	}
+	return invalidToken();
+}
+
+Type BasicTokenizedFile::readToken() {
+	auto result = readOneToken(StartWithWhitespace::Allow);
+
+	// Try to read double token.
+	if (result == Type::Int) {
+		if (readOneToken(StartWithWhitespace::Deny) == Type::Dot) {
+			// We got int and dot, so it is double already.
+			result = uniteLastTokens(Type::Double);
+
+			// Try to read one more int (after dot).
+			if (readOneToken(StartWithWhitespace::Deny) == Type::Int) {
+				result = uniteLastTokens(Type::Double);
+			}
+		}
+	} else if (result == Type::Dot) {
+		if (readOneToken(StartWithWhitespace::Deny) == Type::Int) {
+			//We got dot and int, so it is double.
+			result = uniteLastTokens(Type::Double);
+		}
+	}
+	return result;
+}
+
+Type BasicTokenizedFile::readOneToken(StartWithWhitespace condition) {
+	skipWhitespaces();
+	if (tokenStartWhitespace_ && condition == StartWithWhitespace::Deny) {
+		return Type::Invalid;
+	}
+	if (reader_.atEnd()) {
+		return Type::Invalid;
+	}
+
+	auto ch = reader_.currentChar();
+	if (ch == '"') {
+		return readString();
+	} else if (isNameChar(ch)) {
+		return readNameOrNumber();
+	}
+	return readSingleLetter();
+}
+
+Type BasicTokenizedFile::saveToken(Type type, const QString &value) {
+	ConstUtf8String original = { tokenStart_, reader_.currentPtr() };
+	tokens_.push_back({ type, value, original, tokenStartWhitespace_ });
+	return type;
+}
+
+Type BasicTokenizedFile::uniteLastTokens(Type type) {
+	auto size = tokens_.size();
+	if (size < 2) {
+		return Type::Invalid;
+	}
+
+	auto &token(tokens_[size - 2]);
+	auto originalFrom = token.original.data();
+	auto originalTill = tokens_.back().original.end();
+	token.type = type;
+	token.original = { originalFrom, originalTill };
+	token.value += tokens_.back().value;
+	tokens_.pop_back();
+	return type;
+}
+
+Type BasicTokenizedFile::readNameOrNumber() {
+	bool onlyDigits = true;
+	while (!reader_.atEnd()) {
+		if (!isDigitChar(reader_.currentChar())) {
+			onlyDigits = false;
+			break;
+		}
+		reader_.skipChar();
+	}
+	while (!reader_.atEnd()) {
+		if (!isNameChar(reader_.currentChar())) {
+			break;
+		}
+		reader_.skipChar();
+	}
+	return saveToken(onlyDigits ? Type::Int : Type::Name);
+}
+
+Type BasicTokenizedFile::readString() {
+	reader_.skipChar();
+	auto offset = reader_.currentPtr();
+
+	QByteArray value;
+	while (!reader_.atEnd()) {
+		auto ch = reader_.currentChar();
+		if (ch == '"') {
+			break;
+		}
+		if (ch == '\n') {
+			reader_.logError(kErrorUnterminatedStringLiteral, lineNumber_) << "unterminated string literal.";
+			failed_ = true;
+			return Type::Invalid;
+		}
+		if (ch == '\\') {
+			reader_.skipChar();
+			ch = reader_.currentChar();
+			if (reader_.atEnd() || ch == '\n') {
+				reader_.logError(kErrorUnterminatedStringLiteral, lineNumber_) << "unterminated string literal.";
+				failed_ = true;
+				return Type::Invalid;
+			}
+			if (reader_.currentPtr() > offset + 1) {
+				value.append(offset, reader_.currentPtr() - offset - 1);
+			}
+			offset = reader_.currentPtr() + 1;
+			if (ch == 'n') {
+				value.append('\n');
+			} else if (ch == 't') {
+				value.append('\t');
+			} else if (ch == '"') {
+				value.append('"');
+			} else if (ch == '\\') {
+				value.append('\\');
+			}
+		} else {
+			value.append(ch);
+		}
+		reader_.skipChar();
+	}
+	if (reader_.atEnd()) {
+		reader_.logError(kErrorUnterminatedStringLiteral, lineNumber_) << "unterminated string literal.";
+		failed_ = true;
+		return Type::Invalid;
+	}
+	CheckedUtf8String checked(value);
+	if (!checked.isValid()) {
+		reader_.logError(kErrorIncorrectUtf8String, lineNumber_) << "incorrect UTF-8 string literal.";
+		failed_ = true;
+		return Type::Invalid;
+	}
+	reader_.skipChar();
+	return saveToken(Type::String, checked.toString());
+}
+
+Type BasicTokenizedFile::readSingleLetter() {
+	auto type = singleLetterTokens_.value(reader_.currentChar(), Type::Invalid);
+	if (type == Type::Invalid) {
+		reader_.logError(kErrorIncorrectToken, lineNumber_) << "incorrect token '" << reader_.currentChar() << "'.";
+		return Type::Invalid;
+	}
+
+	reader_.skipChar();
+	return saveToken(type);
+}
+
+void BasicTokenizedFile::skipWhitespaces() {
+	if (reader_.atEnd()) return;
+
+	auto ch = reader_.currentChar();
+	tokenStartWhitespace_ = isWhitespaceChar(ch);
+	if (tokenStartWhitespace_) {
+		do {
+			if (ch == '\n') {
+				++lineNumber_;
+			}
+			reader_.skipChar();
+			ch = reader_.currentChar();
+		} while (!reader_.atEnd() && isWhitespaceChar(ch));
+	}
+	tokenStart_ = reader_.currentPtr();
+}
+
+LogStream BasicTokenizedFile::logError(int code) const {
+	return reader_.logError(code, lineNumber_);
+}
+
+LogStream BasicTokenizedFile::logErrorUnexpectedToken(const std::string &expected) const {
+	std::string expectedTail;
+	if (!expected.empty()) {
+		expectedTail = ", expected " + expected;
+	}
+	if (currentToken_ < tokens_.size()) {
+		auto token = tokens_.at(currentToken_).original.toStdString();
+		return logError(kErrorUnexpectedToken) << "unexpected token '" << token << '\'' << expectedTail << '.';
+	}
+	return logError(kErrorUnexpectedToken) << "unexpected token" << expectedTail << '.';
+}
+
+BasicTokenizedFile::~BasicTokenizedFile() = default;
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
new file mode 100644
index 000000000..67b001736
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
@@ -0,0 +1,151 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <QtCore/QString>
+#include <QtCore/QMap>
+#include <QtCore/QList>
+
+#include "codegen/common/const_utf8_string.h"
+#include "codegen/common/clean_file_reader.h"
+
+namespace codegen {
+namespace common {
+
+class LogStream;
+
+// Interface for reading a cleaned from comments file by basic tokens.
+class BasicTokenizedFile {
+public:
+	BasicTokenizedFile(const QString &filepath);
+	BasicTokenizedFile(const BasicTokenizedFile &other) = delete;
+	BasicTokenizedFile &operator=(const BasicTokenizedFile &other) = delete;
+
+	struct Token {
+		// String - utf8 string converted to QString.
+		enum class Type {
+			Invalid = 0,
+			Int,
+			Double,
+			String,
+			LeftParenthesis,
+			RightParenthesis,
+			LeftBrace,
+			RightBrace,
+			LeftBracket,
+			RightBracket,
+			Colon,
+			Semicolon,
+			Comma,
+			Dot,
+			Number,
+			Plus,
+			Minus,
+			Equals,
+			Name, // [0-9a-zA-Z_]+ with at least one letter.
+		};
+		Type type;
+		QString value;
+		ConstUtf8String original;
+		bool hasLeftWhitespace;
+
+		explicit operator bool() const {
+			return (type != Type::Invalid);
+		}
+	};
+
+	bool read() {
+		return reader_.read();
+	}
+	bool atEnd() const {
+		return reader_.atEnd();
+	}
+
+	Token getAnyToken();
+	Token getToken(Token::Type typeCondition);
+	bool putBack();
+	bool failed() const {
+		return failed_;
+	}
+
+	// Log error to std::cerr with 'code' at the current position in file.
+	LogStream logError(int code) const;
+	LogStream logErrorUnexpectedToken(const std::string &expected = std::string()) const;
+
+	~BasicTokenizedFile();
+
+private:
+	using Type = Token::Type;
+
+	void skipWhitespaces();
+
+	// Reads a token, including complex tokens, like double numbers.
+	Type readToken();
+
+	// Read exactly one token, applying condition on the whitespaces.
+	enum class StartWithWhitespace {
+		Allow,
+		Deny,
+	};
+	Type readOneToken(StartWithWhitespace condition);
+
+	// helpers
+	Type readNameOrNumber();
+	Type readString();
+	Type readSingleLetter();
+
+	Type saveToken(Type type, const QString &value = QString());
+	Type uniteLastTokens(Type type);
+
+	CleanFileReader reader_;
+	QList<Token> tokens_;
+	int currentToken_ = 0;
+	int lineNumber_ = 1;
+	bool failed_ = false;
+
+	// Where the last (currently read) token has started.
+	const char *tokenStart_ = nullptr;
+
+	// Did the last (currently read) token start with a whitespace.
+	bool tokenStartWhitespace_ = false;
+
+	const QMap<char, Type> singleLetterTokens_ = {
+		{ '(', Type::LeftParenthesis },
+		{ ')', Type::RightParenthesis },
+		{ '{', Type::LeftBrace },
+		{ '}', Type::RightBrace },
+		{ '[', Type::LeftBracket },
+		{ ']', Type::RightBracket },
+		{ ':', Type::Colon },
+		{ ';', Type::Semicolon },
+		{ ',', Type::Comma },
+		{ '.', Type::Dot },
+		{ '#', Type::Number },
+		{ '+', Type::Plus },
+		{ '-', Type::Minus },
+		{ '=', Type::Equals },
+	};
+
+};
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/checked_utf8_string.cpp b/Telegram/SourceFiles/codegen/common/checked_utf8_string.cpp
new file mode 100644
index 000000000..96f7323ff
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/checked_utf8_string.cpp
@@ -0,0 +1,54 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/common/checked_utf8_string.h"
+
+#include <iostream>
+#include <QtCore/QTextCodec>
+
+#include "codegen/common/const_utf8_string.h"
+
+namespace codegen {
+namespace common {
+
+CheckedUtf8String::CheckedUtf8String(const char *string, int size) {
+	if (size < 0) {
+		size = strlen(string);
+	}
+	if (!size) { // Valid empty string
+		return;
+	}
+
+	QTextCodec::ConverterState state;
+	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
+	string_ = codec->toUnicode(string, size, &state);
+	if (state.invalidChars > 0) {
+		valid_ = false;
+	}
+}
+
+CheckedUtf8String::CheckedUtf8String(const QByteArray &string) : CheckedUtf8String(string.constData(), string.size()) {
+}
+
+CheckedUtf8String::CheckedUtf8String(const ConstUtf8String &string) : CheckedUtf8String(string.data(), string.size()) {
+}
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/checked_utf8_string.h b/Telegram/SourceFiles/codegen/common/checked_utf8_string.h
new file mode 100644
index 000000000..5ce217067
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/checked_utf8_string.h
@@ -0,0 +1,57 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+
+class QByteArray;
+
+namespace codegen {
+namespace common {
+
+class ConstUtf8String;
+
+// Parses a char sequence to a QString using UTF-8 codec.
+// You can check for invalid UTF-8 sequence by isValid() method.
+class CheckedUtf8String {
+public:
+	CheckedUtf8String(const CheckedUtf8String &other) = default;
+	CheckedUtf8String &operator=(const CheckedUtf8String &other) = default;
+
+	CheckedUtf8String(const char *string, int size = -1);
+	CheckedUtf8String(const QByteArray &string);
+	CheckedUtf8String(const ConstUtf8String &string);
+
+	bool isValid() const {
+		return valid_;
+	}
+	const QString &toString() const {
+		return string_;
+	}
+
+private:
+	QString string_;
+	bool valid_ = true;
+
+};
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/clean_file.cpp b/Telegram/SourceFiles/codegen/common/clean_file.cpp
new file mode 100644
index 000000000..154084792
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/clean_file.cpp
@@ -0,0 +1,159 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/common/clean_file.h"
+
+#include <iostream>
+#include <QtCore/QDir>
+
+#include "codegen/common/logging.h"
+
+namespace codegen {
+namespace common {
+namespace {
+
+constexpr int kErrorFileNotFound        = 101;
+constexpr int kErrorFileTooLarge        = 102;
+constexpr int kErrorFileNotOpened       = 103;
+constexpr int kErrorUnexpectedEndOfFile = 104;
+
+bool readFile(const QString &filepath, QByteArray *outResult) {
+	QFile f(filepath);
+	if (!f.exists()) {
+		logError(kErrorFileNotFound, filepath) << ": error: file does not exist.";
+		return false;
+	}
+	if (f.size() > CleanFile::MaxSize) {
+		logError(kErrorFileTooLarge, filepath) << "' is too large, size=" << f.size() << " > maxsize=" << CleanFile::MaxSize;
+		return false;
+	}
+	if (!f.open(QIODevice::ReadOnly)) {
+		logError(kErrorFileNotOpened, filepath) << "' for read.";
+		return false;
+	}
+	*outResult = f.readAll();
+	return true;
+}
+
+} // namespace
+
+
+CleanFile::CleanFile(const QString &filepath) : filepath_(filepath) {
+}
+
+bool CleanFile::read() {
+	QByteArray content;
+	if (!readFile(filepath_, &content)) {
+		return false;
+	}
+	filepath_ = QFileInfo(filepath_).absoluteFilePath();
+
+	enum class InsideComment {
+		None,
+		SingleLine,
+		MultiLine,
+	};
+	auto insideComment = InsideComment::None;
+	bool insideString = false;
+
+	const char *begin = content.cbegin(), *end = content.cend(), *offset = begin;
+	auto feedContent = [this, &offset, end](const char *ch) {
+		if (ch > offset) {
+			if (content_.isEmpty()) content_.reserve(end - offset - 2);
+			content_.append(offset, ch - offset);
+			offset = ch;
+		}
+	};
+	auto feedComment = [this, &offset, end](const char *ch) {
+		if (ch > offset) {
+//			comments_.push_back({ content_.size(), QByteArray(offset, ch - offset) });
+			if (content_.isEmpty()) content_.reserve(end - offset - 2);
+			content_.append(' ');
+			offset = ch;
+		}
+	};
+	for (const char *ch = offset; ch != end;) {
+		char currentChar = *ch;
+		char nextChar = (ch + 1 == end) ? 0 : *(ch + 1);
+
+		if (insideComment == InsideComment::None && currentChar == '"') {
+			bool escaped = ((ch > begin) && *(ch - 1) == '\\') && ((ch - 1 < begin) || *(ch - 2) != '\\');
+			if (!escaped) {
+				insideString = !insideString;
+			}
+		}
+		if (insideString) {
+			++ch;
+			continue;
+		}
+
+		if (insideComment == InsideComment::None && currentChar == '/' && nextChar == '/') {
+			feedContent(ch);
+			insideComment = InsideComment::SingleLine;
+			ch += 2;
+		} else if (insideComment == InsideComment::SingleLine && currentChar == '\r' && nextChar == '\n') {
+			feedComment(ch);
+			ch += 2;
+			insideComment = InsideComment::None;
+		} else if (insideComment == InsideComment::SingleLine && currentChar == '\n') {
+			feedComment(ch);
+			++ch;
+			insideComment = InsideComment::None;
+		} else if (insideComment == InsideComment::None && currentChar == '/' && nextChar == '*') {
+			feedContent(ch);
+			ch += 2;
+			insideComment = InsideComment::MultiLine;
+		} else if (insideComment == InsideComment::MultiLine && currentChar == '*' && nextChar == '/') {
+			ch += 2;
+			feedComment(ch);
+			insideComment = InsideComment::None;
+		} else if (insideComment == InsideComment::MultiLine && currentChar == '\r' && nextChar == '\n') {
+			feedComment(ch);
+			ch += 2;
+			feedContent(ch);
+		} else if (insideComment == InsideComment::MultiLine && currentChar == '\n') {
+			feedComment(ch);
+			++ch;
+			feedContent(ch);
+		} else {
+			++ch;
+		}
+	}
+
+	if (insideComment == InsideComment::MultiLine) {
+		common::logError(kErrorUnexpectedEndOfFile, filepath_);
+		return false;
+	}
+	if (insideComment == InsideComment::None && end > offset) {
+		if (content_.isEmpty()) {
+			content_ = content;
+		} else {
+			content_.append(offset, end - offset);
+		}
+	}
+	return true;
+}
+
+LogStream CleanFile::logError(int code, int line) const {
+	return common::logError(code, filepath_, line);
+}
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/clean_file.h b/Telegram/SourceFiles/codegen/common/clean_file.h
new file mode 100644
index 000000000..80d4f73e3
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/clean_file.h
@@ -0,0 +1,66 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+#include <QtCore/QByteArray>
+#include <QtCore/QVector>
+
+#include "codegen/common/logging.h"
+
+namespace codegen {
+namespace common {
+
+// Reads a file removing all C-style comments.
+class CleanFile {
+public:
+	CleanFile(const QString &filepath);
+	CleanFile(const CleanFile &other) = delete;
+	CleanFile &operator=(const CleanFile &other) = delete;
+
+	bool read();
+
+	const char *data() const {
+		return content_.constData();
+	}
+	const char *end() const {
+		return content_.constEnd();
+	}
+
+	static constexpr int MaxSize = 10 * 1024 * 1024;
+
+	// Log error to std::cerr with 'code' at line number 'line' in data().
+	LogStream logError(int code, int line) const;
+
+private:
+	QString filepath_;
+
+	QByteArray content_;
+	//struct Comment {
+	//	int offset;
+	//	QByteArray content;
+	//};
+	//QVector<Comment> comments_;
+
+};
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/clean_file_reader.h b/Telegram/SourceFiles/codegen/common/clean_file_reader.h
new file mode 100644
index 000000000..18c8ee31e
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/clean_file_reader.h
@@ -0,0 +1,75 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+
+#include "codegen/common/clean_file.h"
+
+namespace codegen {
+namespace common {
+
+// Wrapper allows you to read forward the CleanFile without overflow checks.
+class CleanFileReader {
+public:
+	CleanFileReader(const QString &filepath) : file_(filepath) {
+	}
+
+	bool read() {
+		if (!file_.read()) {
+			return false;
+		}
+		pos_ = file_.data();
+		end_ = file_.end();
+		return true;
+	}
+	bool atEnd() const {
+		return (pos_ == end_);
+	}
+	char currentChar() const {
+		return atEnd() ? 0 : *pos_;
+	}
+	bool skipChar() {
+		if (atEnd()) {
+			return false;
+		}
+		++pos_;
+		return true;
+	}
+	const char *currentPtr() const {
+		return pos_;
+	}
+
+	// Log error to std::cerr with 'code' at line number 'line' in data().
+	LogStream logError(int code, int line) const {
+		return std::forward<LogStream>(file_.logError(code, line));
+	}
+
+
+private:
+	CleanFile file_;
+	const char *pos_ = nullptr;
+	const char *end_ = nullptr;
+
+};
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/const_utf8_string.h b/Telegram/SourceFiles/codegen/common/const_utf8_string.h
new file mode 100644
index 000000000..18f0849c8
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/const_utf8_string.h
@@ -0,0 +1,75 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <string>
+#include <QtCore/QString>
+#include <QtCore/QByteArray>
+
+namespace codegen {
+namespace common {
+
+// This is a simple wrapper around (const char*, size).
+// Not null-terminated! It does not hold any ownership.
+class ConstUtf8String {
+public:
+	ConstUtf8String(const char *string, int size = -1) : string_(string) {
+		if (size < 0) {
+			size = strlen(string);
+		}
+		size_ = size;
+	}
+	ConstUtf8String(const char *string, const char *end) : ConstUtf8String(string, end - string) {
+	}
+
+	QByteArray toByteArray() const {
+		return QByteArray(string_, size_);
+	}
+	std::string toStdString() const {
+		return std::string(string_, size_);
+	}
+	QString toStringUnchecked() const {
+		return QString::fromUtf8(string_, size_);
+	}
+	bool empty() const {
+		return size_ == 0;
+	}
+	const char *data() const {
+		return string_;
+	}
+	int size() const {
+		return size_;
+	}
+	const char *end() const {
+		return data() + size();
+	}
+	ConstUtf8String mid(int pos, int size = -1) {
+		return ConstUtf8String(string_ + pos, std::max(std::min(size, size_ - pos), 0));
+	}
+
+private:
+	const char *string_;
+	int size_;
+
+};
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/logging.cpp b/Telegram/SourceFiles/codegen/common/logging.cpp
new file mode 100644
index 000000000..917020a5e
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/logging.cpp
@@ -0,0 +1,47 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/common/logging.h"
+
+#include <iostream>
+#include <QtCore/QDir>
+
+namespace codegen {
+namespace common {
+namespace {
+
+std::string relativeLocalPath(const QString &filepath) {
+	auto name = QFile::encodeName(QDir().relativeFilePath(filepath));
+	return name.constData();
+}
+
+} // namespace
+
+LogStream logError(int code, const QString &filepath, int line) {
+	std::cerr << relativeLocalPath(filepath);
+	if (line > 0) {
+		std::cerr << '(' << line << ')';
+	}
+	std::cerr << ": error " << code << ": ";
+	return LogStream(std::cerr);
+}
+
+} // namespace common
+} // namespace codegen
\ No newline at end of file
diff --git a/Telegram/SourceFiles/codegen/common/logging.h b/Telegram/SourceFiles/codegen/common/logging.h
new file mode 100644
index 000000000..1aa1f1481
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/logging.h
@@ -0,0 +1,63 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+#include <iostream>
+
+namespace codegen {
+namespace common {
+
+// Wrapper around std::ostream that adds '\n' to the end of the logging line.
+class LogStream {
+public:
+	explicit LogStream(std::ostream &stream) : stream_(stream) {
+	}
+	LogStream(LogStream &&other) : stream_(other.stream_) {
+		other.final_ = false;
+	}
+	std::ostream &stream() const {
+		return stream_;
+	}
+	~LogStream() {
+		if (final_) {
+			stream_ << '\n';
+		}
+	}
+
+private:
+	std::ostream &stream_;
+	bool final_ = true;
+
+};
+
+template <typename T>
+LogStream operator<<(LogStream &&stream, T &&value) {
+	stream.stream() << value;
+	return std::forward<LogStream>(stream);
+}
+
+// Outputs file name, line number and error code to std::err. Usage:
+// logError(kErrorFileTooLarge, filepath) << "file too large, size=" << size;
+LogStream logError(int code, const QString &filepath, int line = 0);
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/generator.cpp b/Telegram/SourceFiles/codegen/style/generator.cpp
new file mode 100644
index 000000000..70a917d3c
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/generator.cpp
@@ -0,0 +1,62 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/generator.h"
+
+#include <QtGui/QImage>
+#include "codegen/style/tokenized_file.h"
+
+using Token = codegen::style::TokenizedFile::Token;
+using Type = Token::Type;
+
+namespace codegen {
+namespace style {
+namespace {
+
+} // namespace
+
+Generator::Generator(const QString &filepath, bool rebuildDependencies)
+: file_(std::make_unique<TokenizedFile>(filepath))
+, rebuild_(rebuildDependencies) {
+
+}
+
+int Generator::process() {
+	if (!file_->read()) {
+		return -1;
+	}
+
+	while (true) {
+		auto token = file_->getToken();
+		if (token.type == Type::Using) {
+			continue;
+		}
+		if (file_->atEnd() && !file_->failed()) {
+			break;
+		}
+		return -1;
+	}
+	return 0;
+}
+
+Generator::~Generator() = default;
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/generator.h b/Telegram/SourceFiles/codegen/style/generator.h
new file mode 100644
index 000000000..57e922267
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/generator.h
@@ -0,0 +1,50 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <QtCore/QString>
+
+namespace codegen {
+namespace style {
+
+class TokenizedFile;
+
+// Walks through a file, parses it and parses dependency files if necessary.
+class Generator {
+public:
+	Generator(const QString &filepath, bool rebuildDependencies);
+	Generator(const Generator &other) = delete;
+	Generator &operator=(const Generator &other) = delete;
+
+	// Returns 0 on success.
+	int process();
+
+	~Generator();
+
+private:
+	std::unique_ptr<TokenizedFile> file_;
+	bool rebuild_;
+
+};
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/main.cpp b/Telegram/SourceFiles/codegen/style/main.cpp
index a553b5173..951f34b32 100644
--- a/Telegram/SourceFiles/codegen/style/main.cpp
+++ b/Telegram/SourceFiles/codegen/style/main.cpp
@@ -1,3 +1,43 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include <QtCore/QCoreApplication>
+#include <QtCore/QTimer>
+
+#include "codegen/style/generator.h"
+
+using namespace codegen::style;
+
 int main(int argc, char *argv[]) {
-	return 0;
+	QCoreApplication app(argc, argv);
+
+	QString filepath;
+	bool rebuildOtherFiles = false;
+	for (const auto &arg : app.arguments()) {
+		if (arg == "--rebuild") {
+			rebuildOtherFiles = true;
+		} else {
+			filepath = arg;
+		}
+	}
+
+	Generator generator(filepath, rebuildOtherFiles);
+	return generator.process();
 }
diff --git a/Telegram/SourceFiles/codegen/style/tokenized_file.cpp b/Telegram/SourceFiles/codegen/style/tokenized_file.cpp
new file mode 100644
index 000000000..784848e85
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/tokenized_file.cpp
@@ -0,0 +1,136 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/tokenized_file.h"
+
+#include <iostream>
+#include <QtCore/QDir>
+
+#include "codegen/common/basic_tokenized_file.h"
+#include "codegen/common/logging.h"
+
+using Token = codegen::style::TokenizedFile::Token;
+using Type = Token::Type;
+using BasicToken = codegen::common::BasicTokenizedFile::Token;
+using BasicType = BasicToken::Type;
+
+namespace codegen {
+namespace style {
+namespace {
+
+QString plainValue(const BasicToken &token) {
+	return token.original.toStringUnchecked();
+}
+
+Token invalidToken() {
+	return { Type::Invalid, QString() };
+}
+
+} // namespace
+
+TokenizedFile::TokenizedFile(const QString &filepath) : file_(filepath) {
+}
+
+bool TokenizedFile::putBack() {
+	if (currentToken_ > 0) {
+		--currentToken_;
+		return true;
+	}
+	return false;
+}
+
+Token TokenizedFile::getToken() {
+	if (currentToken_ >= tokens_.size()) {
+		if (readToken() == Type::Invalid) {
+			return invalidToken();
+		}
+	}
+	return tokens_.at(currentToken_++);
+}
+
+Type TokenizedFile::readToken() {
+	switch (state_) {
+	case State::Default: return readInDefault();
+	case State::StructStarted: return readInStructStarted();
+	case State::StructFieldName: return readInStructFieldName();
+	case State::Variable: return readInVariable();
+	case State::VariableParents: return readInVariableParents();
+	case State::VariableStarted: return readInVariableStarted();
+	case State::VariableChild: return readInVariableChild();
+	}
+	return Type::Invalid;
+}
+
+Type TokenizedFile::readInDefault() {
+	if (auto basicToken = file_.getToken(BasicType::Name)) {
+		if (plainValue(basicToken) == "using") {
+			if (auto usingFile = file_.getToken(BasicType::String)) {
+				if (file_.getToken(BasicType::Semicolon)) {
+					return saveToken(Type::Using, usingFile.value);
+				}
+				file_.logErrorUnexpectedToken("';'");
+			} else {
+				file_.logErrorUnexpectedToken("file path");
+			}
+			return Type::Invalid;
+		}
+		if (auto braceToken = file_.getToken(BasicType::LeftBrace)) {
+			state_ = State::StructStarted;
+			return saveToken(Type::DefineStruct, plainValue(basicToken));
+		} else if (auto colonToken = file_.getToken(BasicType::Colon)) {
+			state_ = State::Variable;
+			return saveToken(Type::DefineVariable, plainValue(basicToken));
+		}
+		file_.logErrorUnexpectedToken("using keyword, or struct definition, or variable definition");
+	}
+	return Type::Invalid;
+}
+
+Type TokenizedFile::readInStructStarted() {
+	return Type::Invalid;
+}
+
+Type TokenizedFile::readInStructFieldName() {
+	return Type::Invalid;
+}
+
+Type TokenizedFile::readInVariable() {
+	return Type::Invalid;
+}
+
+Type TokenizedFile::readInVariableParents() {
+	return Type::Invalid;
+}
+
+Type TokenizedFile::readInVariableStarted() {
+	return Type::Invalid;
+}
+
+Type TokenizedFile::readInVariableChild() {
+	return Type::Invalid;
+}
+
+Type TokenizedFile::saveToken(Type type, const QString &value) {
+	tokens_.push_back({ type, value });
+	return type;
+}
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/tokenized_file.h b/Telegram/SourceFiles/codegen/style/tokenized_file.h
new file mode 100644
index 000000000..5e4ac2afc
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/tokenized_file.h
@@ -0,0 +1,127 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <QtCore/QString>
+#include <QtCore/QFileInfo>
+#include "codegen/common/basic_tokenized_file.h"
+
+namespace codegen {
+namespace style {
+
+// Parses a file as a list of tokens.
+class TokenizedFile {
+public:
+	TokenizedFile(const QString &filepath);
+	TokenizedFile(const TokenizedFile &other) = delete;
+	TokenizedFile &operator=(const TokenizedFile &other) = delete;
+
+	using ConstUtf8String = common::ConstUtf8String;
+	struct Token {
+		enum class Type {
+			Invalid,
+
+			Using,
+
+			DefineStruct,
+			DefineField,
+			FieldType,
+
+			DefineVariable,
+			Struct,
+			StructParent,
+
+			Int,
+			Double,
+			Pixels,
+			String,
+			Color,
+			Point,
+			Sprite,
+			Size,
+			Transition,
+			Cursor,
+			Align,
+			Margins,
+			Font,
+		};
+		Type type;
+		QString value;
+
+		explicit operator bool() const {
+			return type != Type::Invalid;
+		}
+	};
+
+	bool read() {
+		return file_.read();
+	}
+	bool atEnd() const {
+		return file_.atEnd();
+	}
+
+	Token getToken();
+	bool putBack();
+	bool failed() const {
+		return file_.failed();
+	}
+
+	// Log error to std::cerr with 'code' at the current position in file.
+	common::LogStream logError(int code) const {
+		return file_.logError(code);
+	}
+
+private:
+	using Type = Token::Type;
+	Type readToken();
+
+	// State value defines what are we waiting next.
+	enum class State {
+		Default, // [ using | struct name | variable name | end ]
+		StructStarted, // [ struct field name | struct end ]
+		StructFieldName, // [ struct field type ]
+		Variable, // [ struct name | variable value ]
+		VariableParents, // [ variable parent name | variable start ]
+		VariableStarted, // [ variable field name | variable end]
+		VariableChild, // [ variable child value ]
+	};
+
+	// Helper methods for readToken() being in specific State.
+	Type readInDefault();
+	Type readInStructStarted();
+	Type readInStructFieldName();
+	Type readInVariable();
+	Type readInVariableParents();
+	Type readInVariableStarted();
+	Type readInVariableChild();
+
+	Type saveToken(Type type, const QString &value = QString());
+
+	common::BasicTokenizedFile file_;
+	QList<Token> tokens_;
+	int currentToken_ = 0;
+	State state_ = State::Default;
+
+};
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/Telegram.vcxproj b/Telegram/Telegram.vcxproj
index dc2676a0b..3f3b24616 100644
--- a/Telegram/Telegram.vcxproj
+++ b/Telegram/Telegram.vcxproj
@@ -2378,8 +2378,12 @@
     <None Include="Telegram.xcodeproj\qt_preprocess.mak" />
     <None Include="Version" />
   </ItemGroup>
+  <ItemGroup>
+    <CodegenStyleItem Include="Resources\all_files.style" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
+    <Import Project="build\vc\codegen_style\codegen_style.targets" />
   </ImportGroup>
   <ProjectExtensions>
     <VisualStudio>
diff --git a/Telegram/Telegram.vcxproj.filters b/Telegram/Telegram.vcxproj.filters
index 9257f6659..964d49b76 100644
--- a/Telegram/Telegram.vcxproj.filters
+++ b/Telegram/Telegram.vcxproj.filters
@@ -1535,4 +1535,9 @@
       <Filter>Version</Filter>
     </ResourceCompile>
   </ItemGroup>
+  <ItemGroup>
+    <CodegenStyleItem Include="Resources\all_files.style">
+      <Filter>Resources</Filter>
+    </CodegenStyleItem>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/Telegram/build/vc/codegen_style/codegen_style.targets b/Telegram/build/vc/codegen_style/codegen_style.targets
new file mode 100644
index 000000000..541943db3
--- /dev/null
+++ b/Telegram/build/vc/codegen_style/codegen_style.targets
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
+    <AvailableItemName Include="CodegenStyleItem">
+      <Targets>GenerateStyleCode</Targets>
+    </AvailableItemName>
+  </ItemGroup>
+  <ItemGroup>
+    <StyleFile Include="%(CodegenStyleItem.Identity)" />
+  </ItemGroup>
+  <Target
+    Name="GenerateStyleCode"
+    BeforeTargets="ClCompile"
+    Inputs="%(CodegenStyleItem.Identity)"
+    Outputs=".\GeneratedFiles\styles\style_%(CodegenStyleItem.Filename).h;.\GeneratedFiles\styles\style_%(CodegenStyleItem.Filename).cpp">
+  <Message Text="Generating style: %(CodegenStyleItem.Identity)" />
+  <Exec Command="$(SolutionDir)$(Platform)\codegen\$(Configuration)\codegen_style.exe %(CodegenStyleItem.Identity)"/>
+ </Target>
+</Project>
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
index b1f24fc30..d39bf6a24 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
@@ -11,8 +11,24 @@
     </ProjectConfiguration>
   </ItemGroup>
   <ItemGroup>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\clean_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\logging.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\generator.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\tokenized_file.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\main.cpp" />
   </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file_reader.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\const_utf8_string.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\logging.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\generator.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\tokenized_file.h" />
+  </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{E4DF8176-4DEF-4859-962F-B497E3E7A323}</ProjectGuid>
     <Keyword>Qt4VSv1.0</Keyword>
@@ -41,11 +57,12 @@
     <_ProjectFileVersion>14.0.24730.2</_ProjectFileVersion>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <IntDir>$(SolutionDir)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
     <OutDir>$(SolutionDir)$(Platform)\codegen\$(Configuration)\</OutDir>
-    <IntDir>$(SolutionDir)$(Platform)\obj\$(ProjectName)\</IntDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+    <OutDir>$(SolutionDir)$(Platform)\codegen\$(Configuration)\</OutDir>
+    <IntDir>$(SolutionDir)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -53,8 +70,11 @@
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <AdditionalOptions>/w44062 /wd4127 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -71,8 +91,9 @@
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <WarningLevel>Level4</WarningLevel>
       <TreatWarningAsError>true</TreatWarningAsError>
+      <AdditionalOptions>/w44062 /wd4127 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
index 3263d5640..560b5962e 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
@@ -1,28 +1,64 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
-    <Filter Include="Source Files">
+    <Filter Include="src">
       <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
       <Extensions>cpp;cxx;c;def</Extensions>
     </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h</Extensions>
+    <Filter Include="src\common">
+      <UniqueIdentifier>{e722d237-774c-46d8-91c4-732e0c12d848}</UniqueIdentifier>
     </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
-      <Extensions>qrc;*</Extensions>
-      <ParseFiles>false</ParseFiles>
-    </Filter>
-    <Filter Include="Generated Files">
-      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
-      <Extensions>moc;h;cpp</Extensions>
-      <SourceControlFiles>False</SourceControlFiles>
+    <Filter Include="src\style">
+      <UniqueIdentifier>{fbf050c2-2ecd-4469-a24f-1dcf27e2520f}</UniqueIdentifier>
     </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\main.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>src\style</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\logging.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\generator.cpp">
+      <Filter>src\style</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\clean_file.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\tokenized_file.cpp">
+      <Filter>src\style</Filter>
     </ClCompile>
   </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\generator.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\logging.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\const_utf8_string.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file_reader.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\tokenized_file.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/Telegram/build/vc/codegen_style/codegen_style.xml b/Telegram/build/vc/codegen_style/codegen_style.xml
new file mode 100644
index 000000000..ec7c0755e
--- /dev/null
+++ b/Telegram/build/vc/codegen_style/codegen_style.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">
+  <ItemType Name="CodegenStyleItem" DisplayName="Style File" />
+  <ContentType Name="CodegenStyleContent" ItemType="CodegenStyleItem" DisplayName="Style File" />
+  <FileExtension Name="*.style" ContentType="CodegenStyleContent" />
+</ProjectSchemaDefinitions>

From 45bd2dc5fabc7a458c5a9a1ec8b312533ad3f039 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Sun, 17 Apr 2016 12:30:14 +0300
Subject: [PATCH 02/12] codegen_style: preparing to parse the whole input file.

---
 Telegram/Resources/all_files.style            |   6 +-
 .../codegen/common/basic_tokenized_file.cpp   |   4 +-
 .../SourceFiles/codegen/style/generator.cpp   |  34 +-
 .../SourceFiles/codegen/style/generator.h     |  21 +-
 Telegram/SourceFiles/codegen/style/main.cpp   |  14 +-
 .../SourceFiles/codegen/style/options.cpp     |  90 ++++++
 Telegram/SourceFiles/codegen/style/options.h  |  40 +++
 .../SourceFiles/codegen/style/parsed_file.cpp | 301 ++++++++++++++++++
 .../style/{tokenized_file.h => parsed_file.h} |  99 +++---
 .../SourceFiles/codegen/style/structure.h     |  87 +++++
 .../codegen/style/tokenized_file.cpp          | 136 --------
 .../vc/codegen_style/codegen_style.vcxproj    |   7 +-
 .../codegen_style.vcxproj.filters             |  13 +-
 13 files changed, 637 insertions(+), 215 deletions(-)
 create mode 100644 Telegram/SourceFiles/codegen/style/options.cpp
 create mode 100644 Telegram/SourceFiles/codegen/style/options.h
 create mode 100644 Telegram/SourceFiles/codegen/style/parsed_file.cpp
 rename Telegram/SourceFiles/codegen/style/{tokenized_file.h => parsed_file.h} (57%)
 create mode 100644 Telegram/SourceFiles/codegen/style/structure.h
 delete mode 100644 Telegram/SourceFiles/codegen/style/tokenized_file.cpp

diff --git a/Telegram/Resources/all_files.style b/Telegram/Resources/all_files.style
index 93a8e078e..09d45ede9 100644
--- a/Telegram/Resources/all_files.style
+++ b/Telegram/Resources/all_files.style
@@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 
 // Legacy styles
-using "./style_classes.txt";
-using "./style.txt";
+using "Resources/style_classes.txt";
+using "Resources/style.txt";
 
-//using "./../SourceFiles/overview/overview.style";
+//using "overview/overview.style";
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
index 1619fcc80..4bd5cf02e 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
@@ -148,18 +148,18 @@ Type BasicTokenizedFile::uniteLastTokens(Type type) {
 }
 
 Type BasicTokenizedFile::readNameOrNumber() {
-	bool onlyDigits = true;
 	while (!reader_.atEnd()) {
 		if (!isDigitChar(reader_.currentChar())) {
-			onlyDigits = false;
 			break;
 		}
 		reader_.skipChar();
 	}
+	bool onlyDigits = true;
 	while (!reader_.atEnd()) {
 		if (!isNameChar(reader_.currentChar())) {
 			break;
 		}
+		onlyDigits = false;
 		reader_.skipChar();
 	}
 	return saveToken(onlyDigits ? Type::Int : Type::Name);
diff --git a/Telegram/SourceFiles/codegen/style/generator.cpp b/Telegram/SourceFiles/codegen/style/generator.cpp
index 70a917d3c..031b1ae3f 100644
--- a/Telegram/SourceFiles/codegen/style/generator.cpp
+++ b/Telegram/SourceFiles/codegen/style/generator.cpp
@@ -21,10 +21,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #include "codegen/style/generator.h"
 
 #include <QtGui/QImage>
-#include "codegen/style/tokenized_file.h"
-
-using Token = codegen::style::TokenizedFile::Token;
-using Type = Token::Type;
+#include "codegen/style/parsed_file.h"
 
 namespace codegen {
 namespace style {
@@ -32,30 +29,35 @@ namespace {
 
 } // namespace
 
-Generator::Generator(const QString &filepath, bool rebuildDependencies)
-: file_(std::make_unique<TokenizedFile>(filepath))
-, rebuild_(rebuildDependencies) {
+Generator::Generator(const Options &options)
+: parser_(std::make_unique<ParsedFile>(options))
+, options_(options) {
 
 }
 
 int Generator::process() {
-	if (!file_->read()) {
+	if (!parser_->read()) {
 		return -1;
 	}
 
-	while (true) {
-		auto token = file_->getToken();
-		if (token.type == Type::Using) {
-			continue;
-		}
-		if (file_->atEnd() && !file_->failed()) {
-			break;
-		}
+	const auto &result = parser_->data();
+	if (!write(result)) {
 		return -1;
 	}
+	if (options_.rebuildDependencies) {
+		for (auto included : result.includes) {
+			if (!write(included)) {
+				return -1;
+			}
+		}
+	}
 	return 0;
 }
 
+bool Generator::write(const structure::Module &) const {
+	return true;
+}
+
 Generator::~Generator() = default;
 
 } // namespace style
diff --git a/Telegram/SourceFiles/codegen/style/generator.h b/Telegram/SourceFiles/codegen/style/generator.h
index 57e922267..dbb9601f6 100644
--- a/Telegram/SourceFiles/codegen/style/generator.h
+++ b/Telegram/SourceFiles/codegen/style/generator.h
@@ -22,16 +22,21 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 #include <memory>
 #include <QtCore/QString>
+#include <QtCore/QStringList>
+
+#include "codegen/style/options.h"
 
 namespace codegen {
 namespace style {
-
-class TokenizedFile;
+namespace structure {
+struct Module;
+} // namespace structure
+class ParsedFile;
 
 // Walks through a file, parses it and parses dependency files if necessary.
 class Generator {
 public:
-	Generator(const QString &filepath, bool rebuildDependencies);
+	Generator(const Options &options);
 	Generator(const Generator &other) = delete;
 	Generator &operator=(const Generator &other) = delete;
 
@@ -41,8 +46,14 @@ public:
 	~Generator();
 
 private:
-	std::unique_ptr<TokenizedFile> file_;
-	bool rebuild_;
+	bool write(const structure::Module &module) const;
+
+	std::unique_ptr<ParsedFile> parser_;
+	const Options &options_;
+
+	// List of files we need to generate with other instance of Generator.
+	// It is not empty only if rebuild_ flag is true.
+	QStringList dependenciesToGenerate_;
 
 };
 
diff --git a/Telegram/SourceFiles/codegen/style/main.cpp b/Telegram/SourceFiles/codegen/style/main.cpp
index 951f34b32..b61d9ce11 100644
--- a/Telegram/SourceFiles/codegen/style/main.cpp
+++ b/Telegram/SourceFiles/codegen/style/main.cpp
@@ -22,22 +22,18 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #include <QtCore/QTimer>
 
 #include "codegen/style/generator.h"
+#include "codegen/style/options.h"
 
 using namespace codegen::style;
 
 int main(int argc, char *argv[]) {
 	QCoreApplication app(argc, argv);
 
-	QString filepath;
-	bool rebuildOtherFiles = false;
-	for (const auto &arg : app.arguments()) {
-		if (arg == "--rebuild") {
-			rebuildOtherFiles = true;
-		} else {
-			filepath = arg;
-		}
+	Options options = parseOptions();
+	if (options.inputPath.isEmpty()) {
+		return -1;
 	}
 
-	Generator generator(filepath, rebuildOtherFiles);
+	Generator generator(options);
 	return generator.process();
 }
diff --git a/Telegram/SourceFiles/codegen/style/options.cpp b/Telegram/SourceFiles/codegen/style/options.cpp
new file mode 100644
index 000000000..a7d880e17
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/options.cpp
@@ -0,0 +1,90 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/options.h"
+
+#include <ostream>
+#include <QtCore/QCoreApplication>
+#include "codegen/common/logging.h"
+
+namespace codegen {
+namespace style {
+namespace {
+
+constexpr int kErrorIncludePathExpected     = 901;
+constexpr int kErrorOutputPathExpected      = 902;
+constexpr int kErrorInputPathExpected       = 903;
+constexpr int kErrorSingleInputPathExpected = 904;
+
+} // namespace
+
+using common::logError;
+
+Options parseOptions() {
+	Options result;
+	auto args(QCoreApplication::instance()->arguments());
+	for (auto i = args.cbegin(), e = args.cend(); i != e; ++i) {
+		const auto &arg(*i);
+
+		// Rebuild all dependencies
+		if (arg == "--rebuild") {
+			result.rebuildDependencies = true;
+
+		// Include paths
+		} else if (arg == "-I") {
+			if (++i == e) {
+				logError(kErrorIncludePathExpected, "Command Line") << "include path expected after -I";
+				return Options();
+			} else {
+				result.includePaths.push_back(*i);
+			}
+		} else if (arg.startsWith("-I")) {
+			result.includePaths.push_back(arg.mid(2));
+
+		// Output path
+		} else if (arg == "-o") {
+			if (++i == e) {
+				logError(kErrorOutputPathExpected, "Command Line") << "output path expected after -o";
+				return Options();
+			} else {
+				result.outputPath = *i;
+			}
+		} else if (arg.startsWith("-o")) {
+			result.outputPath = arg.mid(2);
+
+		// Input path
+		} else {
+			if (result.inputPath.isEmpty()) {
+				result.inputPath = arg;
+			} else {
+				logError(kErrorSingleInputPathExpected, "Command Line") << "only one input path expected";
+				return Options();
+			}
+		}
+	}
+	if (result.inputPath.isEmpty()) {
+		logError(kErrorInputPathExpected, "Command Line") << "input path expected";
+		return Options();
+	}
+	return result;
+}
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/options.h b/Telegram/SourceFiles/codegen/style/options.h
new file mode 100644
index 000000000..34746ee2d
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/options.h
@@ -0,0 +1,40 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+
+namespace codegen {
+namespace style {
+
+struct Options {
+	QStringList includePaths = { "." };
+	QString outputPath = ".";
+	QString inputPath;
+	bool rebuildDependencies = false;
+};
+
+// Parsing failed if inputPath is empty in the result.
+Options parseOptions();
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.cpp b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
new file mode 100644
index 000000000..4ca4aa701
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
@@ -0,0 +1,301 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/parsed_file.h"
+
+#include <iostream>
+#include <QtCore/QDir>
+#include <QtCore/QRegularExpression>
+#include "codegen/common/basic_tokenized_file.h"
+#include "codegen/common/logging.h"
+
+using Token = codegen::style::ParsedFile::Token;
+using Type = Token::Type;
+using BasicToken = codegen::common::BasicTokenizedFile::Token;
+using BasicType = BasicToken::Type;
+
+namespace codegen {
+namespace style {
+namespace {
+
+QString plainValue(const BasicToken &token) {
+	return token.original.toStringUnchecked();
+}
+
+Token invalidToken() {
+	return { Type::Invalid, QString() };
+}
+
+} // namespace
+
+ParsedFile::ParsedFile(const Options &options)
+: file_(options.inputPath)
+, options_(options) {
+}
+
+bool ParsedFile::read() {
+	if (!file_.read()) {
+		return false;
+	}
+
+	for (auto token = readInDefault(); token; token = readInDefault()) {
+		if (token.type == Type::Using) {
+			auto includedOptions = options_;
+//			includedOptions.inputPath = findIncludePath(token.value);
+			ParsedFile included(includedOptions);
+			if (!included.read()) {
+				return false;
+			}
+			result_.includes.push_back(included.data());
+		//} else if (token.type == Type::DefineStructStart) {
+		//	if (!read)
+		}
+	}
+	return !failed();
+}
+
+Token ParsedFile::readToken() {
+	switch (state_) {
+	case State::Default: return readInDefault();
+	case State::StructStarted: return readInStructStarted();
+	case State::StructFieldName: return readInStructFieldName();
+	case State::Variable: return readInVariable();
+	case State::VariableParents: return readInVariableParents();
+	case State::VariableStarted: return readInVariableStarted();
+	case State::VariableChild: return readInVariableChild();
+	}
+	return invalidToken();
+}
+
+Token ParsedFile::readInDefault() {
+	if (auto startToken = file_.getToken(BasicType::Name)) {
+		if (plainValue(startToken) == "using") {
+			if (auto usingFile = file_.getToken(BasicType::String)) {
+				if (file_.getToken(BasicType::Semicolon)) {
+					return { Type::Using, usingFile.value };
+				}
+				logErrorUnexpectedToken("';'");
+			} else {
+				logErrorUnexpectedToken("file path");
+			}
+			return invalidToken();
+		} else if (auto braceOpen = file_.getToken(BasicType::LeftBrace)) {
+			state_ = State::StructStarted;
+			return { Type::DefineStructStart, plainValue(startToken) };
+		} else if (auto colonToken = file_.getToken(BasicType::Colon)) {
+			state_ = State::Variable;
+			return { Type::DefineVariable, plainValue(startToken) };
+		}
+	}
+	if (!file_.atEnd()) {
+		logErrorUnexpectedToken("using keyword, or struct definition, or variable definition");
+	}
+	return invalidToken();
+}
+
+Token ParsedFile::readInStructStarted() {
+	if (auto fieldName = file_.getToken(BasicType::Name)) {
+		state_ = State::StructFieldName;
+		return { Type::DefineStructField, plainValue(fieldName) };
+	} else if (auto braceClose = file_.getToken(BasicType::RightBrace)) {
+		state_ = State::Default;
+		return { Type::DefineStructEnd };
+	}
+	logErrorUnexpectedToken("struct field name or '}'");
+	return invalidToken();
+}
+
+Token ParsedFile::readInStructFieldName() {
+	if (auto colonToken = file_.getToken(BasicType::Colon)) {
+		if (auto fieldType = file_.getToken(BasicType::Name)) {
+			if (file_.getToken(BasicType::Semicolon)) {
+				state_ = State::StructStarted;
+				return { Type::StructFieldType, plainValue(fieldType) };
+			}
+			logErrorUnexpectedToken(";");
+		} else {
+			logErrorUnexpectedToken("struct field type name");
+		}
+	} else {
+		logErrorUnexpectedToken("':'");
+	}
+	return invalidToken();
+}
+
+Token ParsedFile::readInVariable() {
+	if (auto value = readValueToken()) {
+		if (file_.getToken(BasicType::Semicolon)) {
+			state_ = State::Default;
+			return value;
+		}
+		logErrorUnexpectedToken(";");
+		return invalidToken();
+	}
+	if (failed()) {
+		return invalidToken();
+	}
+
+	if (auto structName = file_.getToken(BasicType::Name)) {
+		if (file_.getToken(BasicType::LeftParenthesis)) {
+			state_ = State::VariableParents;
+			return { Type::StructStart, plainValue(structName) };
+		} else if (file_.getToken(BasicType::LeftBrace)) {
+			state_ = State::VariableStarted;
+			return { Type::StructStart, plainValue(structName) };
+		} else {
+			logErrorUnexpectedToken("'(' or '{'");
+		}
+	} else {
+		logErrorUnexpectedToken("variable value");
+	}
+	return invalidToken();
+}
+
+Token ParsedFile::readInVariableParents() {
+	if (auto parentName = file_.getToken(BasicType::Name)) {
+		if (file_.getToken(BasicType::Comma)) {
+			return { Type::StructParent, plainValue(parentName) };
+		} else if (file_.getToken(BasicType::RightParenthesis)) {
+			if (file_.getToken(BasicType::LeftBrace)) {
+				state_ = State::VariableStarted;
+				return { Type::StructParent, plainValue(parentName) };
+			}
+			logErrorUnexpectedToken("'{'");
+		} else {
+			logErrorUnexpectedToken("',' or ')'");
+		}
+	} else {
+		logErrorUnexpectedToken("struct variable parent");
+	}
+	return invalidToken();
+}
+
+Token ParsedFile::readInVariableStarted() {
+	if (auto fieldName = file_.getToken(BasicType::Name)) {
+		state_ = State::VariableChild;
+		return { Type::VariableField, plainValue(fieldName) };
+	} else if (auto braceClose = file_.getToken(BasicType::RightBrace)) {
+		state_ = State::Default;
+		return { Type::StructEnd };
+	}
+	logErrorUnexpectedToken("struct variable field name or '}'");
+	return invalidToken();
+}
+
+Token ParsedFile::readInVariableChild() {
+	if (auto value = readValueToken()) {
+		if (file_.getToken(BasicType::Semicolon)) {
+			state_ = State::Default;
+			return value;
+		}
+		logErrorUnexpectedToken(";");
+	} else {
+		logErrorUnexpectedToken("variable field value");
+	}
+	return invalidToken();
+}
+
+Token ParsedFile::readNumericToken() {
+	auto numericToken = file_.getAnyToken();
+	if (numericToken.type == BasicType::Int) {
+		return { Type::Int, plainValue(numericToken) };
+	} else if (numericToken.type == BasicType::Double) {
+		return { Type::Double, plainValue(numericToken) };
+	} else if (numericToken.type == BasicType::Name) {
+		auto value = plainValue(numericToken);
+		auto match = QRegularExpression("^\\d+px$").match(value);
+		if (match.hasMatch()) {
+			return { Type::Pixels, value.mid(0, value.size() - 2) };
+		}
+	}
+	file_.putBack();
+	return invalidToken();
+}
+
+Token ParsedFile::readValueToken() {
+	if (auto colorValue = readColorToken()) {
+		return colorValue;
+	} else if (auto pointValue = readPointToken()) {
+		return pointValue;
+	} else if (auto spriteValue = readSpriteToken()) {
+		return spriteValue;
+	} else if (auto sizeValue = readSizeToken()) {
+		return sizeValue;
+	} else if (auto transitionValue = readTransitionToken()) {
+		return transitionValue;
+	} else if (auto cursorValue = readCursorToken()) {
+		return cursorValue;
+	} else if (auto alignValue = readAlignToken()) {
+		return alignValue;
+	} else if (auto marginsValue = readMarginsToken()) {
+		return marginsValue;
+	} else if (auto fontValue = readFontToken()) {
+		return fontValue;
+	} else if (auto numericValue = readNumericToken()) {
+		return numericValue;
+	} else if (auto stringValue = file_.getToken(BasicType::String)) {
+		return { Type::String, stringValue.value };
+	} else if (auto minusToken = file_.getToken(BasicType::Minus)) {
+		if (auto positiveValue = readNumericToken()) {
+			return { positiveValue.type, '-' + positiveValue.value };
+		}
+		logErrorUnexpectedToken("numeric value");
+	}
+	return invalidToken();
+}
+
+Token ParsedFile::readColorToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readPointToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readSpriteToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readSizeToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readTransitionToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readCursorToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readAlignToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readMarginsToken() {
+	return invalidToken();
+}
+
+Token ParsedFile::readFontToken() {
+	return invalidToken();
+}
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/tokenized_file.h b/Telegram/SourceFiles/codegen/style/parsed_file.h
similarity index 57%
rename from Telegram/SourceFiles/codegen/style/tokenized_file.h
rename to Telegram/SourceFiles/codegen/style/parsed_file.h
index 5e4ac2afc..9d65f464b 100644
--- a/Telegram/SourceFiles/codegen/style/tokenized_file.h
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.h
@@ -24,31 +24,35 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #include <QtCore/QString>
 #include <QtCore/QFileInfo>
 #include "codegen/common/basic_tokenized_file.h"
+#include "codegen/style/options.h"
+#include "codegen/style/structure.h"
 
 namespace codegen {
 namespace style {
 
-// Parses a file as a list of tokens.
-class TokenizedFile {
+// Parses an input file to the internal struct.
+class ParsedFile {
 public:
-	TokenizedFile(const QString &filepath);
-	TokenizedFile(const TokenizedFile &other) = delete;
-	TokenizedFile &operator=(const TokenizedFile &other) = delete;
+	ParsedFile(const Options &options);
+	ParsedFile(const ParsedFile &other) = delete;
+	ParsedFile &operator=(const ParsedFile &other) = delete;
 
-	using ConstUtf8String = common::ConstUtf8String;
 	struct Token {
 		enum class Type {
 			Invalid,
 
-			Using,
+			Using,             // value: file path
 
-			DefineStruct,
-			DefineField,
-			FieldType,
+			DefineStructStart, // value: struct name
+			DefineStructField, // value: struct field name
+			StructFieldType,   // value: struct field type name
+			DefineStructEnd,
 
-			DefineVariable,
-			Struct,
-			StructParent,
+			DefineVariable,    // value: variable name
+			StructStart,       // value: struct name
+			StructParent,      // value: variable parent name
+			VariableField,     // value: variable field name
+			StructEnd,
 
 			Int,
 			Double,
@@ -72,27 +76,29 @@ public:
 		}
 	};
 
-	bool read() {
-		return file_.read();
-	}
-	bool atEnd() const {
-		return file_.atEnd();
-	}
+	bool read();
 
-	Token getToken();
-	bool putBack();
-	bool failed() const {
-		return file_.failed();
-	}
-
-	// Log error to std::cerr with 'code' at the current position in file.
-	common::LogStream logError(int code) const {
-		return file_.logError(code);
+	const structure::Module &data() const {
+		return result_;
 	}
 
 private:
-	using Type = Token::Type;
-	Type readToken();
+
+	bool failed() const {
+		return failed_ || file_.failed();
+	}
+
+	// Log error to std::cerr with 'code' at the current position in file.
+	common::LogStream logError(int code) {
+		failed_ = true;
+		return file_.logError(code);
+	}
+	common::LogStream logErrorUnexpectedToken(const std::string &expected = std::string()) {
+		failed_ = true;
+		return file_.logErrorUnexpectedToken(expected);
+	}
+
+	Token readToken();
 
 	// State value defines what are we waiting next.
 	enum class State {
@@ -106,21 +112,34 @@ private:
 	};
 
 	// Helper methods for readToken() being in specific State.
-	Type readInDefault();
-	Type readInStructStarted();
-	Type readInStructFieldName();
-	Type readInVariable();
-	Type readInVariableParents();
-	Type readInVariableStarted();
-	Type readInVariableChild();
+	Token readInDefault();
+	Token readInStructStarted();
+	Token readInStructFieldName();
+	Token readInVariable();
+	Token readInVariableParents();
+	Token readInVariableStarted();
+	Token readInVariableChild();
 
-	Type saveToken(Type type, const QString &value = QString());
+	Token readNumericToken();
+	Token readValueToken();
+	Token readColorToken();
+	Token readPointToken();
+	Token readSpriteToken();
+	Token readSizeToken();
+	Token readTransitionToken();
+	Token readCursorToken();
+	Token readAlignToken();
+	Token readMarginsToken();
+	Token readFontToken();
 
 	common::BasicTokenizedFile file_;
-	QList<Token> tokens_;
-	int currentToken_ = 0;
+	Options options_;
+
+	bool failed_ = false;
 	State state_ = State::Default;
 
+	structure::Module result_;
+
 };
 
 } // namespace style
diff --git a/Telegram/SourceFiles/codegen/style/structure.h b/Telegram/SourceFiles/codegen/style/structure.h
new file mode 100644
index 000000000..cde1813e8
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/structure.h
@@ -0,0 +1,87 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+#include <QtCore/QList>
+#include <QtCore/QStringList>
+
+namespace codegen {
+namespace style {
+namespace structure {
+
+// List of names, like overview.document.bg
+using FullName = QStringList;
+
+enum class TypeTag {
+	Int,
+	Double,
+	Pixels,
+	String,
+	Color,
+	Point,
+	Sprite,
+	Size,
+	Transition,
+	Cursor,
+	Align,
+	Margins,
+	Font,
+	Struct,
+};
+
+struct Type {
+	TypeTag tag;
+	FullName name; // only for type == ClassType::Struct
+};
+
+struct Variable;
+struct Value {
+	QString data; // for plain types
+	QList<Variable> fields; // for struct types
+};
+
+struct Variable {
+	FullName name;
+	Type type;
+	Value value;
+};
+
+struct StructField {
+	FullName name;
+	Type type;
+};
+
+struct Struct {
+	FullName name;
+	QList<StructField> fields;
+};
+
+struct Module {
+	QString fullpath;
+	QList<Module> includes;
+	QList<Struct> structs;
+	QList<Variable> variables;
+};
+
+} // namespace structure
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/tokenized_file.cpp b/Telegram/SourceFiles/codegen/style/tokenized_file.cpp
deleted file mode 100644
index 784848e85..000000000
--- a/Telegram/SourceFiles/codegen/style/tokenized_file.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-This file is part of Telegram Desktop,
-the official desktop version of Telegram messaging app, see https://telegram.org
-
-Telegram Desktop is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-It is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-In addition, as a special exception, the copyright holders give permission
-to link the code of portions of this program with the OpenSSL library.
-
-Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
-Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
-*/
-#include "codegen/style/tokenized_file.h"
-
-#include <iostream>
-#include <QtCore/QDir>
-
-#include "codegen/common/basic_tokenized_file.h"
-#include "codegen/common/logging.h"
-
-using Token = codegen::style::TokenizedFile::Token;
-using Type = Token::Type;
-using BasicToken = codegen::common::BasicTokenizedFile::Token;
-using BasicType = BasicToken::Type;
-
-namespace codegen {
-namespace style {
-namespace {
-
-QString plainValue(const BasicToken &token) {
-	return token.original.toStringUnchecked();
-}
-
-Token invalidToken() {
-	return { Type::Invalid, QString() };
-}
-
-} // namespace
-
-TokenizedFile::TokenizedFile(const QString &filepath) : file_(filepath) {
-}
-
-bool TokenizedFile::putBack() {
-	if (currentToken_ > 0) {
-		--currentToken_;
-		return true;
-	}
-	return false;
-}
-
-Token TokenizedFile::getToken() {
-	if (currentToken_ >= tokens_.size()) {
-		if (readToken() == Type::Invalid) {
-			return invalidToken();
-		}
-	}
-	return tokens_.at(currentToken_++);
-}
-
-Type TokenizedFile::readToken() {
-	switch (state_) {
-	case State::Default: return readInDefault();
-	case State::StructStarted: return readInStructStarted();
-	case State::StructFieldName: return readInStructFieldName();
-	case State::Variable: return readInVariable();
-	case State::VariableParents: return readInVariableParents();
-	case State::VariableStarted: return readInVariableStarted();
-	case State::VariableChild: return readInVariableChild();
-	}
-	return Type::Invalid;
-}
-
-Type TokenizedFile::readInDefault() {
-	if (auto basicToken = file_.getToken(BasicType::Name)) {
-		if (plainValue(basicToken) == "using") {
-			if (auto usingFile = file_.getToken(BasicType::String)) {
-				if (file_.getToken(BasicType::Semicolon)) {
-					return saveToken(Type::Using, usingFile.value);
-				}
-				file_.logErrorUnexpectedToken("';'");
-			} else {
-				file_.logErrorUnexpectedToken("file path");
-			}
-			return Type::Invalid;
-		}
-		if (auto braceToken = file_.getToken(BasicType::LeftBrace)) {
-			state_ = State::StructStarted;
-			return saveToken(Type::DefineStruct, plainValue(basicToken));
-		} else if (auto colonToken = file_.getToken(BasicType::Colon)) {
-			state_ = State::Variable;
-			return saveToken(Type::DefineVariable, plainValue(basicToken));
-		}
-		file_.logErrorUnexpectedToken("using keyword, or struct definition, or variable definition");
-	}
-	return Type::Invalid;
-}
-
-Type TokenizedFile::readInStructStarted() {
-	return Type::Invalid;
-}
-
-Type TokenizedFile::readInStructFieldName() {
-	return Type::Invalid;
-}
-
-Type TokenizedFile::readInVariable() {
-	return Type::Invalid;
-}
-
-Type TokenizedFile::readInVariableParents() {
-	return Type::Invalid;
-}
-
-Type TokenizedFile::readInVariableStarted() {
-	return Type::Invalid;
-}
-
-Type TokenizedFile::readInVariableChild() {
-	return Type::Invalid;
-}
-
-Type TokenizedFile::saveToken(Type type, const QString &value) {
-	tokens_.push_back({ type, value });
-	return type;
-}
-
-} // namespace style
-} // namespace codegen
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
index d39bf6a24..967ae2811 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
@@ -16,7 +16,8 @@
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\clean_file.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\logging.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\generator.cpp" />
-    <ClCompile Include="..\..\..\SourceFiles\codegen\style\tokenized_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\options.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\parsed_file.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\main.cpp" />
   </ItemGroup>
   <ItemGroup>
@@ -27,7 +28,9 @@
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\const_utf8_string.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\logging.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\generator.h" />
-    <ClInclude Include="..\..\..\SourceFiles\codegen\style\tokenized_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\options.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\parsed_file.h" />
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{E4DF8176-4DEF-4859-962F-B497E3E7A323}</ProjectGuid>
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
index 560b5962e..9c64d8737 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
@@ -31,7 +31,10 @@
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.cpp">
       <Filter>src\common</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\SourceFiles\codegen\style\tokenized_file.cpp">
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\options.cpp">
+      <Filter>src\style</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\parsed_file.cpp">
       <Filter>src\style</Filter>
     </ClCompile>
   </ItemGroup>
@@ -57,7 +60,13 @@
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.h">
       <Filter>src\common</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\SourceFiles\codegen\style\tokenized_file.h">
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\options.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\parsed_file.h">
       <Filter>src\style</Filter>
     </ClInclude>
   </ItemGroup>

From e0160f7d4c6f7eab72f22bbaa791711b17bdc0b1 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Sun, 17 Apr 2016 16:22:00 +0300
Subject: [PATCH 03/12] Parsing of color and sprite values started in
 codegen_style.

---
 Telegram/Resources/style.txt                  |   2 +
 .../codegen/common/basic_tokenized_file.cpp   |  14 +-
 .../codegen/common/basic_tokenized_file.h     |   4 +-
 Telegram/SourceFiles/codegen/common/logging.h |  19 +-
 .../SourceFiles/codegen/style/generator.h     |   3 +-
 .../SourceFiles/codegen/style/options.cpp     |  12 +-
 .../SourceFiles/codegen/style/parsed_file.cpp | 609 ++++++++++++------
 .../SourceFiles/codegen/style/parsed_file.h   | 134 ++--
 .../SourceFiles/codegen/style/structure.h     |  35 +-
 .../vc/codegen_style/codegen_style.vcxproj    |   2 +-
 10 files changed, 544 insertions(+), 290 deletions(-)

diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt
index ec6871bf4..9c88277fd 100644
--- a/Telegram/Resources/style.txt
+++ b/Telegram/Resources/style.txt
@@ -18,6 +18,8 @@ to link the code of portions of this program with the OpenSSL library.
 Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
+using "Resources/style_classes.txt";
+
 defaultFontFamily: "Open Sans";
 semibold: "Open Sans Semibold";
 
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
index 4bd5cf02e..fb6611e49 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
@@ -45,7 +45,7 @@ bool isNameChar(char ch) {
 }
 
 bool isWhitespaceChar(char ch) {
-	return (ch == '\n' || ch == ' ' || ch == '\t');
+	return (ch == '\n' || ch == '\r' || ch == ' ' || ch == '\t');
 }
 
 Token invalidToken() {
@@ -224,7 +224,7 @@ Type BasicTokenizedFile::readString() {
 Type BasicTokenizedFile::readSingleLetter() {
 	auto type = singleLetterTokens_.value(reader_.currentChar(), Type::Invalid);
 	if (type == Type::Invalid) {
-		reader_.logError(kErrorIncorrectToken, lineNumber_) << "incorrect token '" << reader_.currentChar() << "'.";
+		reader_.logError(kErrorIncorrectToken, lineNumber_) << "incorrect token '" << reader_.currentChar() << "'";
 		return Type::Invalid;
 	}
 
@@ -253,16 +253,12 @@ LogStream BasicTokenizedFile::logError(int code) const {
 	return reader_.logError(code, lineNumber_);
 }
 
-LogStream BasicTokenizedFile::logErrorUnexpectedToken(const std::string &expected) const {
-	std::string expectedTail;
-	if (!expected.empty()) {
-		expectedTail = ", expected " + expected;
-	}
+LogStream BasicTokenizedFile::logErrorUnexpectedToken() const {
 	if (currentToken_ < tokens_.size()) {
 		auto token = tokens_.at(currentToken_).original.toStdString();
-		return logError(kErrorUnexpectedToken) << "unexpected token '" << token << '\'' << expectedTail << '.';
+		return logError(kErrorUnexpectedToken) << "unexpected token '" << token << "', expected ";
 	}
-	return logError(kErrorUnexpectedToken) << "unexpected token" << expectedTail << '.';
+	return logError(kErrorUnexpectedToken) << "unexpected token, expected ";
 }
 
 BasicTokenizedFile::~BasicTokenizedFile() = default;
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
index 67b001736..97052783e 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
@@ -21,8 +21,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #pragma once
 
 #include <memory>
-#include <QtCore/QString>
 #include <QtCore/QMap>
+#include <QtCore/QString>
 #include <QtCore/QList>
 
 #include "codegen/common/const_utf8_string.h"
@@ -89,7 +89,7 @@ public:
 
 	// Log error to std::cerr with 'code' at the current position in file.
 	LogStream logError(int code) const;
-	LogStream logErrorUnexpectedToken(const std::string &expected = std::string()) const;
+	LogStream logErrorUnexpectedToken() const;
 
 	~BasicTokenizedFile();
 
diff --git a/Telegram/SourceFiles/codegen/common/logging.h b/Telegram/SourceFiles/codegen/common/logging.h
index 1aa1f1481..019cddd26 100644
--- a/Telegram/SourceFiles/codegen/common/logging.h
+++ b/Telegram/SourceFiles/codegen/common/logging.h
@@ -29,29 +29,36 @@ namespace common {
 // Wrapper around std::ostream that adds '\n' to the end of the logging line.
 class LogStream {
 public:
-	explicit LogStream(std::ostream &stream) : stream_(stream) {
+	enum NullType {
+		Null,
+	};
+	explicit LogStream(NullType) : final_(false) {
+	}
+	explicit LogStream(std::ostream &stream) : stream_(&stream) {
 	}
 	LogStream(LogStream &&other) : stream_(other.stream_) {
 		other.final_ = false;
 	}
-	std::ostream &stream() const {
+	std::ostream *stream() const {
 		return stream_;
 	}
 	~LogStream() {
 		if (final_) {
-			stream_ << '\n';
+			*stream_ << '\n';
 		}
 	}
 
 private:
-	std::ostream &stream_;
+	std::ostream *stream_ = nullptr;
 	bool final_ = true;
 
 };
 
 template <typename T>
 LogStream operator<<(LogStream &&stream, T &&value) {
-	stream.stream() << value;
+	if (auto ostream = stream.stream()) {
+		*ostream << std::forward<T>(value);
+	}
 	return std::forward<LogStream>(stream);
 }
 
@@ -59,5 +66,7 @@ LogStream operator<<(LogStream &&stream, T &&value) {
 // logError(kErrorFileTooLarge, filepath) << "file too large, size=" << size;
 LogStream logError(int code, const QString &filepath, int line = 0);
 
+static constexpr int kErrorInternal = 666;
+
 } // namespace common
 } // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/generator.h b/Telegram/SourceFiles/codegen/style/generator.h
index dbb9601f6..ab6f2a0d3 100644
--- a/Telegram/SourceFiles/codegen/style/generator.h
+++ b/Telegram/SourceFiles/codegen/style/generator.h
@@ -22,8 +22,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 #include <memory>
 #include <QtCore/QString>
-#include <QtCore/QStringList>
-
+//#include "codegen/common/qstringlist_safe.h"
 #include "codegen/style/options.h"
 
 namespace codegen {
diff --git a/Telegram/SourceFiles/codegen/style/options.cpp b/Telegram/SourceFiles/codegen/style/options.cpp
index a7d880e17..4052b401d 100644
--- a/Telegram/SourceFiles/codegen/style/options.cpp
+++ b/Telegram/SourceFiles/codegen/style/options.cpp
@@ -40,8 +40,8 @@ using common::logError;
 Options parseOptions() {
 	Options result;
 	auto args(QCoreApplication::instance()->arguments());
-	for (auto i = args.cbegin(), e = args.cend(); i != e; ++i) {
-		const auto &arg(*i);
+	for (int i = 1, count = args.size(); i < count; ++i) { // skip first
+		const auto &arg(args.at(i));
 
 		// Rebuild all dependencies
 		if (arg == "--rebuild") {
@@ -49,22 +49,22 @@ Options parseOptions() {
 
 		// Include paths
 		} else if (arg == "-I") {
-			if (++i == e) {
+			if (++i == count) {
 				logError(kErrorIncludePathExpected, "Command Line") << "include path expected after -I";
 				return Options();
 			} else {
-				result.includePaths.push_back(*i);
+				result.includePaths.push_back(args.at(i));
 			}
 		} else if (arg.startsWith("-I")) {
 			result.includePaths.push_back(arg.mid(2));
 
 		// Output path
 		} else if (arg == "-o") {
-			if (++i == e) {
+			if (++i == count) {
 				logError(kErrorOutputPathExpected, "Command Line") << "output path expected after -o";
 				return Options();
 			} else {
-				result.outputPath = *i;
+				result.outputPath = args.at(i);
 			}
 		} else if (arg.startsWith("-o")) {
 			result.outputPath = arg.mid(2);
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.cpp b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
index 4ca4aa701..b09144569 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.cpp
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
@@ -21,13 +21,12 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #include "codegen/style/parsed_file.h"
 
 #include <iostream>
+#include <QtCore/QMap>
 #include <QtCore/QDir>
 #include <QtCore/QRegularExpression>
 #include "codegen/common/basic_tokenized_file.h"
 #include "codegen/common/logging.h"
 
-using Token = codegen::style::ParsedFile::Token;
-using Type = Token::Type;
 using BasicToken = codegen::common::BasicTokenizedFile::Token;
 using BasicType = BasicToken::Type;
 
@@ -35,12 +34,57 @@ namespace codegen {
 namespace style {
 namespace {
 
-QString plainValue(const BasicToken &token) {
+constexpr int kErrorInIncluded         = 801;
+constexpr int kErrorTypeMismatch       = 802;
+constexpr int kErrorUnknownField       = 803;
+constexpr int kErrorIdentifierNotFound = 804;
+
+QString tokenValue(const BasicToken &token) {
+	if (token.type == BasicType::String) {
+		return token.value;
+	}
 	return token.original.toStringUnchecked();
 }
 
-Token invalidToken() {
-	return { Type::Invalid, QString() };
+bool isValidColor(const QString &str) {
+	auto len = str.size();
+	if (len != 3 && len != 4 && len != 6 && len != 8) {
+		return false;
+	}
+
+	for (auto ch : str) {
+		auto code = ch.unicode();
+		if ((code < '0' || code > '9') && (code < 'a' || code > 'f') && (code < 'A' || code > 'F')) {
+			return false;
+		}
+	}
+	return true;
+}
+
+std::string logFullName(const structure::FullName &name) {
+	return name.join('.').toStdString();
+}
+
+std::string logType(const structure::Type &type) {
+	if (type.tag == structure::TypeTag::Struct) {
+		return "struct " + logFullName(type.name);
+	}
+	static auto builtInTypes = new QMap<structure::TypeTag, std::string> {
+		{ structure::TypeTag::Int       , "int" },
+		{ structure::TypeTag::Double    , "double" },
+		{ structure::TypeTag::Pixels    , "pixels" },
+		{ structure::TypeTag::String    , "string" },
+		{ structure::TypeTag::Color     , "color" },
+		{ structure::TypeTag::Point     , "point" },
+		{ structure::TypeTag::Sprite    , "sprite" },
+		{ structure::TypeTag::Size      , "size" },
+		{ structure::TypeTag::Transition, "transition" },
+		{ structure::TypeTag::Cursor    , "cursor" },
+		{ structure::TypeTag::Align     , "align" },
+		{ structure::TypeTag::Margins   , "margins" },
+		{ structure::TypeTag::Font      , "font" },
+	};
+	return builtInTypes->value(type.tag, "invalid");
 }
 
 } // namespace
@@ -55,246 +99,437 @@ bool ParsedFile::read() {
 		return false;
 	}
 
-	for (auto token = readInDefault(); token; token = readInDefault()) {
-		if (token.type == Type::Using) {
-			auto includedOptions = options_;
-//			includedOptions.inputPath = findIncludePath(token.value);
-			ParsedFile included(includedOptions);
-			if (!included.read()) {
-				return false;
-			}
-			result_.includes.push_back(included.data());
-		//} else if (token.type == Type::DefineStructStart) {
-		//	if (!read)
-		}
-	}
-	return !failed();
-}
-
-Token ParsedFile::readToken() {
-	switch (state_) {
-	case State::Default: return readInDefault();
-	case State::StructStarted: return readInStructStarted();
-	case State::StructFieldName: return readInStructFieldName();
-	case State::Variable: return readInVariable();
-	case State::VariableParents: return readInVariableParents();
-	case State::VariableStarted: return readInVariableStarted();
-	case State::VariableChild: return readInVariableChild();
-	}
-	return invalidToken();
-}
-
-Token ParsedFile::readInDefault() {
-	if (auto startToken = file_.getToken(BasicType::Name)) {
-		if (plainValue(startToken) == "using") {
-			if (auto usingFile = file_.getToken(BasicType::String)) {
-				if (file_.getToken(BasicType::Semicolon)) {
-					return { Type::Using, usingFile.value };
+	bool noErrors = false;
+	do {
+		if (auto startToken = file_.getToken(BasicType::Name)) {
+			if (tokenValue(startToken) == "using") {
+				if (auto includedResult = readIncluded()) {
+					result_.includes.push_back(includedResult);
+					continue;
 				}
-				logErrorUnexpectedToken("';'");
+			} else if (auto braceOpen = file_.getToken(BasicType::LeftBrace)) {
+				if (auto structResult = readStruct(tokenValue(startToken))) {
+					result_.structs.push_back(structResult);
+					continue;
+				}
+			} else if (auto colonToken = file_.getToken(BasicType::Colon)) {
+				if (auto variableResult = readVariable(tokenValue(startToken))) {
+					result_.variables.push_back(variableResult);
+					continue;
+				}
+			}
+		}
+		if (!file_.atEnd()) {
+			logErrorUnexpectedToken() << "using keyword, or struct definition, or variable definition";
+		} else {
+			noErrors = !failed();
+			break;
+		}
+	} while (!failed());
+
+	if (noErrors) {
+		result_.fullpath = QFileInfo(options_.inputPath).absoluteFilePath();
+	}
+	return noErrors;
+}
+
+common::LogStream ParsedFile::logErrorTypeMismatch() {
+	return logError(kErrorTypeMismatch) << "type mismatch: ";
+}
+
+structure::Module ParsedFile::readIncluded() {
+	structure::Module result;
+	if (auto usingFile = file_.getToken(BasicType::String)) {
+		if (file_.getToken(BasicType::Semicolon)) {
+			ParsedFile included(includedOptions(tokenValue(usingFile)));
+			if (included.read()) {
+				result = included.data();
 			} else {
-				logErrorUnexpectedToken("file path");
+				logError(kErrorInIncluded) << "error while parsing '" << tokenValue(usingFile).toStdString() << "'";
 			}
-			return invalidToken();
-		} else if (auto braceOpen = file_.getToken(BasicType::LeftBrace)) {
-			state_ = State::StructStarted;
-			return { Type::DefineStructStart, plainValue(startToken) };
-		} else if (auto colonToken = file_.getToken(BasicType::Colon)) {
-			state_ = State::Variable;
-			return { Type::DefineVariable, plainValue(startToken) };
+		} else {
+			logErrorUnexpectedToken() << "';'";
+		}
+	} else {
+		logErrorUnexpectedToken() << "file path";
+	}
+	return result;
+}
+
+structure::Struct ParsedFile::readStruct(const QString &name) {
+	structure::Struct result = { composeFullName(name) };
+	do {
+		if (auto fieldName = file_.getToken(BasicType::Name)) {
+			if (auto field = readStructField(tokenValue(fieldName))) {
+				result.fields.push_back(field);
+			}
+		} else if (auto braceClose = file_.getToken(BasicType::RightBrace)) {
+			if (result.fields.isEmpty()) {
+				logErrorUnexpectedToken() << "at least one field in struct";
+			}
+			break;
+		} else {
+			logErrorUnexpectedToken() << "struct field name or '}'";
+		}
+	} while (!failed());
+	return result;
+}
+
+structure::Variable ParsedFile::readVariable(const QString &name) {
+	structure::Variable result = { composeFullName(name) };
+	if (auto value = readValue()) {
+		result.value = value;
+		if (!file_.getToken(BasicType::Semicolon)) {
+			logErrorUnexpectedToken() << "';'";
 		}
 	}
-	if (!file_.atEnd()) {
-		logErrorUnexpectedToken("using keyword, or struct definition, or variable definition");
-	}
-	return invalidToken();
+	return result;
 }
 
-Token ParsedFile::readInStructStarted() {
-	if (auto fieldName = file_.getToken(BasicType::Name)) {
-		state_ = State::StructFieldName;
-		return { Type::DefineStructField, plainValue(fieldName) };
-	} else if (auto braceClose = file_.getToken(BasicType::RightBrace)) {
-		state_ = State::Default;
-		return { Type::DefineStructEnd };
-	}
-	logErrorUnexpectedToken("struct field name or '}'");
-	return invalidToken();
-}
-
-Token ParsedFile::readInStructFieldName() {
+structure::StructField ParsedFile::readStructField(const QString &name) {
+	structure::StructField result = { composeFullName(name) };
 	if (auto colonToken = file_.getToken(BasicType::Colon)) {
-		if (auto fieldType = file_.getToken(BasicType::Name)) {
-			if (file_.getToken(BasicType::Semicolon)) {
-				state_ = State::StructStarted;
-				return { Type::StructFieldType, plainValue(fieldType) };
+		if (auto type = readType()) {
+			result.type = type;
+			if (!file_.getToken(BasicType::Semicolon)) {
+				logErrorUnexpectedToken() << "';'";
 			}
-			logErrorUnexpectedToken(";");
-		} else {
-			logErrorUnexpectedToken("struct field type name");
 		}
 	} else {
-		logErrorUnexpectedToken("':'");
+		logErrorUnexpectedToken() << "':'";
 	}
-	return invalidToken();
+	return result;
 }
 
-Token ParsedFile::readInVariable() {
-	if (auto value = readValueToken()) {
-		if (file_.getToken(BasicType::Semicolon)) {
-			state_ = State::Default;
-			return value;
+structure::Type ParsedFile::readType() {
+	structure::Type result;
+	if (auto nameToken = file_.getToken(BasicType::Name)) {
+		auto name = tokenValue(nameToken);
+		if (auto builtInType = typeNames_.value(name.toStdString())) {
+			result = builtInType;
+		} else {
+			result.tag = structure::TypeTag::Struct;
+			result.name = composeFullName(name);
 		}
-		logErrorUnexpectedToken(";");
-		return invalidToken();
-	}
-	if (failed()) {
-		return invalidToken();
+	} else {
+		logErrorUnexpectedToken() << "type name";
 	}
+	return result;
+}
 
+structure::Value ParsedFile::readValue() {
+	if (auto colorValue = readColorValue()) {
+		return colorValue;
+	} else if (auto pointValue = readPointValue()) {
+		return pointValue;
+	} else if (auto spriteValue = readSpriteValue()) {
+		return spriteValue;
+	} else if (auto sizeValue = readSizeValue()) {
+		return sizeValue;
+	} else if (auto transitionValue = readTransitionValue()) {
+		return transitionValue;
+	} else if (auto cursorValue = readCursorValue()) {
+		return cursorValue;
+	} else if (auto alignValue = readAlignValue()) {
+		return alignValue;
+	} else if (auto marginsValue = readMarginsValue()) {
+		return marginsValue;
+	} else if (auto fontValue = readFontValue()) {
+		return fontValue;
+	} else if (auto numericValue = readNumericValue()) {
+		return numericValue;
+	} else if (auto stringValue = readStringValue()) {
+		return stringValue;
+	} else if (auto structValue = readStructValue()) {
+		return structValue;
+	} else if (auto copyValue = readCopyValue()) {
+		return copyValue;
+	} else {
+		logErrorUnexpectedToken() << "variable value";
+	}
+	return {};
+}
+
+structure::Value ParsedFile::readStructValue() {
 	if (auto structName = file_.getToken(BasicType::Name)) {
-		if (file_.getToken(BasicType::LeftParenthesis)) {
-			state_ = State::VariableParents;
-			return { Type::StructStart, plainValue(structName) };
-		} else if (file_.getToken(BasicType::LeftBrace)) {
-			state_ = State::VariableStarted;
-			return { Type::StructStart, plainValue(structName) };
-		} else {
-			logErrorUnexpectedToken("'(' or '{'");
-		}
-	} else {
-		logErrorUnexpectedToken("variable value");
-	}
-	return invalidToken();
-}
-
-Token ParsedFile::readInVariableParents() {
-	if (auto parentName = file_.getToken(BasicType::Name)) {
-		if (file_.getToken(BasicType::Comma)) {
-			return { Type::StructParent, plainValue(parentName) };
-		} else if (file_.getToken(BasicType::RightParenthesis)) {
-			if (file_.getToken(BasicType::LeftBrace)) {
-				state_ = State::VariableStarted;
-				return { Type::StructParent, plainValue(parentName) };
+		if (auto result = defaultConstructedStruct(composeFullName(tokenValue(structName)))) {
+			if (file_.getToken(BasicType::LeftParenthesis)) {
+				if (readStructParents(result)) {
+					if (file_.getToken(BasicType::LeftBrace)) {
+						readStructValueInner(result);
+					} else {
+						logErrorUnexpectedToken() << "'{'";
+					}
+				}
+			} else if (file_.getToken(BasicType::LeftBrace)) {
+				readStructValueInner(result);
+			} else {
+				logErrorUnexpectedToken() << "'(' or '{'";
 			}
-			logErrorUnexpectedToken("'{'");
+			return result;
+		}
+		file_.putBack();
+	}
+	return {};
+}
+
+structure::Value ParsedFile::defaultConstructedStruct(const structure::FullName &structName) {
+	structure::Value result;
+	for (const auto &structType : result_.structs) {
+		if (structType.name == structName) {
+			result.fields.reserve(structType.fields.size());
+			for (const auto &fieldType : structType.fields) {
+				result.fields.push_back({ fieldType.name, fieldType.type });
+			}
+		}
+	}
+	return result;
+}
+
+void ParsedFile::applyStructParent(structure::Value &result, const structure::FullName &parentName) {
+	for (const auto &structValue : result_.variables) {
+		if (structValue.name == parentName) {
+			if (structValue.value.type == result.type) {
+				const auto &srcFields(structValue.value.fields);
+				auto &dstFields(result.fields);
+				logAssert(srcFields.size() == dstFields.size()) << "struct size check failed";
+
+				for (int i = 0, s = srcFields.size(); i != s; ++i) {
+					logAssert(srcFields.at(i).value.type == dstFields.at(i).value.type) << "struct field type check failed";
+					dstFields[i].value = srcFields.at(i).value;
+				}
+			} else {
+				logErrorTypeMismatch() << "parent '" << logFullName(parentName) << "' has type '" << logType(structValue.value.type) << "' while child value has type " << logType(result.type);
+			}
+		}
+	}
+}
+
+bool ParsedFile::readStructValueInner(structure::Value &result) {
+	do {
+		if (auto fieldName = file_.getToken(BasicType::Name)) {
+			if (auto field = readVariable(tokenValue(fieldName))) {
+				for (auto &already : result.fields) {
+					if (already.name == field.name) {
+						if (already.value.type == field.value.type) {
+							already.value = field.value;
+							return true;
+						} else {
+							logErrorTypeMismatch() << "field '" << logFullName(already.name) << "' has type '" << logType(already.value.type) << "' while value has type " << logType(field.value.type);
+							return false;
+						}
+					}
+				}
+				logError(kErrorUnknownField) << "field '" << logFullName(field.name) << "' was not found in struct of type '" << logType(result.type) << "'";
+			}
+		} else if (file_.getToken(BasicType::RightBrace)) {
+			return true;
 		} else {
-			logErrorUnexpectedToken("',' or ')'");
+			logErrorUnexpectedToken() << "variable field name or '}'";
 		}
-	} else {
-		logErrorUnexpectedToken("struct variable parent");
-	}
-	return invalidToken();
+	} while (!failed());
+	return false;
 }
 
-Token ParsedFile::readInVariableStarted() {
-	if (auto fieldName = file_.getToken(BasicType::Name)) {
-		state_ = State::VariableChild;
-		return { Type::VariableField, plainValue(fieldName) };
-	} else if (auto braceClose = file_.getToken(BasicType::RightBrace)) {
-		state_ = State::Default;
-		return { Type::StructEnd };
-	}
-	logErrorUnexpectedToken("struct variable field name or '}'");
-	return invalidToken();
-}
-
-Token ParsedFile::readInVariableChild() {
-	if (auto value = readValueToken()) {
-		if (file_.getToken(BasicType::Semicolon)) {
-			state_ = State::Default;
-			return value;
+bool ParsedFile::readStructParents(structure::Value &result) {
+	do {
+		if (auto parentName = file_.getToken(BasicType::Name)) {
+			applyStructParent(result, composeFullName(tokenValue(parentName)));
+			if (file_.getToken(BasicType::RightParenthesis)) {
+				return true;
+			} else if (!file_.getToken(BasicType::Comma)) {
+				logErrorUnexpectedToken() << "',' or ')'";
+			}
+		} else {
+			logErrorUnexpectedToken() << "struct variable parent";
 		}
-		logErrorUnexpectedToken(";");
-	} else {
-		logErrorUnexpectedToken("variable field value");
-	}
-	return invalidToken();
+	} while (!failed());
+	return false;
 }
 
-Token ParsedFile::readNumericToken() {
+//ParsedFile::Token ParsedFile::readInVariableChild() {
+//	if (auto value = readValue()) {
+//		if (file_.getToken(BasicType::Semicolon)) {
+//			state_ = State::Default;
+//			return value;
+//		}
+//		logErrorUnexpectedToken(";");
+//	} else {
+//		logErrorUnexpectedToken("variable field value");
+//	}
+//	return invalidToken();
+//}
+//
+structure::Value ParsedFile::readPositiveValue() {
 	auto numericToken = file_.getAnyToken();
 	if (numericToken.type == BasicType::Int) {
-		return { Type::Int, plainValue(numericToken) };
+		return { { structure::TypeTag::Int }, tokenValue(numericToken) };
 	} else if (numericToken.type == BasicType::Double) {
-		return { Type::Double, plainValue(numericToken) };
+		return { { structure::TypeTag::Double }, tokenValue(numericToken) };
 	} else if (numericToken.type == BasicType::Name) {
-		auto value = plainValue(numericToken);
+		auto value = tokenValue(numericToken);
 		auto match = QRegularExpression("^\\d+px$").match(value);
 		if (match.hasMatch()) {
-			return { Type::Pixels, value.mid(0, value.size() - 2) };
+			return { { structure::TypeTag::Pixels }, value.mid(0, value.size() - 2) };
 		}
 	}
 	file_.putBack();
-	return invalidToken();
+	return {};
 }
 
-Token ParsedFile::readValueToken() {
-	if (auto colorValue = readColorToken()) {
-		return colorValue;
-	} else if (auto pointValue = readPointToken()) {
-		return pointValue;
-	} else if (auto spriteValue = readSpriteToken()) {
-		return spriteValue;
-	} else if (auto sizeValue = readSizeToken()) {
-		return sizeValue;
-	} else if (auto transitionValue = readTransitionToken()) {
-		return transitionValue;
-	} else if (auto cursorValue = readCursorToken()) {
-		return cursorValue;
-	} else if (auto alignValue = readAlignToken()) {
-		return alignValue;
-	} else if (auto marginsValue = readMarginsToken()) {
-		return marginsValue;
-	} else if (auto fontValue = readFontToken()) {
-		return fontValue;
-	} else if (auto numericValue = readNumericToken()) {
-		return numericValue;
-	} else if (auto stringValue = file_.getToken(BasicType::String)) {
-		return { Type::String, stringValue.value };
+structure::Value ParsedFile::readNumericValue() {
+	if (auto value = readPositiveValue()) {
+		return value;
 	} else if (auto minusToken = file_.getToken(BasicType::Minus)) {
-		if (auto positiveValue = readNumericToken()) {
-			return { positiveValue.type, '-' + positiveValue.value };
+		if (auto positiveValue = readNumericValue()) {
+			return { positiveValue.type, '-' + positiveValue.data };
 		}
-		logErrorUnexpectedToken("numeric value");
+		logErrorUnexpectedToken() << "numeric value";
 	}
-	return invalidToken();
+	return {};
 }
 
-Token ParsedFile::readColorToken() {
-	return invalidToken();
+structure::Value ParsedFile::readStringValue() {
+	if (auto stringToken = file_.getToken(BasicType::String)) {
+		return { { structure::TypeTag::String }, stringToken.value };
+	}
+	return {};
 }
 
-Token ParsedFile::readPointToken() {
-	return invalidToken();
+structure::Value ParsedFile::readColorValue() {
+	if (auto numberSign = file_.getToken(BasicType::Number)) {
+		auto color = file_.getAnyToken();
+		if (color.type == BasicType::Int || color.type == BasicType::Name) {
+			auto chars = tokenValue(color);
+			if (isValidColor(chars)) {
+				return { { structure::TypeTag::Color }, chars.toLower() };
+			}
+		} else {
+			logErrorUnexpectedToken() << "color value in #ccc, #ccca, #cccccc or #ccccccaa format";
+		}
+	}
+	return {};
 }
 
-Token ParsedFile::readSpriteToken() {
-	return invalidToken();
+structure::Value ParsedFile::readPointValue() {
+	return {};
 }
 
-Token ParsedFile::readSizeToken() {
-	return invalidToken();
+structure::Value ParsedFile::readSpriteValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "sprite") {
+			if (!file_.getToken(BasicType::LeftParenthesis)) {
+				logErrorUnexpectedToken() << "'(' and sprite definition";
+				return {};
+			}
+
+			auto x = readNumericValue(); file_.getToken(BasicType::Comma);
+			auto y = readNumericValue(); file_.getToken(BasicType::Comma);
+			auto w = readNumericValue(); file_.getToken(BasicType::Comma);
+			auto h = readNumericValue();
+			if (x.type.tag != structure::TypeTag::Pixels ||
+				y.type.tag != structure::TypeTag::Pixels ||
+				w.type.tag != structure::TypeTag::Pixels ||
+				h.type.tag != structure::TypeTag::Pixels) {
+				logErrorTypeMismatch() << "px rect for the sprite expected";
+				return {};
+			}
+
+			if (!file_.getToken(BasicType::RightParenthesis)) {
+				logErrorUnexpectedToken() << "')'";
+				return {};
+			}
+
+			return { { structure::TypeTag::Sprite }, x.data + ',' + y.data + ',' + w.data + ',' + h.data };
+		}
+		file_.putBack();
+	}
+	return {};
 }
 
-Token ParsedFile::readTransitionToken() {
-	return invalidToken();
+structure::Value ParsedFile::readSizeValue() {
+	return {};
 }
 
-Token ParsedFile::readCursorToken() {
-	return invalidToken();
+structure::Value ParsedFile::readTransitionValue() {
+	return {};
 }
 
-Token ParsedFile::readAlignToken() {
-	return invalidToken();
+structure::Value ParsedFile::readCursorValue() {
+	return {};
 }
 
-Token ParsedFile::readMarginsToken() {
-	return invalidToken();
+structure::Value ParsedFile::readAlignValue() {
+	return {};
 }
 
-Token ParsedFile::readFontToken() {
-	return invalidToken();
+structure::Value ParsedFile::readMarginsValue() {
+	return {};
+}
+
+structure::Value ParsedFile::readFontValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "font") {
+			if (!file_.getToken(BasicType::LeftParenthesis)) {
+				logErrorUnexpectedToken() << "'(' and font definition";
+				return {};
+			}
+
+			structure::Value family, size;
+			do {
+				if (auto familyValue = readStringValue()) {
+					family = familyValue;
+				} else if (auto sizeValue = readNumericValue()) {
+					size = sizeValue;
+				} else if (auto copyValue = readCopyValue()) {
+					if (copyValue.type.tag == structure::TypeTag::String) {
+						family = copyValue;
+					} else if (copyValue.type.tag == structure::TypeTag::Pixels) {
+						size = copyValue;
+					} else {
+						logErrorUnexpectedToken() << "font family, font size or ')'";
+					}
+				} else if (file_.getToken(BasicType::RightParenthesis)) {
+					break;
+				} else {
+					logErrorUnexpectedToken() << "font family, font size or ')'";
+				}
+			} while (!failed());
+
+			if (size.type.tag != structure::TypeTag::Pixels) {
+				logErrorTypeMismatch() << "px value for the font size expected";
+			}
+			return { { structure::TypeTag::Font }, size.data + ',' + family.data };
+		}
+		file_.putBack();
+	}
+	return {};
+}
+
+structure::Value ParsedFile::readCopyValue() {
+	if (auto copyName = file_.getToken(BasicType::Name)) {
+		structure::FullName name = { tokenValue(copyName) };
+		for (const auto &variable : result_.variables) {
+			if (variable.name == name) {
+				auto result = variable.value;
+				result.copy = variable.name;
+				return result;
+			}
+		}
+		logError(kErrorIdentifierNotFound) << "identifier '" << logFullName(name) << "' not found";
+	}
+	return {};
+}
+
+Options ParsedFile::includedOptions(const QString &filepath) {
+	auto result = options_;
+	result.inputPath = filepath;
+	return result;
+}
+
+// Compose context-dependent full name.
+structure::FullName ParsedFile::composeFullName(const QString &name) {
+	return { name };
 }
 
 } // namespace style
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.h b/Telegram/SourceFiles/codegen/style/parsed_file.h
index 9d65f464b..a41efe946 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.h
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.h
@@ -21,8 +21,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #pragma once
 
 #include <memory>
-#include <QtCore/QString>
-#include <QtCore/QFileInfo>
+#include <string>
 #include "codegen/common/basic_tokenized_file.h"
 #include "codegen/style/options.h"
 #include "codegen/style/structure.h"
@@ -37,45 +36,6 @@ public:
 	ParsedFile(const ParsedFile &other) = delete;
 	ParsedFile &operator=(const ParsedFile &other) = delete;
 
-	struct Token {
-		enum class Type {
-			Invalid,
-
-			Using,             // value: file path
-
-			DefineStructStart, // value: struct name
-			DefineStructField, // value: struct field name
-			StructFieldType,   // value: struct field type name
-			DefineStructEnd,
-
-			DefineVariable,    // value: variable name
-			StructStart,       // value: struct name
-			StructParent,      // value: variable parent name
-			VariableField,     // value: variable field name
-			StructEnd,
-
-			Int,
-			Double,
-			Pixels,
-			String,
-			Color,
-			Point,
-			Sprite,
-			Size,
-			Transition,
-			Cursor,
-			Align,
-			Margins,
-			Font,
-		};
-		Type type;
-		QString value;
-
-		explicit operator bool() const {
-			return type != Type::Invalid;
-		}
-	};
-
 	bool read();
 
 	const structure::Module &data() const {
@@ -93,53 +53,75 @@ private:
 		failed_ = true;
 		return file_.logError(code);
 	}
-	common::LogStream logErrorUnexpectedToken(const std::string &expected = std::string()) {
+	common::LogStream logErrorUnexpectedToken() {
 		failed_ = true;
-		return file_.logErrorUnexpectedToken(expected);
+		return file_.logErrorUnexpectedToken();
+	}
+	common::LogStream logErrorTypeMismatch();
+	common::LogStream logAssert(bool assertion) {
+		if (!assertion) {
+			return logError(common::kErrorInternal) << "internal - ";
+		}
+		return common::LogStream(common::LogStream::Null);
 	}
 
-	Token readToken();
+	// Helper methods for context-dependent reading.
+	structure::Module readIncluded();
+	structure::Struct readStruct(const QString &name);
+	structure::Variable readVariable(const QString &name);
 
-	// State value defines what are we waiting next.
-	enum class State {
-		Default, // [ using | struct name | variable name | end ]
-		StructStarted, // [ struct field name | struct end ]
-		StructFieldName, // [ struct field type ]
-		Variable, // [ struct name | variable value ]
-		VariableParents, // [ variable parent name | variable start ]
-		VariableStarted, // [ variable field name | variable end]
-		VariableChild, // [ variable child value ]
-	};
+	structure::StructField readStructField(const QString &name);
+	structure::Type readType();
+	structure::Value readValue();
 
-	// Helper methods for readToken() being in specific State.
-	Token readInDefault();
-	Token readInStructStarted();
-	Token readInStructFieldName();
-	Token readInVariable();
-	Token readInVariableParents();
-	Token readInVariableStarted();
-	Token readInVariableChild();
+	structure::Value readStructValue();
+	structure::Value defaultConstructedStruct(const structure::FullName &name);
+	void applyStructParent(structure::Value &result, const structure::FullName &parentName);
+	bool readStructValueInner(structure::Value &result);
+	bool readStructParents(structure::Value &result);
 
-	Token readNumericToken();
-	Token readValueToken();
-	Token readColorToken();
-	Token readPointToken();
-	Token readSpriteToken();
-	Token readSizeToken();
-	Token readTransitionToken();
-	Token readCursorToken();
-	Token readAlignToken();
-	Token readMarginsToken();
-	Token readFontToken();
+	// Simple methods for reading value types.
+	structure::Value readPositiveValue();
+	structure::Value readNumericValue();
+	structure::Value readStringValue();
+	structure::Value readColorValue();
+	structure::Value readPointValue();
+	structure::Value readSpriteValue();
+	structure::Value readSizeValue();
+	structure::Value readTransitionValue();
+	structure::Value readCursorValue();
+	structure::Value readAlignValue();
+	structure::Value readMarginsValue();
+	structure::Value readFontValue();
+	structure::Value readCopyValue();
+
+	// Look through include directories in options_ and find absolute include path.
+	Options includedOptions(const QString &filepath);
+
+	// Compose context-dependent full name.
+	structure::FullName composeFullName(const QString &name);
 
 	common::BasicTokenizedFile file_;
 	Options options_;
-
 	bool failed_ = false;
-	State state_ = State::Default;
-
 	structure::Module result_;
 
+	QMap<std::string, structure::Type> typeNames_ = {
+		{ "int"       , { structure::TypeTag::Int } },
+		{ "double"    , { structure::TypeTag::Double } },
+		{ "pixels"    , { structure::TypeTag::Pixels } },
+		{ "string"    , { structure::TypeTag::String } },
+		{ "color"     , { structure::TypeTag::Color } },
+		{ "point"     , { structure::TypeTag::Point } },
+		{ "sprite"    , { structure::TypeTag::Sprite } },
+		{ "size"      , { structure::TypeTag::Size } },
+		{ "transition", { structure::TypeTag::Transition } },
+		{ "cursor"    , { structure::TypeTag::Cursor } },
+		{ "align"     , { structure::TypeTag::Align } },
+		{ "margins"   , { structure::TypeTag::Margins } },
+		{ "font"      , { structure::TypeTag::Font } },
+	};
+
 };
 
 } // namespace style
diff --git a/Telegram/SourceFiles/codegen/style/structure.h b/Telegram/SourceFiles/codegen/style/structure.h
index cde1813e8..c4f7b68c2 100644
--- a/Telegram/SourceFiles/codegen/style/structure.h
+++ b/Telegram/SourceFiles/codegen/style/structure.h
@@ -21,7 +21,6 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #pragma once
 
 #include <QtCore/QString>
-#include <QtCore/QList>
 #include <QtCore/QStringList>
 
 namespace codegen {
@@ -32,6 +31,7 @@ namespace structure {
 using FullName = QStringList;
 
 enum class TypeTag {
+	Invalid,
 	Int,
 	Double,
 	Pixels,
@@ -51,28 +51,55 @@ enum class TypeTag {
 struct Type {
 	TypeTag tag;
 	FullName name; // only for type == ClassType::Struct
+
+	explicit operator bool() const {
+		return (tag != TypeTag::Invalid);
+	}
 };
+inline bool operator==(const Type &a, const Type &b) {
+	return (a.tag == b.tag) && (a.name == b.name);
+}
+inline bool operator!=(const Type &a, const Type &b) {
+	return !(a == b);
+}
 
 struct Variable;
 struct Value {
+	Type type;
 	QString data; // for plain types
 	QList<Variable> fields; // for struct types
+	FullName copy; // for copies of existing named values
+
+	explicit operator bool() const {
+		return !data.isEmpty() || !fields.isEmpty() || !copy.isEmpty();
+	}
 };
 
 struct Variable {
 	FullName name;
-	Type type;
 	Value value;
+
+	explicit operator bool() const {
+		return !name.isEmpty();
+	}
 };
 
 struct StructField {
 	FullName name;
 	Type type;
+
+	explicit operator bool() const {
+		return !name.isEmpty();
+	}
 };
 
 struct Struct {
 	FullName name;
 	QList<StructField> fields;
+
+	explicit operator bool() const {
+		return !name.isEmpty();
+	}
 };
 
 struct Module {
@@ -80,6 +107,10 @@ struct Module {
 	QList<Module> includes;
 	QList<Struct> structs;
 	QList<Variable> variables;
+
+	explicit operator bool() const {
+		return !fullpath.isEmpty();
+	}
 };
 
 } // namespace structure
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
index 967ae2811..848016fb3 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
@@ -69,7 +69,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
-      <PreprocessorDefinitions>UNICODE;WIN32;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_CORE_LIB;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

From edd26b3224e4113d56347480a32daed39ffa07cb Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Sun, 17 Apr 2016 20:52:17 +0300
Subject: [PATCH 04/12] Reading of old style format fully supported in
 codegen_style.

---
 Telegram/Resources/style.txt                  |  25 +-
 Telegram/Resources/style_classes.txt          | 192 +++----
 .../codegen/common/basic_tokenized_file.cpp   |  26 +
 .../codegen/common/basic_tokenized_file.h     |   6 +
 Telegram/SourceFiles/codegen/common/logging.h |   2 +-
 .../SourceFiles/codegen/style/generator.h     |   1 -
 .../SourceFiles/codegen/style/parsed_file.cpp | 504 +++++++++++++-----
 .../SourceFiles/codegen/style/parsed_file.h   |  13 +
 .../SourceFiles/codegen/style/structure.h     |  54 +-
 .../codegen/style/structure_types.cpp         | 204 +++++++
 .../codegen/style/structure_types.h           | 174 ++++++
 Telegram/SourceFiles/pspecific_mac_p.mm       |   4 +-
 .../vc/codegen_style/codegen_style.vcxproj    |   2 +
 .../codegen_style.vcxproj.filters             |   6 +
 14 files changed, 927 insertions(+), 286 deletions(-)
 create mode 100644 Telegram/SourceFiles/codegen/style/structure_types.cpp
 create mode 100644 Telegram/SourceFiles/codegen/style/structure_types.h

diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt
index 9c88277fd..f63bb4db3 100644
--- a/Telegram/Resources/style.txt
+++ b/Telegram/Resources/style.txt
@@ -385,7 +385,7 @@ btnDefIconed: iconedButton {
 	font: font(fsize);
 
 	opacity: 0.78;
-	overOpacity: 1;
+	overOpacity: 1.;
 
 	textPos: point(0px, 0px);
 	downTextPos: point(0px, 0px);
@@ -433,7 +433,7 @@ titleBackButton: iconedButton(btnDefIconed) {
 	width: -30px;
 	height: 39px;
 
-	opacity: 1;
+	opacity: 1.;
 	cursor: cursor(default);
 
 	textPos: point(23px, 10px);
@@ -2189,7 +2189,7 @@ mvDropdown: dropdown(dropdownDef) {
 	shadow: sprite(0px, 0px, 0px, 0px);
 	padding: margins(11px, 12px, 11px, 12px);
 
-	border: 0;
+	border: 0px;
 	width: 182px;
 }
 mvButton: iconedButton(btnDefIconed) {
@@ -2197,8 +2197,8 @@ mvButton: iconedButton(btnDefIconed) {
 	overBgColor: #505050;
 	font: font(fsize);
 
-	opacity: 1;
-	overOpacity: 1;
+	opacity: 1.;
+	overOpacity: 1.;
 
 	width: -32px;
 	height: 36px;
@@ -2298,21 +2298,22 @@ overviewFileExtFont: font(18px semibold);
 
 // Mac specific
 
-macAccessory: size(450, 90);
+macAccessoryWidth: 450.;
+macAccessoryHeight: 90.;
 macEnableFilterAdd: 2;
 macEnableFilterTop: 5;
 macSelectorTop: 6;
 macAlwaysThisAppTop: 4;
 macAppHintTop: 8;
-macCautionIconSize: size(16, 16);
+macCautionIconSize: 16;
 
 btnContext: iconedButton(btnDefIconed) {
 	bgColor: white;
 	overBgColor: btnWhiteHover;
 	font: font(14px);
 
-	opacity: 1;
-	overOpacity: 1;
+	opacity: 1.;
+	overOpacity: 1.;
 
 	width: -32px;
 	height: 36px;
@@ -2399,8 +2400,8 @@ passcodeSkip: 31px;
 
 mentionHeight: 40px;
 mentionScroll: flatScroll(scrollDef) {
-	topsh: 0;
-	bottomsh: 0;
+	topsh: 0px;
+	bottomsh: 0px;
 }
 mentionPadding: margins(8px, 5px, 8px, 5px);
 mentionTop: 11px;
@@ -2420,7 +2421,7 @@ sessionsHeight: 440px;
 sessionHeight: 70px;
 sessionCurrentPadding: margins(0px, 7px, 0px, 4px);
 sessionCurrentHeight: 118px;
-sessionPadding: margins(21px, 10px, 21px, 0);
+sessionPadding: margins(21px, 10px, 21px, 0px);
 sessionNameFont: msgNameFont;
 sessionActiveFont: msgDateFont;
 sessionActiveColor: #aaa;
diff --git a/Telegram/Resources/style_classes.txt b/Telegram/Resources/style_classes.txt
index a3405a048..27079bf5b 100644
--- a/Telegram/Resources/style_classes.txt
+++ b/Telegram/Resources/style_classes.txt
@@ -26,7 +26,7 @@ textStyle {
 	monoFg: color;
 	selectBg: color;
 	selectOverlay: color;
-	lineHeight: number;
+	lineHeight: pixels;
 }
 
 linkButton {
@@ -42,7 +42,7 @@ sysButton {
 	img: sprite;
 	color: color;
 	overColor: color;
-	duration: number;
+	duration: int;
 }
 
 flatButton {
@@ -54,16 +54,16 @@ flatButton {
 	overBgColor: color;
 	downBgColor: color;
 
-	width: number;
-	height: number;
+	width: pixels;
+	height: pixels;
 
-	textTop: number;
-	overTextTop: number;
-	downTextTop: number;
+	textTop: pixels;
+	overTextTop: pixels;
+	downTextTop: pixels;
 
 	font: font;
 	overFont: font;
-	duration: number;
+	duration: int;
 	cursor: cursor;
 }
 
@@ -76,17 +76,17 @@ iconedButton {
 	color: color;
 	bgColor: color;
 	overBgColor: color;
-	width: number;
-	height: number;
+	width: pixels;
+	height: pixels;
 	font: font;
 
-	opacity: number;
-	overOpacity: number;
+	opacity: double;
+	overOpacity: double;
 
 	textPos: point;
 	downTextPos: point;
 
-	duration: number;
+	duration: int;
 	cursor: cursor;
 }
 
@@ -95,12 +95,12 @@ flatCheckbox {
 	bgColor: color;
 	disColor: color;
 
-	width: number;
-	height: number;
-	textTop: number;
-	textLeft: number;
+	width: pixels;
+	height: pixels;
+	textTop: pixels;
+	textLeft: pixels;
 	font: font;
-	duration: number;
+	duration: int;
 	bgFunc: transition;
 	cursor: cursor;
 
@@ -120,8 +120,8 @@ flatInput {
 	textColor: color;
 	bgColor: color;
 	bgActive: color;
-	width: number;
-	height: number;
+	width: pixels;
+	height: pixels;
 	textMrg: margins;
 	align: align;
 	font: font;
@@ -130,7 +130,7 @@ flatInput {
 	imgRect: sprite;
 	imgPos: point;
 
-	borderWidth: number;
+	borderWidth: pixels;
 	borderColor: color;
 	borderActive: color;
 	borderError: color;
@@ -139,8 +139,8 @@ flatInput {
 	phFocusColor: color;
 	phPos: point;
 	phAlign: align;
-	phShift: number;
-	phDuration: number;
+	phShift: pixels;
+	phDuration: int;
 	phLeftFunc: transition;
 	phAlphaFunc: transition;
 	phColorFunc: transition;
@@ -149,7 +149,7 @@ flatInput {
 flatTextarea {
 	textColor: color;
 	bgColor: color;
-	width: number;
+	width: pixels;
 	textMrg: margins;
 	align: align;
 	font: font;
@@ -159,8 +159,8 @@ flatTextarea {
 	phFocusColor: color;
 	phPos: point;
 	phAlign: align;
-	phShift: number;
-	phDuration: number;
+	phShift: pixels;
+	phDuration: int;
 	phLeftFunc: transition;
 	phAlphaFunc: transition;
 	phColorFunc: transition;
@@ -172,26 +172,26 @@ flatScroll {
 	barOverColor: color;
 	bgOverColor: color;
 
-	round: number;
+	round: pixels;
 
-	width: number;
-	minHeight: number;
-	deltax: number;
-	deltat: number;
-	deltab: number;
+	width: pixels;
+	minHeight: pixels;
+	deltax: pixels;
+	deltat: pixels;
+	deltab: pixels;
 
-	topsh: number;
-	bottomsh: number;
+	topsh: pixels;
+	bottomsh: pixels;
 	shColor: color;
 
-	duration: number;
-	hiding: number;
+	duration: int;
+	hiding: int;
 }
 
 countryInput {
-	width: number;
-	height: number;
-	top: number;
+	width: pixels;
+	height: pixels;
+	top: pixels;
 	bgColor: color;
 	ptrSize: size;
 	textMrg: margins;
@@ -201,53 +201,53 @@ countryInput {
 
 slider {
 	color: color;
-	thikness: number;
+	thikness: pixels;
 
-	width: number;
+	width: pixels;
 	bar: sprite;
 }
 
 flatLabel {
 	font: font;
-	minWidth: number;
-	width: number;
+	minWidth: pixels;
+	width: pixels;
 	align: align;
 }
 
 switcher {
-	border: number;
+	border: pixels;
 	borderColor: color;
 
 	bgColor: color;
 	bgHovered: color;
 	bgActive: color;
 
-	height: number;
+	height: pixels;
 
 	font: font;
 	textColor: color;
 	activeColor: color;
 
-	duration: number;
+	duration: int;
 }
 
 dropdown {
-	border: number;
+	border: pixels;
 	borderColor: color;
 
 	padding: margins;
 	shadow: sprite;
-	shadowShift: number;
+	shadowShift: pixels;
 
-	duration: number;
-	width: number;
+	duration: int;
+	width: pixels;
 }
 
 PopupMenu {
-	skip: number;
+	skip: pixels;
 
 	shadow: sprite;
-	shadowShift: number;
+	shadowShift: pixels;
 
 	itemBg: color;
 	itemBgOver: color;
@@ -261,15 +261,15 @@ PopupMenu {
 	itemFont: font;
 
 	separatorPadding: margins;
-	separatorWidth: number;
+	separatorWidth: pixels;
 	separatorFg: color;
 
 	arrow: sprite;
 
-	duration: number;
+	duration: int;
 
-	widthMin: number;
-	widthMax: number;
+	widthMin: pixels;
+	widthMax: pixels;
 }
 
 Tooltip {
@@ -280,18 +280,18 @@ Tooltip {
 	textPadding: margins;
 
 	shift: point;
-	skip: number;
+	skip: pixels;
 
-	widthMax: number;
-	linesMax: number;
+	widthMax: pixels;
+	linesMax: int;
 }
 
 botKeyboardButton {
-	margin: number;
-	padding: number;
-	height: number;
-	textTop: number;
-	downTextTop: number;
+	margin: pixels;
+	padding: pixels;
+	height: pixels;
+	textTop: pixels;
+	downTextTop: pixels;
 }
 
 BoxButton {
@@ -300,13 +300,13 @@ BoxButton {
 	textBg: color; // rect of textBg with rounded rect of textBgOver upon it
 	textBgOver: color;
 
-	width: number;
-	height: number;
+	width: pixels;
+	height: pixels;
 
-	textTop: number;
+	textTop: pixels;
 
 	font: font;
-	duration: number;
+	duration: int;
 }
 
 Checkbox {
@@ -317,16 +317,16 @@ Checkbox {
 	checkFgOver: color;
 	checkFgActive: color;
 
-	width: number;
-	height: number;
+	width: pixels;
+	height: pixels;
 
 	textPosition: point;
-	diameter: number;
-	thickness: number;
+	diameter: pixels;
+	thickness: pixels;
 	checkIcon: sprite;
 
 	font: font;
-	duration: number;
+	duration: int;
 }
 
 Radiobutton {
@@ -337,16 +337,16 @@ Radiobutton {
 	checkFgOver: color;
 	checkFgActive: color;
 
-	width: number;
-	height: number;
+	width: pixels;
+	height: pixels;
 
 	textPosition: point;
-	diameter: number;
-	thickness: number;
-	checkSkip: number;
+	diameter: pixels;
+	thickness: pixels;
+	checkSkip: pixels;
 
 	font: font;
-	duration: number;
+	duration: int;
 }
 
 InputArea {
@@ -357,23 +357,23 @@ InputArea {
 	placeholderFgActive: color;
 	placeholderMargins: margins;
 	placeholderAlign: align;
-	placeholderShift: number;
+	placeholderShift: pixels;
 
-	duration: number;
+	duration: int;
 
 	borderFg: color;
 	borderFgActive: color;
 	borderFgError: color;
 
-	border: number;
-	borderActive: number;
-	borderError: number;
+	border: pixels;
+	borderActive: pixels;
+	borderError: pixels;
 
 	font: font;
 
-	width: number;
-	heightMin: number;
-	heightMax: number;
+	width: pixels;
+	heightMin: pixels;
+	heightMax: pixels;
 }
 
 InputField {
@@ -385,28 +385,28 @@ InputField {
 	placeholderFgActive: color;
 	placeholderMargins: margins;
 	placeholderAlign: align;
-	placeholderShift: number;
+	placeholderShift: pixels;
 
-	duration: number;
+	duration: int;
 
 	borderFg: color;
 	borderFgActive: color;
 	borderFgError: color;
 
-	border: number;
-	borderActive: number;
-	borderError: number;
+	border: pixels;
+	borderActive: pixels;
+	borderError: pixels;
 
 	font: font;
 
-	width: number;
-	height: number;
+	width: pixels;
+	height: pixels;
 
 	iconSprite: sprite;
 	iconPosition: point;
 }
 
 PeerAvatarButton {
-	size: number;
-	photoSize: number;
+	size: pixels;
+	photoSize: pixels;
 }
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
index fb6611e49..2a80bea35 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
@@ -249,6 +249,32 @@ void BasicTokenizedFile::skipWhitespaces() {
 	tokenStart_ = reader_.currentPtr();
 }
 
+LogStream operator<<(LogStream &&stream, BasicTokenizedFile::Token::Type type) {
+	const char *value = "'invalid'";
+	switch (type) {
+	case Type::Invalid: break;
+	case Type::Int: value = "'int'"; break;
+	case Type::Double: value = "'double'"; break;
+	case Type::String: value = "'string'"; break;
+	case Type::LeftParenthesis: value = "'('"; break;
+	case Type::RightParenthesis: value = "')'"; break;
+	case Type::LeftBrace: value = "'{'"; break;
+	case Type::RightBrace: value = "'}'"; break;
+	case Type::LeftBracket: value = "'['"; break;
+	case Type::RightBracket: value = "']'"; break;
+	case Type::Colon: value = "':'"; break;
+	case Type::Semicolon: value = "';'"; break;
+	case Type::Comma: value = "','"; break;
+	case Type::Dot: value = "'.'"; break;
+	case Type::Number: value = "'#'"; break;
+	case Type::Plus: value = "'+'"; break;
+	case Type::Minus: value = "'-'"; break;
+	case Type::Equals: value = "'='"; break;
+	case Type::Name: value = "'identifier'"; break;
+	}
+	return std::forward<LogStream>(stream) << value;
+}
+
 LogStream BasicTokenizedFile::logError(int code) const {
 	return reader_.logError(code, lineNumber_);
 }
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
index 97052783e..400fc9051 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
@@ -147,5 +147,11 @@ private:
 
 };
 
+LogStream operator<<(LogStream &&stream, BasicTokenizedFile::Token::Type type);
+template <>
+LogStream operator<< <BasicTokenizedFile::Token::Type>(LogStream &&stream, BasicTokenizedFile::Token::Type &&value) = delete;
+template <>
+LogStream operator<< <const BasicTokenizedFile::Token::Type&>(LogStream &&stream, const BasicTokenizedFile::Token::Type &value) = delete;
+
 } // namespace common
 } // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/common/logging.h b/Telegram/SourceFiles/codegen/common/logging.h
index 019cddd26..55567ac84 100644
--- a/Telegram/SourceFiles/codegen/common/logging.h
+++ b/Telegram/SourceFiles/codegen/common/logging.h
@@ -36,7 +36,7 @@ public:
 	}
 	explicit LogStream(std::ostream &stream) : stream_(&stream) {
 	}
-	LogStream(LogStream &&other) : stream_(other.stream_) {
+	LogStream(LogStream &&other) : stream_(other.stream_), final_(other.final_) {
 		other.final_ = false;
 	}
 	std::ostream *stream() const {
diff --git a/Telegram/SourceFiles/codegen/style/generator.h b/Telegram/SourceFiles/codegen/style/generator.h
index ab6f2a0d3..526a70912 100644
--- a/Telegram/SourceFiles/codegen/style/generator.h
+++ b/Telegram/SourceFiles/codegen/style/generator.h
@@ -22,7 +22,6 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 #include <memory>
 #include <QtCore/QString>
-//#include "codegen/common/qstringlist_safe.h"
 #include "codegen/style/options.h"
 
 namespace codegen {
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.cpp b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
index b09144569..f5f7e2d66 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.cpp
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
@@ -38,6 +38,8 @@ constexpr int kErrorInIncluded         = 801;
 constexpr int kErrorTypeMismatch       = 802;
 constexpr int kErrorUnknownField       = 803;
 constexpr int kErrorIdentifierNotFound = 804;
+constexpr int kErrorAlreadyDefined     = 805;
+constexpr int kErrorBadString          = 806;
 
 QString tokenValue(const BasicToken &token) {
 	if (token.type == BasicType::String) {
@@ -54,13 +56,45 @@ bool isValidColor(const QString &str) {
 
 	for (auto ch : str) {
 		auto code = ch.unicode();
-		if ((code < '0' || code > '9') && (code < 'a' || code > 'f') && (code < 'A' || code > 'F')) {
+		if ((code < '0' || code > '9') && (code < 'a' || code > 'f')) {
 			return false;
 		}
 	}
 	return true;
 }
 
+uchar readHexUchar(QChar ch) {
+	auto code = ch.unicode();
+	return (code >= '0' && code <= '9') ? ((code - '0') & 0xFF) : ((code - 'a') & 0xFF);
+}
+
+uchar readHexUchar(QChar char1, QChar char2) {
+	return ((readHexUchar(char1) & 0x0F) << 4) | (readHexUchar(char2) & 0x0F);
+}
+
+structure::data::color convertWebColor(const QString &str) {
+	uchar r = 0, g = 0, b = 0, a = 255;
+	if (isValidColor(str)) {
+		auto len = str.size();
+		if (len == 3 || len == 4) {
+			r = readHexUchar(str.at(0), str.at(0));
+			g = readHexUchar(str.at(1), str.at(1));
+			b = readHexUchar(str.at(2), str.at(2));
+			if (len == 4) a = readHexUchar(str.at(3), str.at(3));
+		} else {
+			r = readHexUchar(str.at(0), str.at(1));
+			g = readHexUchar(str.at(2), str.at(3));
+			b = readHexUchar(str.at(4), str.at(5));
+			if (len == 8) a = readHexUchar(str.at(6), str.at(7));
+		}
+	}
+	return { r, g, b, a };
+}
+
+structure::data::color convertIntColor(int r, int g, int b, int a) {
+	return { uchar(r & 0xFF), uchar(g & 0xFF), uchar(b & 0xFF), uchar(a & 0xFF) };
+}
+
 std::string logFullName(const structure::FullName &name) {
 	return name.join('.').toStdString();
 }
@@ -87,6 +121,31 @@ std::string logType(const structure::Type &type) {
 	return builtInTypes->value(type.tag, "invalid");
 }
 
+QString fullNameKey(const structure::FullName &name) {
+	return name.join('.');
+}
+
+bool validateAnsiString(const QString &value) {
+	for (auto ch : value) {
+		if (ch.unicode() > 127) {
+			return false;
+		}
+	}
+	return true;
+}
+
+bool validateTransitionString(const QString &value) {
+	return QRegularExpression("^[a-zA-Z_]+$").match(value).hasMatch();
+}
+
+bool validateCursorString(const QString &value) {
+	return QRegularExpression("^[a-z_]+$").match(value).hasMatch();
+}
+
+bool validateAlignString(const QString &value) {
+	return QRegularExpression("^[a-z_]+$").match(value).hasMatch();
+}
+
 } // namespace
 
 ParsedFile::ParsedFile(const Options &options)
@@ -109,11 +168,21 @@ bool ParsedFile::read() {
 				}
 			} else if (auto braceOpen = file_.getToken(BasicType::LeftBrace)) {
 				if (auto structResult = readStruct(tokenValue(startToken))) {
+					if (findStruct(structResult.name)) {
+						logError(kErrorAlreadyDefined) << "struct '" << logFullName(structResult.name) << "' already defined";
+						break;
+					}
+					result_.structsByName.insert(fullNameKey(structResult.name), result_.structs.size());
 					result_.structs.push_back(structResult);
 					continue;
 				}
 			} else if (auto colonToken = file_.getToken(BasicType::Colon)) {
 				if (auto variableResult = readVariable(tokenValue(startToken))) {
+					if (findVariable(variableResult.name)) {
+						logError(kErrorAlreadyDefined) << "variable '" << logFullName(variableResult.name) << "' already defined";
+						break;
+					}
+					result_.variablesByName.insert(fullNameKey(variableResult.name), result_.variables.size());
 					result_.variables.push_back(variableResult);
 					continue;
 				}
@@ -139,19 +208,15 @@ common::LogStream ParsedFile::logErrorTypeMismatch() {
 
 structure::Module ParsedFile::readIncluded() {
 	structure::Module result;
-	if (auto usingFile = file_.getToken(BasicType::String)) {
-		if (file_.getToken(BasicType::Semicolon)) {
+	if (auto usingFile = assertNextToken(BasicType::String)) {
+		if (assertNextToken(BasicType::Semicolon)) {
 			ParsedFile included(includedOptions(tokenValue(usingFile)));
 			if (included.read()) {
 				result = included.data();
 			} else {
 				logError(kErrorInIncluded) << "error while parsing '" << tokenValue(usingFile).toStdString() << "'";
 			}
-		} else {
-			logErrorUnexpectedToken() << "';'";
 		}
-	} else {
-		logErrorUnexpectedToken() << "file path";
 	}
 	return result;
 }
@@ -163,13 +228,11 @@ structure::Struct ParsedFile::readStruct(const QString &name) {
 			if (auto field = readStructField(tokenValue(fieldName))) {
 				result.fields.push_back(field);
 			}
-		} else if (auto braceClose = file_.getToken(BasicType::RightBrace)) {
+		} else if (assertNextToken(BasicType::RightBrace)) {
 			if (result.fields.isEmpty()) {
 				logErrorUnexpectedToken() << "at least one field in struct";
 			}
 			break;
-		} else {
-			logErrorUnexpectedToken() << "struct field name or '}'";
 		}
 	} while (!failed());
 	return result;
@@ -179,8 +242,8 @@ structure::Variable ParsedFile::readVariable(const QString &name) {
 	structure::Variable result = { composeFullName(name) };
 	if (auto value = readValue()) {
 		result.value = value;
-		if (!file_.getToken(BasicType::Semicolon)) {
-			logErrorUnexpectedToken() << "';'";
+		if (value.type().tag != structure::TypeTag::Struct) {
+			assertNextToken(BasicType::Semicolon);
 		}
 	}
 	return result;
@@ -188,31 +251,30 @@ structure::Variable ParsedFile::readVariable(const QString &name) {
 
 structure::StructField ParsedFile::readStructField(const QString &name) {
 	structure::StructField result = { composeFullName(name) };
-	if (auto colonToken = file_.getToken(BasicType::Colon)) {
+	if (auto colonToken = assertNextToken(BasicType::Colon)) {
 		if (auto type = readType()) {
 			result.type = type;
-			if (!file_.getToken(BasicType::Semicolon)) {
-				logErrorUnexpectedToken() << "';'";
-			}
+			assertNextToken(BasicType::Semicolon);
 		}
-	} else {
-		logErrorUnexpectedToken() << "':'";
 	}
 	return result;
 }
 
 structure::Type ParsedFile::readType() {
 	structure::Type result;
-	if (auto nameToken = file_.getToken(BasicType::Name)) {
+	if (auto nameToken = assertNextToken(BasicType::Name)) {
 		auto name = tokenValue(nameToken);
 		if (auto builtInType = typeNames_.value(name.toStdString())) {
 			result = builtInType;
 		} else {
-			result.tag = structure::TypeTag::Struct;
-			result.name = composeFullName(name);
+			auto fullName = composeFullName(name);
+			if (findStruct(fullName)) {
+				result.tag = structure::TypeTag::Struct;
+				result.name = fullName;
+			} else {
+				logError(kErrorIdentifierNotFound) << "type name '" << logFullName(fullName) << "' not found";
+			}
 		}
-	} else {
-		logErrorUnexpectedToken() << "type name";
 	}
 	return result;
 }
@@ -254,17 +316,12 @@ structure::Value ParsedFile::readStructValue() {
 	if (auto structName = file_.getToken(BasicType::Name)) {
 		if (auto result = defaultConstructedStruct(composeFullName(tokenValue(structName)))) {
 			if (file_.getToken(BasicType::LeftParenthesis)) {
-				if (readStructParents(result)) {
-					if (file_.getToken(BasicType::LeftBrace)) {
-						readStructValueInner(result);
-					} else {
-						logErrorUnexpectedToken() << "'{'";
-					}
+				if (!readStructParents(result)) {
+					return {};
 				}
-			} else if (file_.getToken(BasicType::LeftBrace)) {
+			}
+			if (assertNextToken(BasicType::LeftBrace)) {
 				readStructValueInner(result);
-			} else {
-				logErrorUnexpectedToken() << "'(' or '{'";
 			}
 			return result;
 		}
@@ -274,71 +331,91 @@ structure::Value ParsedFile::readStructValue() {
 }
 
 structure::Value ParsedFile::defaultConstructedStruct(const structure::FullName &structName) {
-	structure::Value result;
-	for (const auto &structType : result_.structs) {
-		if (structType.name == structName) {
-			result.fields.reserve(structType.fields.size());
-			for (const auto &fieldType : structType.fields) {
-				result.fields.push_back({ fieldType.name, fieldType.type });
-			}
+	if (auto pattern = findStruct(structName)) {
+		QList<structure::Variable> fields;
+		fields.reserve(pattern->fields.size());
+		for (const auto &fieldType : pattern->fields) {
+			fields.push_back({ fieldType.name, { fieldType.type, Qt::Uninitialized } });
 		}
+		return { structName, fields };
 	}
-	return result;
+	return {};
 }
 
 void ParsedFile::applyStructParent(structure::Value &result, const structure::FullName &parentName) {
-	for (const auto &structValue : result_.variables) {
-		if (structValue.name == parentName) {
-			if (structValue.value.type == result.type) {
-				const auto &srcFields(structValue.value.fields);
-				auto &dstFields(result.fields);
-				logAssert(srcFields.size() == dstFields.size()) << "struct size check failed";
-
-				for (int i = 0, s = srcFields.size(); i != s; ++i) {
-					logAssert(srcFields.at(i).value.type == dstFields.at(i).value.type) << "struct field type check failed";
-					dstFields[i].value = srcFields.at(i).value;
-				}
-			} else {
-				logErrorTypeMismatch() << "parent '" << logFullName(parentName) << "' has type '" << logType(structValue.value.type) << "' while child value has type " << logType(result.type);
-			}
+	if (auto parent = findVariable(parentName)) {
+		if (parent->value.type() != result.type()) {
+			logErrorTypeMismatch() << "parent '" << logFullName(parentName) << "' has type '" << logType(parent->value.type()) << "' while child value has type " << logType(result.type());
+			return;
 		}
+
+		const auto *srcFields(parent->value.Complex());
+		auto *dstFields(result.Complex());
+		if (!srcFields || !dstFields) {
+			logAssert(false) << "struct data check failed";
+			return;
+		}
+
+		logAssert(srcFields->size() == dstFields->size()) << "struct size check failed";
+		for (int i = 0, s = srcFields->size(); i != s; ++i) {
+			const auto &srcValue(srcFields->at(i).value);
+			auto &dstValue((*dstFields)[i].value);
+			logAssert(srcValue.type() == dstValue.type()) << "struct field type check failed";
+			dstValue = srcValue;
+		}
+	} else {
+		logError(kErrorIdentifierNotFound) << "parent '" << logFullName(parentName) << "' not found";
 	}
 }
 
 bool ParsedFile::readStructValueInner(structure::Value &result) {
 	do {
 		if (auto fieldName = file_.getToken(BasicType::Name)) {
-			if (auto field = readVariable(tokenValue(fieldName))) {
-				for (auto &already : result.fields) {
-					if (already.name == field.name) {
-						if (already.value.type == field.value.type) {
-							already.value = field.value;
-							return true;
-						} else {
-							logErrorTypeMismatch() << "field '" << logFullName(already.name) << "' has type '" << logType(already.value.type) << "' while value has type " << logType(field.value.type);
-							return false;
-						}
-					}
-				}
-				logError(kErrorUnknownField) << "field '" << logFullName(field.name) << "' was not found in struct of type '" << logType(result.type) << "'";
+			if (!assertNextToken(BasicType::Colon)) {
+				return false;
 			}
-		} else if (file_.getToken(BasicType::RightBrace)) {
+
+			if (auto field = readVariable(tokenValue(fieldName))) {
+				if (!assignStructField(result, field)) {
+					return false;
+				}
+			}
+		} else if (assertNextToken(BasicType::RightBrace)) {
 			return true;
-		} else {
-			logErrorUnexpectedToken() << "variable field name or '}'";
 		}
 	} while (!failed());
 	return false;
 }
 
+bool ParsedFile::assignStructField(structure::Value &result, const structure::Variable &field) {
+	auto *fields = result.Complex();
+	if (!fields) {
+		logAssert(false) << "struct data check failed";
+		return false;
+	}
+	for (auto &already : *fields) {
+		if (already.name == field.name) {
+			if (already.value.type() == field.value.type()) {
+				already.value = field.value;
+				return true;
+			} else {
+				logErrorTypeMismatch() << "field '" << logFullName(already.name) << "' has type '" << logType(already.value.type()) << "' while value has type '" << logType(field.value.type()) << "'";
+				return false;
+			}
+		}
+	}
+	logError(kErrorUnknownField) << "field '" << logFullName(field.name) << "' was not found in struct of type '" << logType(result.type()) << "'";
+	return false;
+}
+
 bool ParsedFile::readStructParents(structure::Value &result) {
 	do {
-		if (auto parentName = file_.getToken(BasicType::Name)) {
+		if (auto parentName = assertNextToken(BasicType::Name)) {
 			applyStructParent(result, composeFullName(tokenValue(parentName)));
 			if (file_.getToken(BasicType::RightParenthesis)) {
 				return true;
-			} else if (!file_.getToken(BasicType::Comma)) {
-				logErrorUnexpectedToken() << "',' or ')'";
+			} else {
+				assertNextToken(BasicType::Comma);
 			}
 		} else {
 			logErrorUnexpectedToken() << "struct variable parent";
@@ -347,30 +424,17 @@ bool ParsedFile::readStructParents(structure::Value &result) {
 	return false;
 }
 
-//ParsedFile::Token ParsedFile::readInVariableChild() {
-//	if (auto value = readValue()) {
-//		if (file_.getToken(BasicType::Semicolon)) {
-//			state_ = State::Default;
-//			return value;
-//		}
-//		logErrorUnexpectedToken(";");
-//	} else {
-//		logErrorUnexpectedToken("variable field value");
-//	}
-//	return invalidToken();
-//}
-//
 structure::Value ParsedFile::readPositiveValue() {
 	auto numericToken = file_.getAnyToken();
 	if (numericToken.type == BasicType::Int) {
-		return { { structure::TypeTag::Int }, tokenValue(numericToken) };
+		return { structure::TypeTag::Int, tokenValue(numericToken).toInt() };
 	} else if (numericToken.type == BasicType::Double) {
-		return { { structure::TypeTag::Double }, tokenValue(numericToken) };
+		return { tokenValue(numericToken).toDouble() };
 	} else if (numericToken.type == BasicType::Name) {
 		auto value = tokenValue(numericToken);
 		auto match = QRegularExpression("^\\d+px$").match(value);
 		if (match.hasMatch()) {
-			return { { structure::TypeTag::Pixels }, value.mid(0, value.size() - 2) };
+			return { structure::TypeTag::Pixels, value.mid(0, value.size() - 2).toInt() };
 		}
 	}
 	file_.putBack();
@@ -382,7 +446,7 @@ structure::Value ParsedFile::readNumericValue() {
 		return value;
 	} else if (auto minusToken = file_.getToken(BasicType::Minus)) {
 		if (auto positiveValue = readNumericValue()) {
-			return { positiveValue.type, '-' + positiveValue.data };
+			return { positiveValue.type().tag, -positiveValue.Int() };
 		}
 		logErrorUnexpectedToken() << "numeric value";
 	}
@@ -391,7 +455,11 @@ structure::Value ParsedFile::readNumericValue() {
 
 structure::Value ParsedFile::readStringValue() {
 	if (auto stringToken = file_.getToken(BasicType::String)) {
-		return { { structure::TypeTag::String }, stringToken.value };
+		auto value = tokenValue(stringToken);
+		if (validateAnsiString(value)) {
+			return { structure::TypeTag::String, stringToken.value.toStdString() };
+		}
+		logError(kErrorBadString) << "unicode symbols are not supported";
 	}
 	return {};
 }
@@ -400,47 +468,92 @@ structure::Value ParsedFile::readColorValue() {
 	if (auto numberSign = file_.getToken(BasicType::Number)) {
 		auto color = file_.getAnyToken();
 		if (color.type == BasicType::Int || color.type == BasicType::Name) {
-			auto chars = tokenValue(color);
+			auto chars = tokenValue(color).toLower();
 			if (isValidColor(chars)) {
-				return { { structure::TypeTag::Color }, chars.toLower() };
+				return { convertWebColor(chars) };
 			}
 		} else {
 			logErrorUnexpectedToken() << "color value in #ccc, #ccca, #cccccc or #ccccccaa format";
 		}
+	} else if (auto rgbaToken = file_.getToken(BasicType::Name)) {
+		if (tokenValue(rgbaToken) == "rgba") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto r = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto g = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto b = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto a = readNumericValue();
+			if (r.type().tag != structure::TypeTag::Int || r.Int() < 0 || r.Int() > 255 ||
+				g.type().tag != structure::TypeTag::Int || g.Int() < 0 || g.Int() > 255 ||
+				b.type().tag != structure::TypeTag::Int || b.Int() < 0 || b.Int() > 255 ||
+				a.type().tag != structure::TypeTag::Int || a.Int() < 0 || a.Int() > 255) {
+				logErrorTypeMismatch() << "expected four 0-255 values for the rgba color";
+			}
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			return { convertIntColor(r.Int(), g.Int(), b.Int(), a.Int()) };
+		} else if (tokenValue(rgbaToken) == "rgb") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto r = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto g = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto b = readNumericValue();
+			if (r.type().tag != structure::TypeTag::Int || r.Int() < 0 || r.Int() > 255 ||
+				g.type().tag != structure::TypeTag::Int || g.Int() < 0 || g.Int() > 255 ||
+				b.type().tag != structure::TypeTag::Int || b.Int() < 0 || b.Int() > 255) {
+				logErrorTypeMismatch() << "expected three int values for the rgb color";
+			}
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			return { convertIntColor(r.Int(), g.Int(), b.Int(), 255) };
+		}
+		file_.putBack();
 	}
 	return {};
 }
 
 structure::Value ParsedFile::readPointValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "point") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto x = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto y = readNumericValue();
+			if (x.type().tag != structure::TypeTag::Pixels ||
+				y.type().tag != structure::TypeTag::Pixels) {
+				logErrorTypeMismatch() << "expected two px values for the point";
+			}
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			return { structure::data::point { x.Int(), y.Int() } };
+		}
+		file_.putBack();
+	}
 	return {};
 }
 
 structure::Value ParsedFile::readSpriteValue() {
 	if (auto font = file_.getToken(BasicType::Name)) {
 		if (tokenValue(font) == "sprite") {
-			if (!file_.getToken(BasicType::LeftParenthesis)) {
-				logErrorUnexpectedToken() << "'(' and sprite definition";
-				return {};
-			}
+			assertNextToken(BasicType::LeftParenthesis);
 
-			auto x = readNumericValue(); file_.getToken(BasicType::Comma);
-			auto y = readNumericValue(); file_.getToken(BasicType::Comma);
-			auto w = readNumericValue(); file_.getToken(BasicType::Comma);
+			auto x = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto y = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto w = readNumericValue(); assertNextToken(BasicType::Comma);
 			auto h = readNumericValue();
-			if (x.type.tag != structure::TypeTag::Pixels ||
-				y.type.tag != structure::TypeTag::Pixels ||
-				w.type.tag != structure::TypeTag::Pixels ||
-				h.type.tag != structure::TypeTag::Pixels) {
-				logErrorTypeMismatch() << "px rect for the sprite expected";
-				return {};
+			if (x.type().tag != structure::TypeTag::Pixels ||
+				y.type().tag != structure::TypeTag::Pixels ||
+				w.type().tag != structure::TypeTag::Pixels ||
+				h.type().tag != structure::TypeTag::Pixels) {
+				logErrorTypeMismatch() << "expected four px values for the sprite";
 			}
 
-			if (!file_.getToken(BasicType::RightParenthesis)) {
-				logErrorUnexpectedToken() << "')'";
-				return {};
-			}
+			assertNextToken(BasicType::RightParenthesis);
 
-			return { { structure::TypeTag::Sprite }, x.data + ',' + y.data + ',' + w.data + ',' + h.data };
+			return { structure::data::sprite { x.Int(), y.Int(), w.Int(), h.Int() } };
 		}
 		file_.putBack();
 	}
@@ -448,43 +561,138 @@ structure::Value ParsedFile::readSpriteValue() {
 }
 
 structure::Value ParsedFile::readSizeValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "size") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto w = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto h = readNumericValue();
+			if (w.type().tag != structure::TypeTag::Pixels ||
+				h.type().tag != structure::TypeTag::Pixels) {
+				logErrorTypeMismatch() << "expected two px values for the size";
+			}
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			return { structure::data::size { w.Int(), h.Int() } };
+		}
+		file_.putBack();
+	}
 	return {};
 }
 
 structure::Value ParsedFile::readTransitionValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "transition") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto transition = tokenValue(assertNextToken(BasicType::Name));
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			if (validateTransitionString(transition)) {
+				return { structure::TypeTag::Transition, transition.toStdString() };
+			} else {
+				logError(kErrorBadString) << "bad transition value";
+			}
+		}
+		file_.putBack();
+	}
 	return {};
 }
 
 structure::Value ParsedFile::readCursorValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "cursor") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto cursor = tokenValue(assertNextToken(BasicType::Name));
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			if (validateCursorString(cursor)) {
+				return { structure::TypeTag::Cursor, cursor.toStdString() };
+			} else {
+				logError(kErrorBadString) << "bad cursor string";
+			}
+		}
+		file_.putBack();
+	}
 	return {};
 }
 
 structure::Value ParsedFile::readAlignValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "align") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto align = tokenValue(assertNextToken(BasicType::Name));
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			if (validateAlignString(align)) {
+				return { structure::TypeTag::Align, align.toStdString() };
+			} else {
+				logError(kErrorBadString) << "bad align string";
+			}
+		}
+		file_.putBack();
+	}
 	return {};
 }
 
 structure::Value ParsedFile::readMarginsValue() {
+	if (auto font = file_.getToken(BasicType::Name)) {
+		if (tokenValue(font) == "margins") {
+			assertNextToken(BasicType::LeftParenthesis);
+
+			auto l = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto t = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto r = readNumericValue(); assertNextToken(BasicType::Comma);
+			auto b = readNumericValue();
+			if (l.type().tag != structure::TypeTag::Pixels ||
+				t.type().tag != structure::TypeTag::Pixels ||
+				r.type().tag != structure::TypeTag::Pixels ||
+				b.type().tag != structure::TypeTag::Pixels) {
+				logErrorTypeMismatch() << "expected four px values for the margins";
+			}
+
+			assertNextToken(BasicType::RightParenthesis);
+
+			return { structure::data::margins { l.Int(), t.Int(), r.Int(), b.Int() } };
+		}
+		file_.putBack();
+	}
 	return {};
 }
 
 structure::Value ParsedFile::readFontValue() {
 	if (auto font = file_.getToken(BasicType::Name)) {
 		if (tokenValue(font) == "font") {
-			if (!file_.getToken(BasicType::LeftParenthesis)) {
-				logErrorUnexpectedToken() << "'(' and font definition";
-				return {};
-			}
+			assertNextToken(BasicType::LeftParenthesis);
 
+			int flags = 0;
 			structure::Value family, size;
 			do {
+				if (auto formatToken = file_.getToken(BasicType::Name)) {
+					if (tokenValue(formatToken) == "bold") {
+						flags |= structure::data::font::Bold;
+					} else if (tokenValue(formatToken) == "italic") {
+						flags |= structure::data::font::Italic;
+					} else if (tokenValue(formatToken) == "underline") {
+						flags |= structure::data::font::Underline;
+					} else {
+						file_.putBack();
+					}
+				}
 				if (auto familyValue = readStringValue()) {
 					family = familyValue;
 				} else if (auto sizeValue = readNumericValue()) {
 					size = sizeValue;
 				} else if (auto copyValue = readCopyValue()) {
-					if (copyValue.type.tag == structure::TypeTag::String) {
+					if (copyValue.type().tag == structure::TypeTag::String) {
 						family = copyValue;
-					} else if (copyValue.type.tag == structure::TypeTag::Pixels) {
+					} else if (copyValue.type().tag == structure::TypeTag::Pixels) {
 						size = copyValue;
 					} else {
 						logErrorUnexpectedToken() << "font family, font size or ')'";
@@ -496,10 +704,10 @@ structure::Value ParsedFile::readFontValue() {
 				}
 			} while (!failed());
 
-			if (size.type.tag != structure::TypeTag::Pixels) {
+			if (size.type().tag != structure::TypeTag::Pixels) {
 				logErrorTypeMismatch() << "px value for the font size expected";
 			}
-			return { { structure::TypeTag::Font }, size.data + ',' + family.data };
+			return { structure::data::font { family.String(), size.Int(), flags } };
 		}
 		file_.putBack();
 	}
@@ -509,18 +717,64 @@ structure::Value ParsedFile::readFontValue() {
 structure::Value ParsedFile::readCopyValue() {
 	if (auto copyName = file_.getToken(BasicType::Name)) {
 		structure::FullName name = { tokenValue(copyName) };
-		for (const auto &variable : result_.variables) {
-			if (variable.name == name) {
-				auto result = variable.value;
-				result.copy = variable.name;
-				return result;
-			}
+		if (auto variable = findVariable(name)) {
+			return variable->value.makeCopy(variable->name);
 		}
 		logError(kErrorIdentifierNotFound) << "identifier '" << logFullName(name) << "' not found";
 	}
 	return {};
 }
 
+// Returns nullptr if there is no such struct in result_ or any of included modules.
+const structure::Struct *ParsedFile::findStruct(const structure::FullName &name) {
+	if (auto result = findStructInModule(name, result_)) {
+		return result;
+	}
+	for (const auto &included : result_.includes) {
+		if (auto result = findStructInModule(name, included)) {
+			return result;
+		}
+	}
+	return nullptr;
+}
+
+const structure::Struct *ParsedFile::findStructInModule(const structure::FullName &name, const structure::Module &module) {
+	auto index = module.structsByName.value(fullNameKey(name), -1);
+	if (index < 0) {
+		return nullptr;
+	}
+	return &module.structs.at(index);
+}
+
+// Returns nullptr if there is no such variable in result_ or any of included modules.
+const structure::Variable *ParsedFile::findVariable(const structure::FullName &name) {
+	if (auto result = findVariableInModule(name, result_)) {
+		return result;
+	}
+	for (const auto &included : result_.includes) {
+		if (auto result = findVariableInModule(name, included)) {
+			return result;
+		}
+	}
+	return nullptr;
+}
+
+const structure::Variable *ParsedFile::findVariableInModule(const structure::FullName &name, const structure::Module &module) {
+	auto index = module.variablesByName.value(fullNameKey(name), -1);
+	if (index < 0) {
+		return nullptr;
+	}
+	return &module.variables.at(index);
+}
+
+BasicToken ParsedFile::assertNextToken(BasicToken::Type type) {
+	auto result = file_.getToken(type);
+	if (!result) {
+		logErrorUnexpectedToken() << type;
+	}
+	return result;
+}
+
 Options ParsedFile::includedOptions(const QString &filepath) {
 	auto result = options_;
 	result.inputPath = filepath;
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.h b/Telegram/SourceFiles/codegen/style/parsed_file.h
index a41efe946..6106d728a 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.h
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.h
@@ -78,6 +78,7 @@ private:
 	structure::Value defaultConstructedStruct(const structure::FullName &name);
 	void applyStructParent(structure::Value &result, const structure::FullName &parentName);
 	bool readStructValueInner(structure::Value &result);
+	bool assignStructField(structure::Value &result, const structure::Variable &field);
 	bool readStructParents(structure::Value &result);
 
 	// Simple methods for reading value types.
@@ -95,6 +96,18 @@ private:
 	structure::Value readFontValue();
 	structure::Value readCopyValue();
 
+	// Returns nullptr if there is no such struct in result_ or any of included modules.
+	const structure::Struct *findStruct(const structure::FullName &name);
+	const structure::Struct *findStructInModule(const structure::FullName &name, const structure::Module &module);
+
+	// Returns nullptr if there is no such variable in result_ or any of included modules.
+	const structure::Variable *findVariable(const structure::FullName &name);
+	const structure::Variable *findVariableInModule(const structure::FullName &name, const structure::Module &module);
+
+	// Read next token and fire unexpected token error if it is not of "type".
+	using BasicToken = common::BasicTokenizedFile::Token;
+	BasicToken assertNextToken(BasicToken::Type type);
+
 	// Look through include directories in options_ and find absolute include path.
 	Options includedOptions(const QString &filepath);
 
diff --git a/Telegram/SourceFiles/codegen/style/structure.h b/Telegram/SourceFiles/codegen/style/structure.h
index c4f7b68c2..8f29350b4 100644
--- a/Telegram/SourceFiles/codegen/style/structure.h
+++ b/Telegram/SourceFiles/codegen/style/structure.h
@@ -21,60 +21,14 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #pragma once
 
 #include <QtCore/QString>
-#include <QtCore/QStringList>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include "codegen/style/structure_types.h"
 
 namespace codegen {
 namespace style {
 namespace structure {
 
-// List of names, like overview.document.bg
-using FullName = QStringList;
-
-enum class TypeTag {
-	Invalid,
-	Int,
-	Double,
-	Pixels,
-	String,
-	Color,
-	Point,
-	Sprite,
-	Size,
-	Transition,
-	Cursor,
-	Align,
-	Margins,
-	Font,
-	Struct,
-};
-
-struct Type {
-	TypeTag tag;
-	FullName name; // only for type == ClassType::Struct
-
-	explicit operator bool() const {
-		return (tag != TypeTag::Invalid);
-	}
-};
-inline bool operator==(const Type &a, const Type &b) {
-	return (a.tag == b.tag) && (a.name == b.name);
-}
-inline bool operator!=(const Type &a, const Type &b) {
-	return !(a == b);
-}
-
-struct Variable;
-struct Value {
-	Type type;
-	QString data; // for plain types
-	QList<Variable> fields; // for struct types
-	FullName copy; // for copies of existing named values
-
-	explicit operator bool() const {
-		return !data.isEmpty() || !fields.isEmpty() || !copy.isEmpty();
-	}
-};
-
 struct Variable {
 	FullName name;
 	Value value;
@@ -107,6 +61,8 @@ struct Module {
 	QList<Module> includes;
 	QList<Struct> structs;
 	QList<Variable> variables;
+	QMap<QString, int> structsByName;
+	QMap<QString, int> variablesByName;
 
 	explicit operator bool() const {
 		return !fullpath.isEmpty();
diff --git a/Telegram/SourceFiles/codegen/style/structure_types.cpp b/Telegram/SourceFiles/codegen/style/structure_types.cpp
new file mode 100644
index 000000000..15a973efd
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/structure_types.cpp
@@ -0,0 +1,204 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/structure_types.h"
+
+#include "codegen/style/structure.h"
+
+namespace codegen {
+namespace style {
+namespace structure {
+
+struct Value::DataTypes {
+	class TInt : public DataBase {
+	public:
+		TInt(int value) : value_(value) {
+		}
+		int Int() const override { return value_; }
+
+	private:
+		int value_;
+
+	};
+	class TDouble : public DataBase {
+	public:
+		TDouble(double value) : value_(value) {
+		}
+		double Double() const override { return value_; }
+
+	private:
+		double value_;
+
+	};
+	class TString : public DataBase {
+	public:
+		TString(std::string value) : value_(value) {
+		}
+		std::string String() const override { return value_; }
+
+	private:
+		std::string value_;
+
+	};
+	class TPoint : public DataBase {
+	public:
+		TPoint(data::point value) : value_(value) {
+		}
+		data::point Point() const override { return value_; }
+
+	private:
+		data::point value_;
+
+	};
+	class TSprite : public DataBase {
+	public:
+		TSprite(data::sprite value) : value_(value) {
+		}
+		data::sprite Sprite() const override { return value_; }
+
+	private:
+		data::sprite value_;
+
+	};
+	class TSize : public DataBase {
+	public:
+		TSize(data::size value) : value_(value) {
+		}
+		data::size Size() const override { return value_; }
+
+	private:
+		data::size value_;
+
+	};
+	class TColor : public DataBase {
+	public:
+		TColor(data::color value) : value_(value) {
+		}
+		data::color Color() const override { return value_; }
+
+	private:
+		data::color value_;
+
+	};
+	class TMargins : public DataBase {
+	public:
+		TMargins(data::margins value) : value_(value) {
+		}
+		data::margins Margins() const override { return value_; }
+
+	private:
+		data::margins value_;
+
+	};
+	class TFont : public DataBase {
+	public:
+		TFont(data::font value) : value_(value) {
+		}
+		data::font Font() const override { return value_; }
+
+	private:
+		data::font value_;
+
+	};
+	class TComplex : public DataBase {
+	public:
+		TComplex(data::complex value) : value_(value) {
+		}
+		const data::complex *Complex() const override { return &value_; }
+		data::complex *Complex() override { return &value_; }
+
+	private:
+		data::complex value_;
+
+	};
+};
+
+Value::Value() : Value(TypeTag::Invalid, std::make_shared<DataBase>()) {
+}
+
+Value::Value(double value) : Value(TypeTag::Double, std::make_shared<DataTypes::TDouble>(value)) {
+}
+
+Value::Value(data::point value) : Value(TypeTag::Point, std::make_shared<DataTypes::TPoint>(value)) {
+}
+
+Value::Value(data::sprite value) : Value(TypeTag::Sprite, std::make_shared<DataTypes::TSprite>(value)) {
+}
+
+Value::Value(data::size value) : Value(TypeTag::Size, std::make_shared<DataTypes::TSize>(value)) {
+}
+
+Value::Value(data::color value) : Value(TypeTag::Color, std::make_shared<DataTypes::TColor>(value)) {
+}
+
+Value::Value(data::margins value) : Value(TypeTag::Margins, std::make_shared<DataTypes::TMargins>(value)) {
+}
+
+Value::Value(data::font value) : Value(TypeTag::Font, std::make_shared<DataTypes::TFont>(value)) {
+}
+
+Value::Value(const FullName &type, data::complex value)
+: type_ { TypeTag::Struct, type }
+, data_(std::make_shared<DataTypes::TComplex>(value)) {
+}
+
+Value::Value(TypeTag type, int value) : Value(type, std::make_shared<DataTypes::TInt>(value)) {
+	if (type_.tag != TypeTag::Int && type_.tag != TypeTag::Pixels) {
+		type_.tag = TypeTag::Invalid;
+		data_ = std::make_shared<DataBase>();
+	}
+}
+
+Value::Value(TypeTag type, std::string value) : Value(type, std::make_shared<DataTypes::TString>(value)) {
+	if (type_.tag != TypeTag::String &&
+		type_.tag != TypeTag::Transition &&
+		type_.tag != TypeTag::Cursor &&
+		type_.tag != TypeTag::Align) {
+		type_.tag = TypeTag::Invalid;
+		data_ = std::make_shared<DataBase>();
+	}
+}
+
+Value::Value(Type type, Qt::Initialization) : type_(type) {
+	switch (type_.tag) {
+	case TypeTag::Invalid: data_ = std::make_shared<DataBase>(); break;
+	case TypeTag::Int: data_ = std::make_shared<DataTypes::TInt>(0); break;
+	case TypeTag::Double: data_ = std::make_shared<DataTypes::TDouble>(0.); break;
+	case TypeTag::Pixels: data_ = std::make_shared<DataTypes::TInt>(0); break;
+	case TypeTag::String: data_ = std::make_shared<DataTypes::TString>(""); break;
+	case TypeTag::Color: data_ = std::make_shared<DataTypes::TColor>(data::color { 0, 0, 0, 255 }); break;
+	case TypeTag::Point: data_ = std::make_shared<DataTypes::TPoint>(data::point { 0, 0 }); break;
+	case TypeTag::Sprite: data_ = std::make_shared<DataTypes::TSprite>(data::sprite { 0, 0, 0, 0 }); break;
+	case TypeTag::Size: data_ = std::make_shared<DataTypes::TSize>(data::size { 0, 0 }); break;
+	case TypeTag::Transition: data_ = std::make_shared<DataTypes::TString>("linear"); break;
+	case TypeTag::Cursor: data_ = std::make_shared<DataTypes::TString>("default"); break;
+	case TypeTag::Align: data_ = std::make_shared<DataTypes::TString>("left"); break;
+	case TypeTag::Margins: data_ = std::make_shared<DataTypes::TMargins>(data::margins { 0, 0, 0, 0 }); break;
+	case TypeTag::Font: data_ = std::make_shared<DataTypes::TFont>(data::font { "", 13, 0 }); break;
+	case TypeTag::Struct: data_ = std::make_shared<DataTypes::TComplex>(data::complex {}); break;
+	}
+}
+
+Value::Value(TypeTag type, std::shared_ptr<DataBase> &&data) : type_ { type }, data_(std::move(data)) {
+}
+
+} // namespace structure
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/structure_types.h b/Telegram/SourceFiles/codegen/style/structure_types.h
new file mode 100644
index 000000000..2e2703b3c
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/structure_types.h
@@ -0,0 +1,174 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+
+namespace codegen {
+namespace style {
+namespace structure {
+
+// List of names, like overview.document.bg
+using FullName = QStringList;
+
+struct Variable;
+
+enum class TypeTag {
+	Invalid,
+	Int,
+	Double,
+	Pixels,
+	String,
+	Color,
+	Point,
+	Sprite,
+	Size,
+	Transition,
+	Cursor,
+	Align,
+	Margins,
+	Font,
+	Struct,
+};
+
+struct Type {
+	TypeTag tag;
+	FullName name; // only for type == ClassType::Struct
+
+	explicit operator bool() const {
+		return (tag != TypeTag::Invalid);
+	}
+};
+inline bool operator==(const Type &a, const Type &b) {
+	return (a.tag == b.tag) && (a.name == b.name);
+}
+inline bool operator!=(const Type &a, const Type &b) {
+	return !(a == b);
+}
+
+namespace data {
+
+struct point {
+	int x, y;
+};
+struct sprite {
+	int left, top, width, height;
+};
+struct size {
+	int width, height;
+};
+struct color {
+	uchar red, green, blue, alpha;
+};
+struct margins {
+	int left, top, right, bottom;
+};
+struct font {
+	enum Flag {
+		Bold = 0x01,
+		Italic = 0x02,
+		Underline = 0x04,
+	};
+	std::string family;
+	int size;
+	int flags;
+};
+using complex = QList<Variable>;
+
+} // namespace data
+
+class Value {
+public:
+	Value();
+	Value(double value);
+	Value(data::point value);
+	Value(data::sprite value);
+	Value(data::size value);
+	Value(data::color value);
+	Value(data::margins value);
+	Value(data::font value);
+	Value(const FullName &type, data::complex value);
+
+	// Can be int / pixels.
+	Value(TypeTag type, int value);
+
+	// Can be string / transition / cursor / align.
+	Value(TypeTag type, std::string value);
+
+	// Default constructed value (uninitialized).
+	Value(Type type, Qt::Initialization);
+
+	Type type() const { return type_; }
+	int Int() const { return data_->Int(); }
+	double Double() const { return data_->Double(); }
+	std::string String() const { return data_->String(); }
+	data::point Point() const { return data_->Point(); }
+	data::sprite Sprite() const { return data_->Sprite(); };
+	data::size Size() const { return data_->Size(); };
+	data::color Color() const { return data_->Color(); };
+	data::margins Margins() const { return data_->Margins(); };
+	data::font Font() const { return data_->Font(); };
+	const data::complex *Complex() const { return data_->Complex(); };
+	data::complex *Complex() { return data_->Complex(); };
+
+	explicit operator bool() const {
+		return type_.tag != TypeTag::Invalid;
+	}
+
+	Value makeCopy(const FullName &copyOf) const {
+		Value result(*this);
+		result.copyOf_ = copyOf;
+		return result;
+	}
+
+private:
+	class DataBase {
+	public:
+		virtual int Int() const { return 0; }
+		virtual double Double() const { return 0.; }
+		virtual std::string String() const { return std::string(); }
+		virtual data::point Point() const { return {}; };
+		virtual data::sprite Sprite() const { return {}; };
+		virtual data::size Size() const { return {}; };
+		virtual data::color Color() const { return {}; };
+		virtual data::margins Margins() const { return {}; };
+		virtual data::font Font() const { return {}; };
+		virtual const data::complex *Complex() const { return nullptr; };
+		virtual data::complex *Complex() { return nullptr; };
+		virtual ~DataBase() {
+		}
+	};
+	struct DataTypes;
+
+	Value(TypeTag type, std::shared_ptr<DataBase> &&data);
+
+	Type type_;
+	std::shared_ptr<DataBase> data_;
+
+	FullName copyOf_; // for copies of existing named values
+
+};
+
+} // namespace structure
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/pspecific_mac_p.mm b/Telegram/SourceFiles/pspecific_mac_p.mm
index 392acfd00..574e01779 100644
--- a/Telegram/SourceFiles/pspecific_mac_p.mm
+++ b/Telegram/SourceFiles/pspecific_mac_p.mm
@@ -794,7 +794,7 @@ void objc_openFile(const QString &f, bool openwith) {
 
             NSOpenPanel *openPanel = [NSOpenPanel openPanel];
 
-			NSRect fullRect = { { 0., 0. }, { st::macAccessory.width() * 1., st::macAccessory.height() * 1. } };
+			NSRect fullRect = { { 0., 0. }, { st::macAccessoryWidth, st::macAccessoryHeight } };
 			NSView *accessory = [[NSView alloc] initWithFrame:fullRect];
 
             [accessory setAutoresizesSubviews:YES];
@@ -861,7 +861,7 @@ void objc_openFile(const QString &f, bool openwith) {
             NSImageView *badIcon = [[NSImageView alloc] init];
             NSImage *badImage = [NSImage imageNamed:NSImageNameCaution];
             [badIcon setImage:badImage];
-            [badIcon setFrame:NSMakeRect(0, 0, st::macCautionIconSize.width(), st::macCautionIconSize.height())];
+            [badIcon setFrame:NSMakeRect(0, 0, st::macCautionIconSize, st::macCautionIconSize)];
 
             NSRect badFrame = [badLabel frame], badIconFrame = [badIcon frame];
             badFrame.origin.x = (fullRect.size.width - badFrame.size.width + badIconFrame.size.width) / 2.;
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
index 848016fb3..29b8674b4 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
@@ -19,6 +19,7 @@
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\options.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\parsed_file.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\main.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\structure_types.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.h" />
@@ -31,6 +32,7 @@
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\options.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\parsed_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure_types.h" />
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{E4DF8176-4DEF-4859-962F-B497E3E7A323}</ProjectGuid>
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
index 9c64d8737..20abd6169 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
@@ -37,6 +37,9 @@
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\parsed_file.cpp">
       <Filter>src\style</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\structure_types.cpp">
+      <Filter>src\style</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\generator.h">
@@ -69,5 +72,8 @@
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\parsed_file.h">
       <Filter>src\style</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure_types.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file

From 4fe70c3a12ded58216572006ec84798845a65eef Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Mon, 18 Apr 2016 23:33:43 +0300
Subject: [PATCH 05/12] codegen_style completely replaces style gen with
 MetaStyle. codegen_numbers project started to replace MetaStyle completely.

---
 Telegram.sln                                  |   14 +
 Telegram/Resources/all_files.style            |    4 +-
 Telegram/Resources/basic.style                | 2525 +++++++++++++++++
 Telegram/Resources/basic_types.style          |  413 +++
 Telegram/Resources/style.txt                  |   36 +-
 Telegram/Resources/style_classes.txt          |  192 +-
 Telegram/SourceFiles/app.cpp                  |   23 +-
 .../codegen/common/basic_tokenized_file.h     |    2 +-
 .../codegen/common/checked_utf8_string.h      |    6 +-
 .../SourceFiles/codegen/common/clean_file.h   |    2 +-
 .../codegen/common/const_utf8_string.h        |    2 +-
 .../SourceFiles/codegen/common/cpp_file.cpp   |  135 +
 .../SourceFiles/codegen/common/cpp_file.h     |   70 +
 .../SourceFiles/codegen/numbers/generator.cpp |   54 +
 .../SourceFiles/codegen/numbers/generator.h   |   50 +
 Telegram/SourceFiles/codegen/numbers/main.cpp |   36 +
 .../SourceFiles/codegen/numbers/options.cpp   |   74 +
 .../SourceFiles/codegen/numbers/options.h     |   38 +
 .../codegen/numbers/parsed_file.cpp           |   66 +
 .../SourceFiles/codegen/numbers/parsed_file.h |   74 +
 .../SourceFiles/codegen/numbers/processor.cpp |   86 +
 .../SourceFiles/codegen/numbers/processor.h   |   53 +
 .../SourceFiles/codegen/style/generator.cpp   |  534 +++-
 .../SourceFiles/codegen/style/generator.h     |   47 +-
 Telegram/SourceFiles/codegen/style/main.cpp   |   11 +-
 Telegram/SourceFiles/codegen/style/module.cpp |  101 +
 Telegram/SourceFiles/codegen/style/module.h   |  112 +
 .../SourceFiles/codegen/style/parsed_file.cpp |  149 +-
 .../SourceFiles/codegen/style/parsed_file.h   |   21 +-
 .../SourceFiles/codegen/style/processor.cpp   |  103 +
 .../SourceFiles/codegen/style/processor.h     |   60 +
 .../codegen/style/sprite_generator.cpp        |  180 ++
 .../style/{structure.h => sprite_generator.h} |   68 +-
 .../codegen/style/structure_types.cpp         |   30 +-
 .../codegen/style/structure_types.h           |   71 +-
 Telegram/SourceFiles/core/basic_types.h       |    5 +-
 Telegram/SourceFiles/dropdown.cpp             |    2 +-
 Telegram/SourceFiles/ui/flatbutton.cpp        |    2 +-
 Telegram/SourceFiles/ui/flatcheckbox.cpp      |    4 +-
 Telegram/SourceFiles/ui/style.h               |    4 +-
 Telegram/SourceFiles/ui/style_core.cpp        |  149 +-
 Telegram/SourceFiles/ui/style_core.h          |   77 +-
 Telegram/Telegram.vcxproj                     |   30 +-
 Telegram/Telegram.vcxproj.filters             |   21 +
 .../codegen_numbers/codegen_numbers.vcxproj   |  120 +
 .../codegen_numbers.vcxproj.filters           |   82 +
 .../vc/codegen_style/codegen_style.targets    |    2 +-
 .../vc/codegen_style/codegen_style.vcxproj    |   15 +-
 .../codegen_style.vcxproj.filters             |   39 +-
 49 files changed, 5535 insertions(+), 459 deletions(-)
 create mode 100644 Telegram/Resources/basic.style
 create mode 100644 Telegram/Resources/basic_types.style
 create mode 100644 Telegram/SourceFiles/codegen/common/cpp_file.cpp
 create mode 100644 Telegram/SourceFiles/codegen/common/cpp_file.h
 create mode 100644 Telegram/SourceFiles/codegen/numbers/generator.cpp
 create mode 100644 Telegram/SourceFiles/codegen/numbers/generator.h
 create mode 100644 Telegram/SourceFiles/codegen/numbers/main.cpp
 create mode 100644 Telegram/SourceFiles/codegen/numbers/options.cpp
 create mode 100644 Telegram/SourceFiles/codegen/numbers/options.h
 create mode 100644 Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
 create mode 100644 Telegram/SourceFiles/codegen/numbers/parsed_file.h
 create mode 100644 Telegram/SourceFiles/codegen/numbers/processor.cpp
 create mode 100644 Telegram/SourceFiles/codegen/numbers/processor.h
 create mode 100644 Telegram/SourceFiles/codegen/style/module.cpp
 create mode 100644 Telegram/SourceFiles/codegen/style/module.h
 create mode 100644 Telegram/SourceFiles/codegen/style/processor.cpp
 create mode 100644 Telegram/SourceFiles/codegen/style/processor.h
 create mode 100644 Telegram/SourceFiles/codegen/style/sprite_generator.cpp
 rename Telegram/SourceFiles/codegen/style/{structure.h => sprite_generator.h} (62%)
 create mode 100644 Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj
 create mode 100644 Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj.filters

diff --git a/Telegram.sln b/Telegram.sln
index fe3eed1b1..b474402bc 100644
--- a/Telegram.sln
+++ b/Telegram.sln
@@ -9,6 +9,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Telegram", "Telegram\Telegr
 		{E4DF8176-4DEF-4859-962F-B497E3E7A323} = {E4DF8176-4DEF-4859-962F-B497E3E7A323}
 		{E417CAA4-259B-4C99-88E3-805F1300E8EB} = {E417CAA4-259B-4C99-88E3-805F1300E8EB}
 		{EB7D16AC-EACF-4577-B05A-F28E5F356794} = {EB7D16AC-EACF-4577-B05A-F28E5F356794}
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6} = {7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MetaStyle", "Telegram\MetaStyle.vcxproj", "{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}"
@@ -25,6 +26,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Packer", "Telegram\Packer.v
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "codegen_style", "Telegram\build\vc\codegen_style\codegen_style.vcxproj", "{E4DF8176-4DEF-4859-962F-B497E3E7A323}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "codegen_numbers", "Telegram\build\vc\codegen_numbers\codegen_numbers.vcxproj", "{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
@@ -95,11 +98,22 @@ Global
 		{E4DF8176-4DEF-4859-962F-B497E3E7A323}.Release|Win32.ActiveCfg = Release|Win32
 		{E4DF8176-4DEF-4859-962F-B497E3E7A323}.Release|Win32.Build.0 = Release|Win32
 		{E4DF8176-4DEF-4859-962F-B497E3E7A323}.Release|x64.ActiveCfg = Release|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Debug|Win32.Build.0 = Debug|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Debug|x64.ActiveCfg = Debug|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Deploy|Win32.ActiveCfg = Debug|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Deploy|Win32.Build.0 = Debug|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Deploy|x64.ActiveCfg = Release|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Deploy|x64.Build.0 = Release|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Release|Win32.ActiveCfg = Release|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Release|Win32.Build.0 = Release|Win32
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}.Release|x64.ActiveCfg = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
 	GlobalSection(NestedProjects) = preSolution
 		{E4DF8176-4DEF-4859-962F-B497E3E7A323} = {2F863EAD-33C9-4014-A573-93F085BA9CB1}
+		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6} = {2F863EAD-33C9-4014-A573-93F085BA9CB1}
 	EndGlobalSection
 EndGlobal
diff --git a/Telegram/Resources/all_files.style b/Telegram/Resources/all_files.style
index 09d45ede9..8737bca36 100644
--- a/Telegram/Resources/all_files.style
+++ b/Telegram/Resources/all_files.style
@@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 
 // Legacy styles
-using "Resources/style_classes.txt";
-using "Resources/style.txt";
+using "Resources/basic_types.style";
+using "Resources/basic.style";
 
 //using "overview/overview.style";
diff --git a/Telegram/Resources/basic.style b/Telegram/Resources/basic.style
new file mode 100644
index 000000000..92ed45667
--- /dev/null
+++ b/Telegram/Resources/basic.style
@@ -0,0 +1,2525 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+using "Resources/basic_types.style";
+
+semibold: "Open Sans Semibold";
+
+fsize: 13px;
+normalFont: font(fsize);
+semiboldFont: font(fsize semibold);
+
+emojiImgSize: 18px; // exceptional value for retina
+emojiSize: 18px;
+emojiPadding: 0px;
+
+counterBG: #f23c34;
+counterMuteBG: #888;
+counterColor: #fff;
+counterMacInvColor: #ffffff01;
+
+lineWidth: 1px;
+
+transparent: #fff0;
+white: #fff;
+black: #000;
+
+color1: #c03d33; // red
+color2: #4fad2d; // green
+color3: #d09306; // yellow
+color4: #348cd4; // blue
+color5: #8544d6; // purple
+color6: #cd4073; // pink
+color7: #2996ad; // sea
+color8: #ce671b; // orange
+
+wndMinWidth: 380px;
+
+adaptiveNormalWidth: 640px;
+adaptiveWideWidth: 1366px;
+
+wndMinHeight: 480px;
+wndDefWidth: 800px;
+wndDefHeight: 600px;
+wndBG: white;
+wndShadow: sprite(209px, 46px, 19px, 19px);
+wndShadowShift: 1px;
+
+layerAlpha: 0.5;
+layerBg: black;
+
+overBg: #edf2f5;
+
+labelDefFlat: flatLabel {
+	font: font(fsize);
+	minWidth: 100px;
+	width: 0px;
+	align: align(left);
+}
+
+boxBg: white;
+boxVerticalMargin: 10px;
+boxWidth: 320px;
+boxWideWidth: 364px;
+boxPadding: margins(26px, 30px, 34px, 8px);
+boxMaxListHeight: 600px;
+boxFontSize: 14px;
+boxTextFont: font(boxFontSize);
+boxLittleSkip: 10px;
+boxMediumSkip: 20px;
+
+boxTitleFg: #444444;
+boxTitleFont: font(boxFontSize bold);
+boxTitlePosition: point(26px, 28px);
+boxTitleHeight: 54px;
+
+boxBlueTitleBg: #6393b5;
+boxBlueTitleAdditionalFg: #dae9f5;
+boxBlueTitleAdditionalSkip: 12px;
+boxBlueTitlePosition: point(23px, 18px);
+boxBlueCloseIcon: sprite(120px, 108px, 12px, 12px);
+boxBlueCloseBg: #c8e1f0;
+boxBlueCloseDuration: 150;
+boxBlueShadow: sprite(132px, 108px, 1px, 4px);
+
+boxButtonFont: font(boxFontSize semibold);
+defaultBoxButton: BoxButton {
+	textFg: #2f9fea;
+	textFgOver: #2f9fea;
+	textBg: white;
+	textBgOver: #edf7ff;
+
+	width: -24px;
+	height: 36px;
+
+	textTop: 8px;
+
+	font: boxButtonFont;
+	duration: 200;
+}
+cancelBoxButton: BoxButton(defaultBoxButton) {
+	textFg: #aeaeae;
+}
+attentionBoxButton: BoxButton(defaultBoxButton) {
+	textFg: #ea4b2f;
+	textFgOver: #ea4b2f;
+	textBgOver: #fff0ed;
+}
+boxButtonPadding: margins(12px, 16px, 22px, 16px);
+defaultBoxLinkButton: linkButton {
+	color: #0080c0;
+	overColor: #0080c0;
+	downColor: #0073ad;
+	font: boxTextFont;
+	overFont: font(boxFontSize underline);
+}
+redBoxLinkButton: linkButton(defaultBoxLinkButton) {
+	color: #d15948;
+	overColor: #d15948;
+	downColor: #db6352;
+}
+boxLabel: flatLabel(labelDefFlat) {
+	font: font(boxFontSize);
+	align: align(topleft);
+}
+
+defaultInputArea: InputArea {
+	textFg: black;
+	textMargins: margins(5px, 6px, 5px, 4px);
+
+	placeholderFg: #999;
+	placeholderFgActive: #aaa;
+	placeholderMargins: margins(2px, 0px, 2px, 0px);
+	placeholderAlign: align(topleft);
+	placeholderShift: 50px;
+	duration: 120;
+
+	borderFg: #e0e0e0;
+	borderFgActive: #62c0f7;
+	borderFgError: #e48383;
+
+	border: 1px;
+	borderActive: 2px;
+	borderError: 2px;
+
+	font: boxTextFont;
+
+	heightMin: 32px;
+	heightMax: 128px;
+}
+defaultInputField: InputField {
+	textFg: black;
+	textMargins: margins(0px, 6px, 0px, 4px);
+	textAlign: align(topleft);
+
+	placeholderFg: #999;
+	placeholderFgActive: #aaa;
+	placeholderMargins: margins(2px, 0px, 2px, 0px);
+	placeholderAlign: align(topleft);
+	placeholderShift: 50px;
+	duration: 120;
+
+	borderFg: #e0e0e0;
+	borderFgActive: #62c0f7;
+	borderFgError: #e48383;
+
+	border: 1px;
+	borderActive: 2px;
+	borderError: 2px;
+
+	font: boxTextFont;
+
+	height: 32px;
+}
+dialogsSearchField: InputField(defaultInputField) {
+	textMargins: margins(34px, 7px, 34px, 7px);
+
+	iconSprite: sprite(227px, 21px, 24px, 24px);
+	iconPosition: point(6px, 5px);
+
+	width: 240px;
+	height: 34px;
+}
+defaultCheckbox: Checkbox {
+	textFg: black;
+	textBg: white;
+
+	checkFg: #d9d9d9;
+	checkFgOver: #bfbfbf;
+	checkFgActive: #4eb3ee;
+
+	width: -46px;
+	height: 22px;
+
+	textPosition: point(34px, 0px);
+	diameter: 22px;
+	thickness: 2px;
+	checkIcon: sprite(106px, 136px, 14px, 10px);
+
+	font: boxTextFont;
+	duration: 120;
+}
+defaultRadiobutton: Radiobutton {
+	textFg: black;
+	textBg: white;
+
+	checkFg: #d9d9d9;
+	checkFgOver: #bfbfbf;
+	checkFgActive: #4eb3ee;
+
+	width: -46px;
+	height: 22px;
+
+	textPosition: point(34px, 0px);
+	diameter: 22px;
+	thickness: 2px;
+	checkSkip: 65px; // * 0.1
+
+	font: boxTextFont;
+	duration: 120;
+}
+solidScroll: flatScroll {
+	barColor: #3f729734;
+	bgColor: #214f751a;
+	barOverColor: #3f729734;
+	bgOverColor: #214f751a;
+
+	round: 0px;
+	minHeight: 20px;
+
+	deltax: 5px;
+	width: 14px;
+	deltat: 6px;
+	deltab: 6px;
+
+	topsh: 0px;
+	bottomsh: 0px;
+	shColor: rgba(0, 0, 0, 18);
+
+	duration: 150;
+	hiding: 0;
+}
+defaultPopupMenu: PopupMenu {
+	skip: 5px;
+
+	shadow: sprite(241px, 46px, 6px, 6px);
+	shadowShift: 1px;
+
+	itemBg: white;
+	itemBgOver: overBg;
+	itemFg: black;
+	itemFgOver: black;
+	itemFgDisabled: #ccc;
+	itemFgShortcut: #999;
+	itemFgShortcutOver: #7c99b2;
+	itemFgShortcutDisabled: #ccc;
+
+	itemPadding: margins(17px, 8px, 17px, 7px);
+	itemFont: normalFont;
+
+	separatorPadding: margins(0px, 5px, 0px, 5px);
+	separatorWidth: 1px;
+	separatorFg: #f1f1f1;
+
+	arrow: sprite(0px, 126px, 4px, 7px);
+
+	duration: 120;
+
+	widthMin: 180px;
+	widthMax: 300px;
+}
+
+defaultTooltip: Tooltip {
+	textBg: #eef2f5;
+	textFg: #5d6c80;
+	textFont: normalFont;
+	textBorder: #c9d1db;
+	textPadding: margins(5px, 2px, 5px, 2px);
+
+	shift: point(-20px, 20px);
+	skip: 10px;
+
+	widthMax: 800px;
+	linesMax: 12;
+}
+
+almostTransparent: #ffffff0d;
+boxScroll: flatScroll(solidScroll) {
+	width: 18px;
+	deltax: 6px;
+}
+boxScrollSkip: 6px;
+boxScrollShadowBg: #00000012;
+
+boxSearchField: InputField(defaultInputField) {
+	textMargins: margins(41px, 16px, 41px, 0px);
+
+	placeholderFg: #999;
+	placeholderFgActive: #aaa;
+	placeholderMargins: margins(4px, 0px, 4px, 0px);
+
+	border: 0px;
+	borderActive: 0px;
+	borderError: 0px;
+
+	height: 48px;
+
+	iconSprite: sprite(227px, 21px, 24px, 24px);
+	iconPosition: point(15px, 14px);
+
+	font: normalFont;
+}
+boxSearchCancel: iconedButton {
+	color: white;
+	bgColor: white;
+	overBgColor: white;
+	font: font(fsize);
+
+	opacity: 0.3;
+	overOpacity: 0.4;
+
+	textPos: point(0px, 0px);
+	downTextPos: point(0px, 0px);
+
+	duration: 150;
+	cursor: cursor(pointer);
+
+	icon: sprite(133px, 108px, 12px, 12px);
+	iconPos: point(8px, 18px);
+	downIcon: sprite(133px, 108px, 12px, 12px);
+	downIconPos: point(8px, 18px);
+
+	width: 41px;
+	height: 48px;
+}
+
+titleBG: #6389a8;
+titleColor: #0f8dcc;//rgb(20, 136, 210);
+titleHeight: 39px;
+titleIconPos: point(7px, 7px);
+titleIconImg: sprite(161px, 100px, 26px, 26px);
+titleFont: font(17px);
+titlePos: point(44px, 29px);
+titleMenuOffset: 36px;
+
+titleRed: #ee4928;
+titleGray: #777;
+titleGreen: #41a903;
+
+titleStatusColor: #999;
+titleTypingColor: #0080c0;
+
+statusFont: font(fsize);
+versionColor: #777;
+
+shadowColor: rgba(0, 0, 0, 24);
+
+slideDuration: 240;
+slideShift: 0.3;
+slideFadeOut: 0.3;
+slideShadow: sprite(348px, 71px, 48px, 1px);
+slideFunction: transition(easeOutCirc);
+
+btnDefIconed: iconedButton {
+	color: white;
+	bgColor: white;
+	overBgColor: white;
+	font: font(fsize);
+
+	opacity: 0.78;
+	overOpacity: 1.;
+
+	textPos: point(0px, 0px);
+	downTextPos: point(0px, 0px);
+
+	duration: 150;
+	cursor: cursor(pointer);
+}
+
+sysBtnDelta: 6px;
+sysUpd: sysButton {
+	size: size(31px, 39px);
+	img: sprite(184px, 1px, 19px, 19px);
+	color: #c4d8e9;
+	overColor: white;
+	duration: 150;
+}
+updateBlinkDuration: 500;
+sysMin: sysButton(sysUpd) {
+	img: sprite(207px, 1px, 19px, 19px);
+}
+sysMax: sysButton(sysUpd) {
+	img: sprite(230px, 1px, 19px, 19px);
+}
+sysRes: sysButton(sysUpd) {
+	img: sprite(253px, 1px, 19px, 19px);
+}
+sysCls: sysButton(sysUpd) {
+	img: sprite(276px, 1px, 19px, 19px);
+}
+sysLock: sysButton(sysUpd) {
+	img: sprite(184px, 22px, 19px, 19px);
+}
+sysUnlock: sysButton(sysUpd) {
+	img: sprite(207px, 22px, 19px, 19px);
+}
+titleBackButton: iconedButton(btnDefIconed) {
+	icon: sprite(9px, 104px, 13px, 20px);
+	iconPos: point(5px, 9px);
+	downIcon: sprite(9px, 104px, 13px, 20px);
+	downIconPos: point(5px, 10px);
+
+	bgColor: #c4d8e9;
+	overBgColor: #fff;
+
+	width: -30px;
+	height: 39px;
+
+	opacity: 1.;
+	cursor: cursor(default);
+
+	textPos: point(23px, 10px);
+	downTextPos: point(23px, 11px);
+}
+
+btnWhiteHover: #f5f5f5;
+btnBoxWhiteHover: #fafafa;
+btnYesColor: #0080c0;
+btnYesHover: #0073ad;
+btnNoColor: #8b8b8b;
+btnNoHover: #777;
+
+titleTextButton: flatButton {
+	color: #d4e3ef;
+	overColor: #fff;
+	downColor: #fff;
+	bgColor: transparent;
+	overBgColor: transparent;
+	downBgColor: transparent;
+
+	width: -14px;
+	height: 39px;
+
+	textTop: 10px;
+	overTextTop: 10px;
+	downTextTop: 11px;
+
+	font: font(fsize);
+	overFont: font(fsize);
+	duration: 150;
+	cursor: cursor(default);
+}
+
+btnDefFlat: flatButton {
+	duration: 200;
+	cursor: cursor(pointer);
+}
+btnDefBig: flatButton(btnDefFlat) {
+	textTop: 11px;
+	overTextTop: 11px;
+	downTextTop: 12px;
+
+	font: font(23px);
+	overFont: font(23px);
+	height: 56px;
+}
+btnNextBG: #2fa9e2;
+btnDefNext: flatButton(btnDefFlat) {
+	color: white;
+	overColor: white;
+	downColor: white;
+	bgColor: btnNextBG;
+	overBgColor: #279ad0;
+	downBgColor: #279ad0;
+}
+btnDefBack: flatButton(btnDefFlat) {
+	color: white;
+	overColor: white;
+	downColor: white;
+	bgColor: #c7c7c7;
+	overBgColor: #b9b9b9;
+	downBgColor: #b9b9b9;
+}
+
+linkCropLimit: 360px;
+linkFont: normalFont;
+linkOverFont: font(fsize underline);
+btnDefLink: linkButton {
+	color: btnYesColor;
+	overColor: btnYesColor;
+	downColor: btnYesHover;
+	font: linkFont;
+	overFont: linkOverFont;
+}
+
+cbDefFlat: flatCheckbox {
+	textColor: #000;
+	bgColor: transparent;
+	disColor: #999;
+
+	height: 22px;
+	textTop: 1px;
+	textLeft: 34px;
+	font: font(fsize);
+	duration: 200;
+	bgFunc: transition(easeOutCirc);
+	cursor: cursor(pointer);
+
+	disabledCursor: cursor(default);
+
+	imageRect: sprite(142px, 43px, 22px, 22px);
+	chkImageRect: sprite(120px, 68px, 22px, 22px);
+	overImageRect: sprite(142px, 68px, 22px, 22px);
+	chkOverImageRect: sprite(120px, 68px, 22px, 22px);
+	disImageRect: sprite(142px, 43px, 22px, 22px);
+	chkDisImageRect: sprite(120px, 43px, 22px, 22px);
+
+	imagePos: point(0px, 0px);
+}
+
+rbDefFlat: flatCheckbox(cbDefFlat) {
+	chkImageRect: sprite(165px, 68px, 22px, 22px);
+	chkOverImageRect: sprite(165px, 68px, 22px, 22px);
+	chkDisImageRect: sprite(165px, 43px, 22px, 22px);
+}
+
+inpDefFont: font(17px);
+inpDefFlat: flatInput {
+	textColor: #000;
+	bgColor: #FFF;
+	bgActive: #FFF;
+	width: 210px;
+	height: 40px;
+	align: align(left);
+	textMrg: margins(5px, 5px, 5px, 5px);
+	font: inpDefFont;
+	cursor: cursor(text);
+
+	borderWidth: 0px;
+	borderColor: black;
+	borderActive: black;
+	borderError: black;
+
+	phColor: #949494;
+	phFocusColor: #AAA;
+	phAlign: align(left);
+	phPos: point(2px, 0px);
+	phShift: 50px;
+	phDuration: 100;
+	phLeftFunc: transition(linear);
+	phAlphaFunc: transition(linear);
+	phColorFunc: transition(linear);
+}
+
+inpDefGray: flatInput(inpDefFlat) {
+	bgColor: #f2f2f2;
+	borderWidth: 2px;
+	borderColor: #f2f2f2;
+	borderActive: #80cff9;
+	borderError: #ed8080;
+	phColor: #808080;
+}
+
+taDefFlat: flatTextarea {
+	textColor: #000;
+	bgColor: #FFF;
+	align: align(left);
+	textMrg: margins(5px, 5px, 5px, 5px);
+	font: inpDefFont;
+	cursor: cursor(text);
+
+	phColor: #999;
+	phFocusColor: #AAA;
+	phAlign: align(topleft);
+	phPos: point(2px, 0px);
+	phShift: 50px;
+	phDuration: 100;
+	phLeftFunc: transition(linear);
+	phAlphaFunc: transition(linear);
+	phColorFunc: transition(linear);
+}
+
+scrollDef: flatScroll {
+	barColor: rgba(0, 0, 0, 83);
+	bgColor: rgba(0, 0, 0, 26);
+	barOverColor: rgba(0, 0, 0, 122);
+	bgOverColor: rgba(0, 0, 0, 44);
+
+	round: 0px;
+
+	width: 10px;
+	minHeight: 20px;
+	deltax: 3px;
+	deltat: 3px;
+	deltab: 3px;
+
+	topsh: 2px;
+	bottomsh: 2px;
+	shColor: rgba(0, 0, 0, 18);
+
+	duration: 150;
+	hiding: 1000;
+}
+scrollCountries: flatScroll(scrollDef) {
+	topsh: 0px;
+	bottomsh: -2px;
+}
+
+lnkText: #0f7dc7;
+
+introBtnTop: 288px;
+introSkip: 45px;
+introFinishSkip: 15px;
+introPhotoSize: 98px;
+introHeaderFont: font(24px);
+introHeaderSkip: 14px;
+introIconSkip: 54px;
+introFont: font(16px);
+introLink: linkButton(btnDefLink) {
+	font: introFont;
+	overFont: font(16px underline);
+}
+introColor: black;
+introLabel: flatLabel(labelDefFlat) {
+	font: introFont;
+	align: align(center);
+}
+
+introPointsTop: -30px; // intro steps bottom points
+introPointWidth: 4px;
+introPointHeight: 4px;
+introPointHoverWidth: 10px;
+introPointHoverHeight: 10px;
+introPointLeft: 3px;
+introPointTop: 3px;
+introPointDelta: 10px;
+introPointColor: rgb(0, 0, 0);
+introPointAlpha: 0.5;
+introPointHoverColor: #86b4e3;
+introPointStepT: transition(sineInOut);
+introPointAlphaT: transition(linear);
+introPointShowStepT: transition(easeOutCirc);
+introPointHideStepT: transition(easeInCirc);
+introPointShowAlphaT: transition(easeInCirc);
+introPointHideAlphaT: transition(easeOutCirc);
+
+introStepSize: size(400px, 200px);
+introSize: size(400px, 400px);
+introSlideShift: 500px; // intro hiding animation
+introSlideDuration: 200;
+introSlideDelta: 0; // between hide start and show start
+introHideFunc: transition(easeInCirc);
+introShowFunc: transition(easeOutCirc);
+introAlphaHideFunc: transition(easeOutCirc);
+introAlphaShowFunc: transition(easeInCirc);
+introTextTop: 22px;
+introTextSize: size(400px, 93px);
+introCallSkip: 15px;
+introPwdTextSize: size(400px, 73px);
+
+btnIntroSep: 12px;
+btnIntroNext: flatButton(btnDefNext, btnDefBig) {
+	textTop: 16px;
+	overTextTop: 16px;
+	downTextTop: 17px;
+
+	font: font(17px);
+	overFont: font(17px);
+
+	width: 300px;
+}
+
+boxShadow: sprite(363px, 50px, 15px, 15px);
+boxShadowShift: 2px;
+
+introCountry: countryInput {
+	width: 300px;
+	height: 41px;
+	top: 33px;
+	bgColor: #f2f2f2;
+	ptrSize: size(15px, 8px);
+	textMrg: margins(16px, 5px, 16px, 15px);
+	font: inpDefFont;
+	align: align(left);
+}
+
+introPhoneTop: 8px;
+inpIntroCountryCode: flatInput(inpDefGray) {
+	width: 70px;
+	height: 41px;
+	align: align(center);
+}
+inpIntroPhone: flatInput(inpDefGray) {
+	textMrg: margins(12px, 5px, 12px, 6px);
+	width: 225px;
+	height: 41px;
+}
+inpIntroCode: flatInput(inpDefGray) {
+	textMrg: margins(12px, 5px, 12px, 6px);
+	width: 106px;
+	height: 41px;
+	align: align(center);
+
+	phPos: point(0px, 0px);
+	phAlign: align(center);
+	phShift: 0px;
+}
+inpIntroName: flatInput(inpIntroPhone) {
+	width: 192px;
+}
+inpIntroPassword: flatInput(inpIntroPhone) {
+	width: 300px;
+}
+
+introSelectDelta: 30px;
+btnSelectSep: #e0e0e0;
+btnRedLink: linkButton(btnDefLink) {
+	color: #d15948;
+	overColor: #d15948;
+	downColor: #db6352;
+}
+
+countryRowHeight: 36px;
+countryRowNameFont: semiboldFont;
+countryRowPadding: margins(22px, 9px, 8px, 0px);
+countryRowCodeFont: font(fsize);
+countryRowBgOver: overBg;
+countryRowCodeFg: #808080;
+countryRowCodeFgOver: #7c99b2;
+countriesSkip: 12px;
+countriesScroll: flatScroll(boxScroll) {
+	deltat: 9px;
+	deltab: 3px;
+}
+
+introErrWidth: 450px;
+introErrDuration: 200;
+introErrFunc: transition(linear);
+introErrColor: black;
+introErrTop: 15px;
+introErrHeight: 40px;
+introErrFont: font(16px);
+
+introErrLabel: flatLabel(labelDefFlat) {
+	font: introErrFont;
+	align: align(center);
+}
+
+setWidth: 356px;
+setTop: 26px;
+setNameLeft: 3px;
+setNameTop: 5px;
+setNameFont: font(18px);
+setStatusTop: 35px;
+setStatusLeft: 3px;
+setStatusFont: font(14px);
+setPhotoSize: 120px;
+setHeaderFont: font(17px);
+setHeaderColor: black;
+setHeaderSkip: 60px;
+setHeaderLeft: -1px;
+setHeaderTop: 26px;
+setLittleSkip: 9px;
+setSectionSkip: 25px;
+setContactInfoLeft: 150px;
+setVersionHeight: 41px;
+setVersionLeft: 36px;
+setVersionTop: 3px;
+setVersionColor: #999;
+setBottom: 130px;
+setScroll: flatScroll(scrollDef) {
+	bottomsh: 0px;
+	topsh: 0px;
+}
+setClose: iconedButton(btnDefIconed) {
+	icon: sprite(245px, 221px, 40px, 40px);
+	iconPos: point(0px, 0px);
+	downIcon: sprite(245px, 221px, 40px, 40px);
+	downIconPos: point(0px, 0px);
+
+	opacity: 0.71;
+
+	width: 43px;
+	height: 43px;
+}
+setClosePos: point(32px, 32px);
+setPhotoImg: sprite(0px, 218px, 120px, 120px);
+setOverPhotoImg: sprite(122px, 218px, 120px, 120px);
+setPhotoDuration: 150;
+
+setPadding: 26px;
+setBG: #FFF;
+setSh: #000;
+setTitleFrom: point(20px, 20px);
+setTitleFont: font(24px);
+setTitleColor: #000;
+setNameInput: flatInput(inpDefFlat) {
+	font: font(fsize);
+	height: 25px;
+	width: 170px;
+	textMrg: margins(3px, 3px, 3px, 3px);
+}
+setErrBG: #ffa5a5;
+setErrColor: #d84d4d;
+setErrHeight: 30px;
+setErrFont: font(fsize);
+setGoodColor: #4ab44a;
+
+setBackgroundSize: 120px;
+
+btnSetUpload: flatButton(btnDefNext, btnDefBig) {
+	width: 206px;
+	height: 42px;
+	font: font(18px);
+	overFont: font(18px);
+
+	textTop: 9px;
+	overTextTop: 9px;
+	downTextTop: 10px;
+}
+
+btnEditSave: flatButton(btnSetUpload) {
+	width: 115px;
+}
+btnEditCancel: flatButton(btnDefFlat, btnDefBig) {
+	color: #666d78;
+	overColor: #666d78;
+	downColor: #50565e;
+
+	bgColor: rgba(0, 0, 0, 63);
+	overBgColor: rgba(0, 0, 0, 47);
+	downBgColor: rgba(0, 0, 0, 95);
+
+	width: 115px;
+	height: 40px;
+
+	textTop: 9px;
+	overTextTop: 9px;
+	downTextTop: 10px;
+
+	font: font(18px);
+	overFont: font(18px);
+}
+
+btnLogout: flatButton(btnDefFlat, btnDefBig) {
+	color: white;
+	overColor: white;
+	downColor: white;
+
+	bgColor: #db6352;
+	overBgColor: #d15948;
+	downBgColor: #c74d3b;
+
+	width: 148px;
+	height: 42px;
+
+	textTop: 8px;
+	overTextTop: 8px;
+	downTextTop: 9px;
+
+	font: font(18px);
+	overFont: font(18px);
+}
+
+//// dialogs
+dlgFilterPadding: 10px;
+dlgPhotoSize: 46px;
+dlgPaddingHor: 10px;
+dlgPaddingVer: 8px;
+dlgHeight: 62px;
+dlgPhotoPadding: 12px;
+
+dlgImportantHeight: 37px;
+
+noContactsHeight: 100px;
+noContactsFont: font(fsize);
+noContactsColor: #777;
+
+dlgSep: 8px;
+
+dlgMinWidth: 260px;
+dlgRichMinWidth: 150px;
+dlgMaxWidth: 540px;
+dlgFilter: flatInput(inpDefGray) {
+	font: font(fsize);
+	height: 34px;
+	bgColor: #f2f2f2;
+	phColor: #949494;
+	phFocusColor: #a4a4a4;
+	textMrg: margins(34px, 2px, 34px, 4px);
+	imgRect: sprite(227px, 21px, 24px, 24px);
+	imgPos: point(6px, 5px);
+	width: 240px;
+
+	borderWidth: 2px;
+	borderColor: #f2f2f2;
+	borderActive: #80cff9;
+	borderError: #ed8080;
+}
+dlgScroll: flatScroll(scrollDef) {
+	topsh: 0px;
+	bottomsh: 0px;
+}
+dlgFont: font(fsize);
+
+dlgDblCheckImg: sprite(302px, 23px, 17px, 11px);
+dlgCheckImg: sprite(320px, 23px, 17px, 11px);
+dlgActiveDblCheckImg: sprite(302px, 36px, 17px, 11px);
+dlgActiveCheckImg: sprite(320px, 36px, 17px, 11px);
+dlgSendImg: sprite(122px, 25px, 17px, 11px);
+dlgActiveSendImg: sprite(142px, 25px, 17px, 11px);
+
+dlgChatImgPos: point(1px, 4px);
+dlgChatImg: sprite(104px, 26px, 16px, 11px);
+dlgActiveChatImg: sprite(104px, 37px, 16px, 11px);
+dlgChannelImgPos: point(3px, 4px);
+dlgChannelImg: sprite(105px, 1px, 12px, 11px);
+dlgActiveChannelImg: sprite(105px, 14px, 12px, 11px);
+dlgImgSkip: 22px;
+
+dlgCheckLeft: 5px;
+dlgCheckTop: 4px;
+dlgCheckSkip: 3px;
+
+dlgHistFont: font(fsize);
+dlgNameColor: #000;
+dlgNameTop: 2px;
+dlgSystemColor: #4981af;
+dlgTextColor: #888;
+
+dlgDateFont: font(13px);
+dlgDateColor: #a8a8a8;
+dlgDateSkip: 5px;
+
+dlgUnreadColor: #FFF;
+dlgUnreadBG: #6fc766;
+dlgUnreadMutedBG: #bbb;
+dlgUnreadFont: font(12px bold);
+dlgUnreadHeight: 19px;
+dlgUnreadTop: 1px;
+dlgUnreadPaddingHor: 5px;
+dlgUnreadRadius: 2px;
+dlgBG: #FFF;
+dlgHoverBG: #f5f5f5;
+
+dlgActiveBG: #6a91b1;
+dlgActiveUnreadColor: #5b94bf;
+dlgActiveUnreadBG: white;
+dlgActiveColor: white;
+dlgActiveDateColor: #d3e2ee;
+dlgActiveUnreadMutedBG: dlgActiveDateColor;
+
+topBarHeight: 54px;
+topBarBG: white;
+topBarDuration: 200;
+topBarForwardPadding: margins(17px, 8px, 39px, 8px);
+topBarForwardAlpha: 0.6;
+topBarForwardImg: sprite(31px, 104px, 9px, 16px);
+topBarBackwardImg: sprite(22px, 104px, 9px, 16px);
+topBarBackPadding: margins(15px, 7px, 9px, 7px);
+topBarBackAlpha: 0.8;
+topBarBackImg: sprite(65px, 112px, 9px, 16px);
+topBarBackColor: #005faf;
+topBarBackFont: font(16px);
+topBarSearch: iconedButton(btnDefIconed) {
+	bgColor: transparent;
+	overBgColor: transparent;
+
+	icon: sprite(84px, 374px, 18px, 18px);
+	iconPos: point(13px, 18px);
+	downIcon: sprite(84px, 374px, 18px, 18px);
+	downIconPos: point(13px, 18px);
+
+	opacity: 0.22;
+	overOpacity: 0.36;
+
+	width: 44px;
+	height: topBarHeight;
+}
+topBarMinPadding: 5px;
+topBarButton: flatButton(btnDefFlat) {
+	color: btnYesColor;
+	overColor: btnYesHover;
+	downColor: btnYesHover;
+
+	bgColor: white;
+	overBgColor: white;
+	downBgColor: white;
+
+	width: -40px;
+	height: 54px;
+
+	textTop: 19px;
+	overTextTop: 19px;
+	downTextTop: 20px;
+
+	font: font(fsize);
+	overFont: font(fsize underline);
+}
+topBarActionButton: flatButton(btnDefNext, btnDefBig) {
+	textTop: 8px;
+	overTextTop: 8px;
+	downTextTop: 9px;
+
+	font: font(fsize);
+	overFont: font(fsize);
+	width: 101px;
+	height: 34px;
+}
+topBarActionSkip: 13px;
+
+historyToEnd: iconedButton(btnDefIconed) {
+	bgColor: transparent;
+	overBgColor: transparent;
+
+	icon: sprite(252px, 41px, 44px, 44px);
+	iconPos: point(0px, 0px);
+	downIcon: sprite(252px, 41px, 44px, 44px);
+	downIconPos: point(0px, 0px);
+
+	width: 44px;
+	height: 44px;
+}
+historyToEndSkip: 10px;
+
+activeFadeInDuration: 500;
+activeFadeOutDuration: 3000;
+
+msgRadius: 3px;
+
+msgMaxWidth: 430px;
+msgFont: font(fsize);
+msgNameFont: semiboldFont;
+msgServiceFont: semiboldFont;
+msgServiceNameFont: semiboldFont;
+msgServicePhotoWidth: 100px;
+msgDateFont: font(13px);
+msgMinWidth: 190px;
+msgPhotoSize: 33px;
+msgPhotoSkip: 40px;
+msgPadding: margins(13px, 7px, 13px, 8px);
+msgMargin: margins(13px, 10px, 53px, 2px);
+msgMarginTopAttached: 3px;
+msgLnkPadding: 2px; // for media open / save links
+msgBorder: #f0f0f0;
+msgInBg: #fff;
+msgInBgSelected: #c2dcf2; // #358cd4 with 30% opacity
+msgOutBg: #effdde;
+msgOutBgSelected: #b7dbdb;
+msgSelectOverlay: #358cd44c;
+msgStickerOverlay: #358cd47f;
+msgInServiceFg: #0e7acd;
+msgInServiceFgSelected: #0e7acd;
+msgOutServiceFg: #3a8e26;
+msgOutServiceFgSelected: #367570;
+msgShadow: 2px;
+msgInShadow: #748ea229;
+msgInShadowSelected: #548dbb29;
+msgOutShadow: #3ac34740;
+msgOutShadowSelected: #37a78e40;
+msgInDateFg: #a0acb6;
+msgInDateFgSelected: #6a9cc5;
+msgOutDateFg: #6cc264;
+msgOutDateFgSelected: #50a79c;
+
+msgReplyPadding: margins(6px, 6px, 11px, 6px);
+msgReplyBarPos: point(1px, 0px);
+msgReplyBarSize: size(2px, 36px);
+msgReplyBarSkip: 10px;
+msgOutReplyBarColor: #5dc452;
+msgInReplyBarColor: #2fa9e2;
+msgOutReplyBarSelColor: #4da79f;
+msgInReplyBarSelColor: #2fa9e2;
+
+msgBotKbDuration: 200;
+msgBotKbFont: semiboldFont;
+msgBotKbOverOpacity: 0.1;
+msgBotKbIconPadding: 2px;
+msgBotKbUrlIcon: sprite(188px, 338px, 10px, 10px);
+//msgBotKbRequestPhoneIcon: msgBotKbUrlIcon;
+//msgBotKbRequestLocationIcon: msgBotKbUrlIcon;
+msgBotKbSwitchPmIcon: sprite(188px, 348px, 10px, 10px);
+msgBotKbButton: botKeyboardButton {
+	margin: 5px;
+	padding: 10px;
+	height: 36px;
+	textTop: 8px;
+	downTextTop: 9px;
+}
+
+msgServiceBg: #89a0b47f;
+msgServiceSelectBg: #bbc8d4a2;
+msgServiceColor: #FFF;
+msgServicePadding: margins(12px, 3px, 12px, 4px);
+msgServiceMargin: margins(10px, 10px, 80px, 2px);
+
+msgColor: #000;
+msgDateColor: #000;
+msgLinkColor: #2a6dc2;
+msgPressedLinkColor: #004bad;
+msgSkip: 40px;
+msgPtr: 8px;
+msgBG: ":/gui/art/bg.jpg";
+msgBG0: ":/gui/art/bg0.png";
+
+msgCheckPos: point(3px, 1px);
+msgSendingImg: sprite(260px, 20px, 20px, 20px);
+msgCheckImg: sprite(320px, 0px, 20px, 20px);
+msgDblCheckImg: sprite(300px, 0px, 20px, 20px);
+msgSelectCheckImg: sprite(162px, 0px, 20px, 20px);
+msgSelectDblCheckImg: sprite(142px, 0px, 20px, 20px);
+msgViewsPos: point(0px, -4px);
+msgViewsImg: sprite(104px, 48px, 16px, 11px);
+msgSelectViewsImg: sprite(104px, 70px, 16px, 11px);
+msgOutViewsImg: sprite(104px, 81px, 16px, 11px);
+msgSelectOutViewsImg: sprite(104px, 92px, 16px, 11px);
+msgSendingViewsImg: sprite(104px, 103px, 16px, 11px);
+msgSendingOutViewsImg: sprite(104px, 125px, 16px, 11px);
+msgInvSendingImg: sprite(320px, 65px, 20px, 20px);
+msgInvCheckImg: sprite(280px, 20px, 20px, 20px);
+msgInvDblCheckImg: sprite(300px, 65px, 20px, 20px);
+msgInvViewsImg: sprite(104px, 59px, 16px, 11px);
+msgInvSendingViewsImg: sprite(104px, 114px, 16px, 11px);
+
+msgDateSpace: 19px;
+msgDateCheckSpace: 4px;
+msgDateViewsSpace: 11px;
+msgDateDelta: point(2px, 5px);
+
+msgDateImgDelta: 4px;
+msgDateImgColor: #fff;
+msgDateImgBg: #00000054;
+msgDateImgBgOver: #00000074;
+msgDateImgBgSelected: #1c4a7187;
+msgDateImgPadding: point(8px, 2px);
+msgDateImgCheckSpace: 4px;
+
+msgDogImg: sprite(216px, 92px, 126px, 126px);
+historyPadding: 10px;
+
+collapseButton: flatButton(btnDefFlat) {
+	font: msgServiceFont;
+	overFont: msgServiceFont;
+	width: -24px;
+	bgColor: transparent;
+	downBgColor: transparent;
+	overBgColor: transparent;
+	color: white;
+	overColor: white;
+	downColor: white;
+	textTop: 3px;
+	overTextTop: 3px;
+	downTextTop: 3px;
+	height: 25px;
+}
+collapseHideDuration: 200;
+collapseShowDuration: 200;
+
+defaultTextStyle: textStyle {
+	linkFlags: font(fsize);
+	linkFlagsOver: font(fsize underline);
+	linkFg: btnYesColor;
+	linkFgDown: btnYesHover;
+	monoFg: #777;
+	selectBg: msgInBgSelected;
+	selectOverlay: msgSelectOverlay;
+	lineHeight: 0px;
+}
+boxTextStyle: textStyle(defaultTextStyle) {
+	lineHeight: 22px;
+}
+serviceTextStyle: textStyle(defaultTextStyle) {
+	linkFlags: msgServiceFont;
+	linkFlagsOver: font(fsize semibold underline);
+	linkFg: msgServiceColor;
+	linkFgDown: msgServiceColor;
+	monoFg: msgServiceColor;
+	selectBg: msgServiceSelectBg;
+	selectOverlay: msgServiceSelectBg;
+}
+inTextStyle: textStyle(defaultTextStyle) {
+	monoFg: #4e7391;
+	selectBg: msgInBgSelected;
+	selectOverlay: msgSelectOverlay;
+}
+outTextStyle: textStyle(defaultTextStyle) {
+	monoFg: #469165;
+	selectBg: msgOutBgSelected;
+	selectOverlay: msgSelectOverlay;
+}
+inFwdTextStyle: textStyle(defaultTextStyle) {
+	linkFlags: semiboldFont;
+	linkFlagsOver: semiboldFont;
+	linkFg: msgInServiceFg;
+	linkFgDown: msgInServiceFg;
+}
+outFwdTextStyle: textStyle(inFwdTextStyle) {
+	linkFg: msgOutServiceFg;
+	linkFgDown: msgOutServiceFg;
+}
+inFwdTextStyleSelected: textStyle(inFwdTextStyle) {
+	linkFg: msgInServiceFgSelected;
+	linkFgDown: msgInServiceFgSelected;
+}
+outFwdTextStyleSelected: textStyle(inFwdTextStyle) {
+	linkFg: msgOutServiceFgSelected;
+	linkFgDown: msgOutServiceFgSelected;
+}
+medviewSaveAsTextStyle: textStyle(defaultTextStyle) {
+	linkFg: #91d9ff;
+	linkFgDown: #91d9ff;
+}
+
+dlgTextStyle: textStyle(defaultTextStyle) {
+	linkFg: dlgSystemColor;
+	linkFgDown: dlgSystemColor;
+	linkFlagsOver: font(fsize);
+}
+dlgActiveTextStyle: textStyle(defaultTextStyle) {
+	linkFg: dlgActiveColor;
+	linkFgDown: dlgActiveColor;
+	linkFlagsOver: font(fsize);
+}
+introLabelTextStyle: textStyle(defaultTextStyle) {
+	lineHeight: 30px;
+}
+introErrLabelTextStyle: textStyle(defaultTextStyle) {
+	lineHeight: 27px;
+}
+
+mediaPadding: margins(0px, 0px, 0px, 0px);//1px, 1px, 1px, 1px);//2px, 2px, 2px, 2px);
+mediaCaptionSkip: 5px;
+mediaHeaderSkip: 5px;
+mediaThumbSize: 48px;
+mediaNameTop: 3px;
+mediaDetailsShift: 3px;
+mediaInFg: msgInDateFg;
+mediaInFgSelected: msgInDateFgSelected;
+mediaOutFg: msgOutDateFg;
+mediaOutFgSelected: msgOutDateFgSelected;
+mediaInUnreadFg: #999;
+mediaInUnreadFgSelected: #7b95aa;
+mediaOutUnreadFg: #6aad60;
+mediaOutUnreadFgSelected: #5aa382;
+mediaUnreadSize: 7px;
+mediaUnreadSkip: 5px;
+mediaUnreadTop: 6px;
+
+mediaInStyle: textStyle(defaultTextStyle) {
+	linkFg: mediaInFg;
+	linkFgDown: mediaInFg;
+}
+mediaInStyleSelected: textStyle(defaultTextStyle) {
+	linkFg: mediaInFgSelected;
+	linkFgDown: mediaInFgSelected;
+}
+
+msgFileRedColor: #e47272;
+msgFileYellowColor: #efc274;
+msgFileGreenColor: #61b96e;
+msgFileBlueColor: #72b1df;
+msgFileRedDark: #cd5b5e;
+msgFileYellowDark: #e6a561;
+msgFileGreenDark: #4da859;
+msgFileBlueDark: #5c9ece;
+msgFileRedOver: #c35154;
+msgFileYellowOver: #dc9c5a;
+msgFileGreenOver: #44a050;
+msgFileBlueOver: #5294c4;
+msgFileRedSelected: #9f6a82;
+msgFileYellowSelected: #b19d84;
+msgFileGreenSelected: #46a07e;
+msgFileBlueSelected: #5099d0;
+
+msgFileMenuSize: size(36px, 36px);
+msgFileSize: 44px;
+msgFilePadding: margins(14px, 12px, 11px, 12px);
+msgFileThumbSize: 72px;
+msgFileThumbPadding: margins(10px, 10px, 14px, 10px);
+msgFileThumbNameTop: 12px;
+msgFileThumbStatusTop: 32px;
+msgFileThumbLinkTop: 60px;
+msgFileThumbLinkInFg: #3da5e0;
+msgFileThumbLinkInFgSelected: #3da5e0;
+msgFileThumbLinkOutFg: #5eba5b;
+msgFileThumbLinkOutFgSelected: #31a298;
+msgFileNameTop: 16px;
+msgFileStatusTop: 37px;
+msgFileMinWidth: 294px;
+msgFileInBg: #59b6eb;
+msgFileInBgOver: #4eade3;
+msgFileInBgSelected: #51a3d3;
+msgFileOutBg: #78c67f;
+msgFileOutBgOver: #6bc272;
+msgFileOutBgSelected: #5fb389;
+
+msgFileOutImage: sprite(0px, 146px, 18px, 18px);
+msgFileOutImageSelected: sprite(18px, 146px, 18px, 18px);
+msgFileInImage: sprite(0px, 164px, 18px, 18px);
+msgFileInImageSelected: sprite(18px, 164px, 18px, 18px);
+msgFileOutFile: sprite(36px, 146px, 18px, 18px);
+msgFileOutFileSelected: sprite(54px, 146px, 18px, 18px);
+msgFileInFile: sprite(36px, 164px, 18px, 18px);
+msgFileInFileSelected: sprite(54px, 164px, 18px, 18px);
+msgFileOutDownload: sprite(72px, 142px, 14px, 20px);
+msgFileOutDownloadSelected: sprite(86px, 142px, 14px, 20px);
+msgFileInDownload: sprite(72px, 162px, 14px, 20px);
+msgFileInDownloadSelected: sprite(86px, 162px, 14px, 20px);
+msgFileOutCancel: sprite(100px, 147px, 16px, 16px);
+msgFileOutCancelSelected: sprite(116px, 147px, 16px, 16px);
+msgFileInCancel: sprite(100px, 165px, 16px, 16px);
+msgFileInCancelSelected: sprite(116px, 165px, 16px, 16px);
+msgFileOutPause: sprite(132px, 147px, 14px, 16px);
+msgFileOutPauseSelected: sprite(146px, 147px, 14px, 16px);
+msgFileInPause: sprite(132px, 165px, 14px, 16px);
+msgFileInPauseSelected: sprite(146px, 165px, 14px, 16px);
+msgFileOutPlay: sprite(160px, 146px, 20px, 18px);
+msgFileOutPlaySelected: sprite(180px, 146px, 20px, 18px);
+msgFileInPlay: sprite(160px, 164px, 20px, 18px);
+msgFileInPlaySelected: sprite(180px, 164px, 20px, 18px);
+
+msgFileRed: sprite(0px, 425px, 20px, 20px);
+msgFileYellow: sprite(20px, 425px, 20px, 20px);
+msgFileGreen: sprite(40px, 425px, 20px, 20px);
+msgFileBlue: sprite(60px, 425px, 20px, 20px);
+
+msgFileOverDuration: 200;
+msgFileRadialLine: 3px;
+
+msgVideoSize: size(320px, 240px);
+
+msgWaveformBar: 2px;
+msgWaveformSkip: 1px;
+msgWaveformMin: 2px;
+msgWaveformMax: 20px;
+msgWaveformInActive: #59b6eb;
+msgWaveformInActiveSelected: #51a3d3;
+msgWaveformInInactive: #d4dee6;
+msgWaveformInInactiveSelected: #9cc1e1;
+msgWaveformOutActive: #78c67f;
+msgWaveformOutActiveSelected: #6badad;
+msgWaveformOutInactive: #b3e2b4;
+msgWaveformOutInactiveSelected: #91c3c3;
+
+sendPadding: 9px;
+btnSend: flatButton(btnDefFlat) {
+	color: btnYesColor;
+	overColor: btnYesHover;
+	downColor: btnYesHover;
+
+	bgColor: white;
+	overBgColor: btnWhiteHover;
+	downBgColor: btnWhiteHover;
+
+	width: -32px;
+	height: 46px;
+
+	textTop: 12px;
+	overTextTop: 12px;
+	downTextTop: 13px;
+
+	font: font(16px);
+	overFont: font(16px);
+}
+btnUnblock: flatButton(btnSend) {
+	color: #d15948;
+	overColor: #d15948;
+	downColor: #db6352;
+}
+
+btnAttachDocument: iconedButton(btnDefIconed) {
+	icon: sprite(218px, 68px, 24px, 24px);
+	iconPos: point(11px, 11px);
+	downIcon: sprite(218px, 68px, 24px, 24px);
+	downIconPos: point(11px, 12px);
+
+	overBgColor: btnWhiteHover;
+	width: 46px;
+	height: 46px;
+}
+btnAttachPhoto: iconedButton(btnAttachDocument) {
+	icon: sprite(118px, 0px, 24px, 24px);
+	downIcon: sprite(118px, 0px, 24px, 24px);
+}
+btnAttachEmoji: iconedButton(btnAttachDocument) {
+	overBgColor: white;
+	icon: sprite(374px, 344px, 21px, 22px);
+	iconPos: point(6px, 12px);
+	downIcon: sprite(374px, 344px, 21px, 22px);
+	downIconPos: point(6px, 12px);
+
+	width: 33px;
+}
+emojiCircle: size(19px, 19px);
+emojiCirclePeriod: 1500;
+emojiCircleDuration: 500;
+emojiCircleTop: 13px;
+emojiCircleLine: 2px;
+emojiCircleFg: #b9b9b9;
+emojiCirclePart: 3.5;
+btnBotKbShow: iconedButton(btnAttachEmoji) {
+	icon: sprite(375px, 74px, 21px, 21px);
+	iconPos: point(6px, 12px);
+	downIcon: sprite(375px, 74px, 21px, 21px);
+	downIconPos: point(6px, 12px);
+}
+btnBotCmdStart: iconedButton(btnAttachEmoji) {
+	icon: sprite(354px, 74px, 21px, 21px);
+	iconPos: point(6px, 12px);
+	downIcon: sprite(354px, 74px, 21px, 21px);
+	downIconPos: point(6px, 12px);
+}
+btnBotKbHide: iconedButton(btnAttachEmoji) {
+	icon: sprite(373px, 95px, 23px, 14px);
+	iconPos: point(5px, 17px);
+	downIcon: sprite(373px, 95px, 23px, 14px);
+	downIconPos: point(5px, 17px);
+}
+broadcastToggle: flatCheckbox {
+	textColor: black;
+	bgColor: white;
+	disColor: black;
+
+	width: 34px;
+	height: 46px;
+	duration: 200;
+	bgFunc: transition(easeOutCirc);
+	cursor: cursor(pointer);
+
+	font: normalFont;
+
+	imageRect: sprite(18px, 125px, 22px, 21px);
+	chkImageRect: sprite(40px, 125px, 22px, 21px);
+	overImageRect: sprite(40px, 104px, 22px, 21px);
+	chkOverImageRect: sprite(40px, 125px, 22px, 21px);
+	disImageRect: sprite(18px, 125px, 22px, 21px);
+	chkDisImageRect: sprite(18px, 125px, 22px, 21px);
+
+	imagePos: point(6px, 12px);
+}
+silentToggle: flatCheckbox(broadcastToggle) {
+	width: 33px;
+
+	imageRect: sprite(354px, 242px, 21px, 21px);
+	chkImageRect: sprite(354px, 221px, 21px, 21px);
+	overImageRect: sprite(375px, 242px, 21px, 21px);
+	chkOverImageRect: sprite(375px, 221px, 21px, 21px);
+	disImageRect: sprite(354px, 242px, 21px, 21px);
+	chkDisImageRect: sprite(354px, 221px, 21px, 21px);
+}
+btnRecordAudio: sprite(379px, 390px, 16px, 24px);
+btnRecordAudioActive: sprite(379px, 366px, 16px, 24px);
+recordSignalColor: #f17077;
+recordSignalMin: 5px;
+recordSignalMax: 12px;
+recordCancel: #aaa;
+recordCancelActive: #ec6466;
+recordFont: font(13px);
+recordTextTop: 14px;
+
+replySkip: 51px;
+replyColor: #377aae;
+replyHeight: 49px;
+replyTop: 8px;
+replyBottom: 6px;
+replyIconPos: point(13px, 13px);
+replyIcon: sprite(343px, 197px, 24px, 24px);
+editIcon: sprite(371px, 286px, 24px, 24px);
+replyCancel: iconedButton(btnDefIconed) {
+	icon: sprite(165px, 24px, 14px, 14px);
+	iconPos: point(17px, 17px);
+	downIcon: sprite(165px, 24px, 14px, 14px);
+	downIconPos: point(17px, 18px);
+	bgColor: white;
+	overBgColor: white;
+	width: 49px;
+	height: 49px;
+}
+inlineBotCancel: iconedButton(replyCancel) {
+	height: 46px;
+	iconPos: point(-1px, 16px); // < 0 means draw in the center of the button
+	downIconPos: point(-1px, 17px);
+}
+forwardIcon: sprite(368px, 197px, 24px, 24px);
+
+historyScroll: flatScroll(scrollDef) {
+	barColor: #89a0b47a;
+	bgColor: #89a0b44c;
+	barOverColor: #89a0b4bc;
+	bgOverColor: #89a0b46b;
+
+	round: 0px;
+
+	width: 12px;
+	deltax: 3px;
+	deltat: 3px;
+	deltab: 3px;
+
+	topsh: 0px;
+	bottomsh: -1px;
+}
+textRectMargins: margins(-2px, -1px, -2px, -1px);
+taMsgField: flatTextarea(taDefFlat) {
+	font: msgFont;
+}
+maxFieldHeight: 220px;
+// historyMinHeight: 56px;
+
+reportSpamHide: flatButton(topBarButton) {
+	height: 46px;
+
+	textTop: 15px;
+	overTextTop: 15px;
+	downTextTop: 16px;
+
+	bgColor: transparent;
+	overBgColor: transparent;
+	downBgColor: transparent;
+}
+reportSpamButton: flatButton(reportSpamHide) {
+	textTop: 6px;
+	overTextTop: 6px;
+	downTextTop: 7px;
+
+	width: -50px;
+	height: 30px;
+
+	bgColor: #888;
+	overBgColor: #7b7b7b;
+	downBgColor: #7b7b7b;
+}
+reportSpamSeparator: 30px;
+reportSpamBg: #fffffff0;
+
+newMsgSound: ":/gui/art/newmsg.wav";
+
+unreadBarHeight: 32px;
+unreadBarMargin: 8px;
+unreadBarFont: semiboldFont;
+unreadBarBG: #fcfbfa;
+unreadBarBorder: shadowColor;
+unreadBarColor: #538bb4;
+
+searchedBarHeight: unreadBarHeight;
+searchedBarFont: unreadBarFont;
+searchedBarBG: #ebeef1;
+searchedBarBorder: unreadBarBorder;
+searchedBarColor: #a2aeb7;
+
+layerSlideDuration: 200;
+layerHideDuration: 200;
+layerPadding: margins(10px, 10px, 10px, 10px);
+
+contactPadding: margins(49px, 22px, 0px, 6px);
+contactSkip: 13px;
+contactPhoneSkip: 30px;
+contactUserIcon: sprite(120px, 90px, 18px, 18px);
+contactPhoneIcon: sprite(138px, 90px, 18px, 18px);
+contactIconTop: 10px;
+
+contactsPhotoSize: 42px;
+contactsPadding: margins(16px, 7px, 16px, 7px);
+contactsNameTop: 2px;
+contactsNameFont: semiboldFont;
+contactsStatusTop: 23px;
+contactsStatusFont: font(fsize);
+contactsStatusFg: #999999;
+contactsStatusFgOver: #7c99b2;
+contactsStatusFgOnline: #3b8dcc;
+contactsBgOver: overBg;
+contactsBgActive: #6f9cbd;
+contactsCheckPosition: point(8px, 16px);
+contactsCheckIcon: sprite(187px, 61px, 18px, 14px);
+contactsCheckActiveIcon: sprite(187px, 75px, 18px, 14px);
+contactsNewItemHeight: 53px;
+contactsNewItemIcon: sprite(307px, 248px, 22px, 16px);
+contactsNewItemIconPosition: point(29px, 19px);
+contactsNewItemTop: 18px;
+contactsNewItemFg: #4b82af;
+contactsAboutBg: #f7f7f7;
+contactsAboutShadow: #0000001F;
+contactsAdminCheckbox: Checkbox(defaultCheckbox) {
+	font: semiboldFont;
+	textBg: #f7f7f7;
+	textPosition: point(34px, 1px);
+}
+contactsAboutHeight: 42px;
+contactsAboutTop: 9px;
+contactsScroll: flatScroll(boxScroll) {
+	deltab: 0px;
+}
+
+btnNewGroup: iconedButton(btnDefIconed) {
+	icon: sprite(189px, 118px, 18px, 17px);
+	iconPos: point(8px, 8px);
+	downIcon: sprite(189px, 118px, 18px, 17px);
+	downIconPos: point(8px, 9px);
+
+	bgColor: transparent;
+	overBgColor: transparent;
+	width: 36px;
+	height: 36px;
+}
+btnAddContact: iconedButton(btnNewGroup) {
+	icon: sprite(188px, 93px, 18px, 18px);
+	downIcon: sprite(188px, 93px, 18px, 18px);
+}
+btnCancelSearch: iconedButton(btnNewGroup) {
+	icon: sprite(188px, 43px, 18px, 18px);
+	downIcon: sprite(188px, 43px, 18px, 18px);
+}
+
+notifyBG: white;
+notifyBorder: #f1f1f1;
+notifyBorderWidth: 1px;
+notifySlowHide: 4000;
+notifyPhotoSize: 62px;
+notifyMacPhotoSize: 64px;
+notifyPhotoPos: point(9px, 9px);
+notifyClosePos: point(1px, 2px);
+notifyClose: iconedButton(btnDefIconed) {
+	icon: sprite(167px, 130px, 10px, 10px);
+	iconPos: point(10px, 10px);
+	downIcon: sprite(167px, 130px, 10px, 10px);
+	downIconPos: point(10px, 11px);
+
+	width: 30px;
+	height: 30px;
+}
+notifyItemTop: 12px;
+notifyTextLeft: 12px;
+notifyTextTop: 7px;
+notifySlowHideFunc: transition(easeInCirc);
+notifyWaitShortHide: 0;
+notifyWaitLongHide: 20000;
+notifyFastAnim: 150;
+notifyWidth: 316px;
+notifyHeight: 80px;
+notifyDeltaX: 6px;
+notifyDeltaY: 7px;
+
+boxPhotoPadding: margins(28px, 28px, 28px, 18px);
+boxPhotoCompressedPadding: margins(0px, 2px, 0px, 22px);
+boxPhotoTextFg: #808080;
+cropPointSize: 10px;
+cropSkip: 13px;
+cropMinSize: 20px;
+confirmCaptionArea: InputArea(defaultInputArea) {
+	textMargins: margins(1px, 6px, 1px, 4px);
+	heightMax: 56px;
+}
+confirmBg: #f2f2f2;
+confirmMaxHeight: 245px;
+confirmCompressedSkip: 10px;
+
+profileMaxWidth: 410px;
+profilePadding: margins(28px, 30px, 28px, 0px);
+profilePhotoSize: 120px;
+profileNameLeft: 21px;
+profileNameTop: -1px;
+profileNameFont: font(20px);
+profileStatusLeft: 22px;
+profileStatusTop: 31px;
+profileStatusFont: font(fsize);
+profilePhoneLeft: 22px;
+profilePhoneTop: 62px;
+profilePhoneFont: font(16px);
+profileButtonTop: 18px;
+profileButtonSkip: 10px;
+profileHeaderFont: font(20px);
+profileHeaderColor: black;
+profileHeaderSkip: 59px;
+profileHeaderLeft: -1px;
+profileHeaderTop: 22px;
+
+profileListPhotoSize: 46px;
+profileListPadding: size(12px, 6px);
+profileListNameTop: 8px;
+profileListStatusBottom: 6px;
+profileHoverBG: #f5f5f5;
+profileActiveBG: #6294b9;
+profileSubFont: font(fsize);
+profileListNameFont: semiboldFont;
+profileListNameColor: #000;
+profileOnlineColor: titleTypingColor;
+profileOfflineColor: titleStatusColor;
+btnShareContact: flatButton(btnDefNext, btnDefBig) {
+	width: 145px;
+	height: 42px;
+
+	textTop: 9px;
+	overTextTop: 9px;
+	downTextTop: 10px;
+
+	font: font(17px);
+	overFont: font(17px);
+}
+btnMigrateToMega: flatButton(btnShareContact) {
+	width: -40px;
+}
+profileMinBtnPadding: 10px;
+
+membersPadding: margins(0px, 10px, 0px, 10px);
+
+forwardMargins: margins(30px, 10px, 30px, 10px);
+forwardFont: font(16px);
+forwardBg: rgba(0, 0, 0, 76);
+btnProfileCancel: flatButton(btnDefFlat, btnDefBig) {
+	color: #666d78;
+	overColor: #666d78;
+	downColor: #50565e;
+
+	bgColor: rgba(0, 0, 0, 63);
+	overBgColor: rgba(0, 0, 0, 47);
+	downBgColor: rgba(0, 0, 0, 95);
+
+	width: 145px;
+	height: 40px;
+
+	textTop: 9px;
+	overTextTop: 9px;
+	downTextTop: 10px;
+
+	font: font(18px);
+	overFont: font(18px);
+}
+
+btnDeleteContact: flatButton(btnDefFlat, btnDefBig) {
+	color: #fff;
+	overColor: #fff;
+	downColor: #ffcbc1;
+
+	bgColor: #ee4928bf;
+	overBgColor: #ee4928;
+	downBgColor: #d14024;
+
+	width: 300px;
+	height: 40px;
+
+	textTop: 9px;
+	overTextTop: 9px;
+	downTextTop: 10px;
+
+	font: font(18px);
+	overFont: font(18px);
+}
+
+profileNameInput: flatInput(setNameInput) {
+	width: 230px;
+}
+
+participantInnerAdd: flatButton(btnDefNext) {
+	width: 145px;
+	height: 40px;
+	font: font(18px);
+	overFont: font(18px);
+	textTop: 9px;
+	overTextTop: 9px;
+	downTextTop: 10px;
+}
+participantInnerCancel: flatButton(participantInnerAdd, btnDefBack) {
+}
+participantCancel: flatButton(participantInnerAdd, btnDefBack) {
+	width: 300px;
+}
+participantFilter: flatInput(inpDefFlat) {
+	width: 364px;
+	height: 52px;
+	font: font(16px);
+	textMrg: margins(39px, 11px, 10px, 10px);
+	imgRect: sprite(227px, 21px, 24px, 24px);
+	imgPos: point(10px, 15px);
+}
+participantDelta: 12px;
+
+contactsFilter: flatInput(dlgFilter) {
+	width: 340px;
+	height: 38px;
+	textMrg: margins(34px, 3px, 5px, 4px);
+	imgPos: point(6px, 7px);
+}
+inpCountry: flatInput(contactsFilter) {
+}
+
+newGroupLimitFg: #a4a4a4;
+newGroupAboutFg: #808080;
+newGroupPadding: margins(4px, 6px, 4px, 3px);
+newGroupSkip: 17px;
+newGroupInfoPadding: margins(0px, -4px, 0px, 1px);
+
+newGroupLinkPadding: margins(4px, 27px, 4px, 12px);
+newGroupLinkTop: 3px;
+newGroupLinkFont: font(16px);
+
+newGroupPhotoSize: 76px;
+newGroupPhotoBg: #4eb5f0;
+newGroupPhotoBgOver: #3fa9e7;
+newGroupPhotoIcon: sprite(74px, 104px, 30px, 27px);
+newGroupPhotoIconPosition: point(23px, 25px);
+
+newGroupNamePosition: point(27px, 20px);
+
+newGroupDescriptionPadding: margins(0px, 23px, 0px, 14px);
+newGroupDescription: InputArea(defaultInputArea) {
+	textMargins: margins(1px, 6px, 1px, 4px);
+	heightMax: 115px;
+}
+
+newGroupPublicLinkPadding: margins(0px, 20px, 0px, 5px);
+newGroupLinkFadeDuration: 5000;
+
+connectionHostInputField: InputField(defaultInputField) {
+	width: 160px;
+}
+connectionPortInputField: InputField(defaultInputField) {
+	width: 55px;
+}
+connectionUserInputField: InputField(defaultInputField) {
+	width: 95px;
+}
+connectionPasswordInputField: InputField(defaultInputField) {
+	width: 120px;
+}
+connectionIPv6Skip: 11px;
+
+contactsAdd: flatButton(topBarButton) {
+	width: -40px;
+	height: 52px;
+
+	textTop: 18px;
+	overTextTop: 18px;
+	downTextTop: 19px;
+}
+
+aboutIcon: sprite(0px, 0px, 104px, 104px);
+aboutWidth: 390px;
+aboutVersionTop: -3px;
+aboutVersionLink: linkButton(btnDefLink) {
+	color: #999;
+	overColor: #999;
+	downColor: #999;
+}
+aboutTextTop: 34px;
+aboutSkip: 14px;
+aboutLabel: flatLabel(labelDefFlat) {
+	font: normalFont;
+	width: 330px;
+	align: align(topleft);
+}
+aboutTextStyle: textStyle(defaultTextStyle) {
+	lineHeight: 22px;
+}
+
+emojiTextFont: font(15px);
+emojiReplaceWidth: 52px;
+emojiReplaceHeight: 56px;
+emojiReplaceInnerHeight: 42px;
+emojiReplacePadding: 14px;
+
+connectingBG: #fffe;
+connectingColor: #777;
+connectingPadding: margins(5px, 5px, 5px, 5px);
+
+dropdownDef: dropdown {
+	border: 1px;
+	borderColor: #ebebeb;
+
+	padding: margins(10px, 10px, 10px, 10px);
+	shadow: sprite(241px, 46px, 6px, 6px);
+	shadowShift: 1px;
+
+	duration: 150;
+	width: 0px;
+}
+
+dropdownAttachDocument: iconedButton(btnAttachDocument) {
+	iconPos: point(14px, 13px);
+	downIconPos: point(14px, 14px);
+
+	width: 172px;
+	height: 49px;
+
+	color: black;
+
+	font: font(16px);
+
+	textPos: point(50px, 13px);
+	downTextPos: point(50px, 14px);
+}
+dropdownAttachPhoto: iconedButton(dropdownAttachDocument) {
+	icon: sprite(118px, 0px, 24px, 24px);
+	downIcon: sprite(118px, 0px, 24px, 24px);
+}
+dropdownMediaPhotos: iconedButton(dropdownAttachPhoto) {
+	width: 200px;
+}
+dropdownMediaVideos: iconedButton(dropdownMediaPhotos) {
+	icon: sprite(92px, 348px, 24px, 24px);
+	downIcon: sprite(92px, 348px, 24px, 24px);
+}
+dropdownMediaSongs: iconedButton(dropdownMediaPhotos) {
+	icon: sprite(60px, 374px, 24px, 26px);
+	downIcon: sprite(60px, 374px, 24px, 26px);
+	iconPos: point(12px, 12px);
+	downIconPos: point(12px, 13px);
+}
+dropdownMediaDocuments: iconedButton(dropdownAttachDocument) {
+	width: 200px;
+}
+dropdownMediaAudios: iconedButton(dropdownMediaDocuments) {
+	icon: sprite(62px, 348px, 24px, 24px);
+	downIcon: sprite(62px, 348px, 24px, 24px);
+}
+dropdownMediaLinks: iconedButton(dropdownMediaDocuments) {
+	icon: sprite(372px, 414px, 24px, 24px);
+	downIcon: sprite(372px, 414px, 24px, 24px);
+}
+
+dragFont: font(28px semibold);
+dragSubfont: font(20px semibold);
+dragColor: #777;
+dragDropColor: btnYesColor;
+
+dragMargin: margins(0px, 10px, 0px, 10px);
+dragPadding: margins(20px, 10px, 20px, 10px);
+
+dragHeight: 72px;
+
+dpiSlider: slider {
+	color: #ccc;
+	thikness: 2px;
+
+	width: 260px;
+	bar: sprite(0px, 104px, 9px, 22px);
+}
+dpiActive: black;
+dpiInactive: #999;
+dpiFont1: linkFont;
+dpiFont2: linkFont;
+dpiFont3: linkFont;
+dpiFont4: linkFont;
+
+stickersMaxHeight: 440px;
+stickersPadding: margins(19px, 17px, 19px, 17px);
+stickersSize: size(64px, 64px);
+stickersScroll: flatScroll(boxScroll) {
+	deltax: 7px;
+	deltat: 23px;
+	deltab: 9px;
+}
+stickersReorderPadding: margins(0px, 12px, 0px, 12px);
+stickersReorderFg: #777;
+stickersRowDisabledOpacity: 0.4;
+stickersRowDuration: 200;
+
+emojiScroll: flatScroll(solidScroll) {
+	deltat: 48px;
+}
+emojiRecentOver: sprite(0px, 196px, 21px, 22px);
+emojiRecentActive: sprite(245px, 264px, 21px, 22px);
+emojiPeopleOver: sprite(21px, 196px, 21px, 22px);
+emojiPeopleActive: sprite(266px, 264px, 21px, 22px);
+emojiNatureOver: sprite(42px, 196px, 21px, 22px);
+emojiNatureActive: sprite(245px, 286px, 21px, 22px);
+emojiFoodOver: sprite(63px, 196px, 21px, 22px);
+emojiFoodActive: sprite(266px, 286px, 21px, 22px);
+emojiActivityOver: sprite(126px, 196px, 21px, 22px);
+emojiActivityActive: sprite(287px, 264px, 21px, 22px);
+emojiTravelOver: sprite(105px, 196px, 21px, 22px);
+emojiTravelActive: sprite(308px, 286px, 21px, 22px);
+emojiObjectsOver: sprite(147px, 196px, 21px, 22px);
+emojiObjectsActive: sprite(308px, 264px, 21px, 22px);
+emojiSymbolsOver: sprite(84px, 196px, 21px, 22px);
+emojiSymbolsActive: sprite(287px, 286px, 21px, 22px);
+stickersSettings: sprite(140px, 124px, 21px, 22px);
+savedGifsOver: sprite(329px, 286px, 21px, 22px);
+savedGifsActive: sprite(350px, 286px, 21px, 22px);
+
+emojiPanCategories: #f7f7f7;
+
+rbEmoji: flatCheckbox {
+	textColor: transparent;
+	bgColor: emojiPanCategories;
+	disColor: emojiPanCategories;
+
+	width: 42px;
+	height: 46px;
+
+	textTop: 0px;
+	textLeft: 0px;
+	font: font(fsize);
+	duration: 200;
+	bgFunc: transition(easeOutCirc);
+	cursor: cursor(pointer);
+
+	disabledCursor: cursor(default);
+	imagePos: point(11px, 12px);
+}
+rbEmojiRecent: flatCheckbox(rbEmoji) {
+	imageRect: emojiRecentOver;
+	chkImageRect: emojiRecentActive;
+	overImageRect: emojiRecentOver;
+	chkOverImageRect: emojiRecentActive;
+	disImageRect: emojiRecentOver;
+	chkDisImageRect: emojiRecentActive;
+}
+rbEmojiPeople: flatCheckbox(rbEmoji) {
+	imageRect: emojiPeopleOver;
+	chkImageRect: emojiPeopleActive;
+	overImageRect: emojiPeopleOver;
+	chkOverImageRect: emojiPeopleActive;
+	disImageRect: emojiPeopleOver;
+	chkDisImageRect: emojiPeopleActive;
+}
+rbEmojiNature: flatCheckbox(rbEmoji) {
+	imageRect: emojiNatureOver;
+	chkImageRect: emojiNatureActive;
+	overImageRect: emojiNatureOver;
+	chkOverImageRect: emojiNatureActive;
+	disImageRect: emojiNatureOver;
+	chkDisImageRect: emojiNatureActive;
+}
+rbEmojiFood: flatCheckbox(rbEmoji) {
+	imageRect: emojiFoodOver;
+	chkImageRect: emojiFoodActive;
+	overImageRect: emojiFoodOver;
+	chkOverImageRect: emojiFoodActive;
+	disImageRect: emojiFoodOver;
+	chkDisImageRect: emojiFoodActive;
+}
+rbEmojiActivity: flatCheckbox(rbEmoji) {
+	imageRect: emojiActivityOver;
+	chkImageRect: emojiActivityActive;
+	overImageRect: emojiActivityOver;
+	chkOverImageRect: emojiActivityActive;
+	disImageRect: emojiActivityOver;
+	chkDisImageRect: emojiActivityActive;
+}
+rbEmojiTravel: flatCheckbox(rbEmoji) {
+	imageRect: emojiTravelOver;
+	chkImageRect: emojiTravelActive;
+	overImageRect: emojiTravelOver;
+	chkOverImageRect: emojiTravelActive;
+	disImageRect: emojiTravelOver;
+	chkDisImageRect: emojiTravelActive;
+}
+rbEmojiObjects: flatCheckbox(rbEmoji) {
+	imageRect: emojiObjectsOver;
+	chkImageRect: emojiObjectsActive;
+	overImageRect: emojiObjectsOver;
+	chkOverImageRect: emojiObjectsActive;
+	disImageRect: emojiObjectsOver;
+	chkDisImageRect: emojiObjectsActive;
+}
+rbEmojiSymbols: flatCheckbox(rbEmoji) {
+	imageRect: emojiSymbolsOver;
+	chkImageRect: emojiSymbolsActive;
+	overImageRect: emojiSymbolsOver;
+	chkOverImageRect: emojiSymbolsActive;
+	disImageRect: emojiSymbolsOver;
+	chkDisImageRect: emojiSymbolsActive;
+}
+emojiPanPadding: 12px;
+emojiPanSize: size(45px, 41px);
+emojiPanWidth: 345px;
+emojiPanMaxHeight: 366px;
+emojiPanDuration: 200;
+emojiPanHover: #f0f4f7;
+
+emojiPanHeader: 42px;
+emojiPanHeaderFont: semiboldFont;
+emojiPanHeaderColor: #999;
+emojiPanHeaderLeft: 22px;
+emojiPanHeaderTop: 12px;
+emojiPanHeaderBg: #fffffff2;
+
+emojiColorsPadding: 5px;
+emojiColorsSep: 1px;
+emojiColorsSepColor: #d5d5d5;
+
+emojiSwitchSkip: 27px;
+emojiSwitchImgSkip: 21px;
+emojiSwitchStickers: sprite(318px, 328px, 8px, 12px);
+emojiSwitchEmoji: sprite(310px, 328px, 8px, 12px);
+emojiSwitchColor: #42a8db;
+
+stickerPanSize: size(64px, 64px);
+stickerPanPadding: 11px;
+stickerPanDelete: sprite(128px, 132px, 12px, 12px);
+stickerPanDeleteOpacity: 0.5;
+stickerIconPadding: 5px;
+stickerIconOpacity: 0.7;
+stickerIconSel: 2px;
+stickerIconSelColor: #58b2ed;
+stickerIconLeft: sprite(342px, 72px, 40px, 1px);
+stickerIconRight: sprite(342px, 73px, 40px, 1px);
+stickerIconMove: 400;
+stickerPreviewDuration: 150;
+stickerPreviewBg: #FFFFFFB0;
+stickerPreviewMin: 0.1;
+
+verifiedCheckProfile: sprite(285px, 235px, 18px, 18px);
+verifiedCheckProfilePos: point(7px, 6px);
+verifiedCheck: sprite(285px, 221px, 14px, 14px);
+verifiedCheckInv: sprite(299px, 221px, 14px, 14px);
+verifiedCheckPos: point(4px, 2px);
+
+botKbDuration: 200;
+botKbBg: #edf1f5;
+botKbOverBg: #d8e2ec;
+botKbDownBg: #d8e2ec;
+botKbColor: #4b565f;
+botKbFont: font(15px semibold);
+botKbButton: botKeyboardButton {
+	margin: 10px;
+	padding: 10px;
+	height: 38px;
+	textTop: 9px;
+	downTextTop: 9px;
+}
+botKbTinyButton: botKeyboardButton {
+	margin: 4px;
+	padding: 3px;
+	height: 25px;
+	textTop: 2px;
+	downTextTop: 2px;
+}
+botKbScroll: flatScroll(solidScroll) {
+	deltax: 3px;
+	width: 10px;
+}
+switchPmButton: BoxButton(defaultBoxButton) {
+	width: 320px;
+	height: 34px;
+	textTop: 7px;
+}
+
+minPhotoSize: 100px;
+maxMediaSize: 420px;
+maxStickerSize: 256px;
+maxGifSize: 320px;
+maxSignatureSize: 144px;
+
+mvBgColor: #222;
+mvBgOpacity: 0.92;
+mvThickFont: semiboldFont;
+mvFont: font(fsize);
+
+mvTextLeft: 16px;
+mvTextSkip: 10px;
+mvHeaderTop: 48px;
+mvTextTop: 24px;
+mvTextColor: white;
+mvTextOpacity: 0.5;
+mvTextOverOpacity: 1;
+
+mvIconOpacity: 0.45;
+mvIconOverOpacity: 1;
+mvControlBgColor: black;
+mvControlBgOpacity: 0.3;
+mvControlMargin: 0px;
+mvControlSize: 90px;
+mvIconSize: size(60px, 56px);
+
+mvLeft: sprite(320px, 445px, 12px, 22px);
+mvRight: sprite(332px, 445px, 12px, 22px);
+mvClose: sprite(344px, 445px, 18px, 18px);
+mvSave: sprite(362px, 445px, 14px, 19px);
+mvMore: sprite(376px, 445px, 5px, 21px);
+
+mvDropdown: dropdown(dropdownDef) {
+	shadow: sprite(0px, 0px, 0px, 0px);
+	padding: margins(11px, 12px, 11px, 12px);
+
+	border: 0px;
+	width: 182px;
+}
+mvButton: iconedButton(btnDefIconed) {
+	bgColor: #383838;
+	overBgColor: #505050;
+	font: font(fsize);
+
+	opacity: 1.;
+	overOpacity: 1.;
+
+	width: -32px;
+	height: 36px;
+
+	color: white;
+
+	textPos: point(16px, 9px);
+	downTextPos: point(16px, 10px);
+
+	duration: 0;
+}
+mvPopupMenu: PopupMenu(defaultPopupMenu) {
+	shadow: sprite(0px, 0px, 0px, 0px);
+
+	itemBg: #383838;
+	itemBgOver: #505050;
+	itemFg: white;
+	itemFgOver: white;
+	itemFgDisabled: #999;
+	itemFgShortcut: #eee;
+	itemFgShortcutOver: #fff;
+	itemFgShortcutDisabled: #999;
+
+	separatorFg: #484848;
+}
+mvContextButton: iconedButton(mvButton) {
+	bgColor: #383838E6;
+	overBgColor: #505050E7;
+}
+mvWaitHide: 2000;
+mvHideDuration: 1000;
+mvShowDuration: 200;
+mvFadeDuration: 150;
+
+mvDocPadding: 18px;
+mvDocSize: size(340px, 116px);
+mvDocBg: white;
+mvDocNameTop: 4px;
+mvDocNameFont: font(semibold 14px);
+mvDocNameColor: black;
+mvDocSizeTop: 29px;
+mvDocSizeColor: #808080;
+mvDocExtTop: 35px;
+mvDocExtFont: font(semibold 18px);
+mvDocExtColor: white;
+mvDocExtPadding: 10px;
+mvDocLinksTop: 57px;
+mvDocRed: sprite(0px, 400px, 25px, 25px);
+mvDocYellow: sprite(25px, 400px, 25px, 25px);
+mvDocGreen: sprite(50px, 400px, 25px, 25px);
+mvDocBlue: sprite(75px, 400px, 25px, 25px);
+mvDocIconSize: 80px;
+
+mvDocLink: linkButton(btnDefLink) {
+	color: #4595d3;
+	overColor: #4595d3;
+	downColor: #4595d3;
+}
+
+mvDeltaFromLastAction: 5px;
+mvSwipeDistance: 80px;
+
+mvCaptionPadding: margins(18px, 10px, 18px, 10px);
+mvCaptionMargin: size(11px, 11px);
+mvCaptionRadius: 2px;
+mvCaptionBg: #11111180;
+mvCaptionFont: font(fsize);
+
+medviewSaveMsgCheck: sprite(311px, 309px, 22px, 18px);
+medviewSaveMsgFont: font(16px);
+medviewSaveMsgPadding: margins(55px, 19px, 29px, 20px);
+medviewSaveMsgCheckPos: point(23px, 21px);
+medviewSaveMsgShowing: 200;
+medviewSaveMsgShown: 2000;
+medviewSaveMsgHiding: 2500;
+medviewSaveMsg: #000000b2;
+
+mvTransparentBrush: sprite(9px, 124px, 8px, 8px);
+
+overviewPhotoSkip: 10px;
+overviewPhotoBg: #F1F1F1;
+overviewPhotoMinSize: minPhotoSize;
+overviewPhotoCheck: sprite(245px, 308px, 32px, 32px);
+overviewPhotoChecked: sprite(278px, 308px, 32px, 32px);
+overviewPhotoSelectOverlay: #0a7bb03f;
+
+overviewFilePadding: margins(0px, 3px, 16px, 3px);
+overviewFileSize: 70px;
+overviewFileNameTop: 7px;
+overviewFileStatusTop: 27px;
+overviewFileDateTop: 49px;
+overviewFileChecked: #2fa9e2;
+overviewFileCheck: #00000066;
+overviewFileExtPadding: 5px;
+overviewFileExtTop: 24px;
+overviewFileExtFont: font(18px semibold);
+
+// Mac specific
+
+macAccessoryWidth: 450.;
+macAccessoryHeight: 90.;
+macEnableFilterAdd: 2;
+macEnableFilterTop: 5;
+macSelectorTop: 6;
+macAlwaysThisAppTop: 4;
+macAppHintTop: 8;
+macCautionIconSize: 16;
+
+btnContext: iconedButton(btnDefIconed) {
+	bgColor: white;
+	overBgColor: btnWhiteHover;
+	font: font(14px);
+
+	opacity: 1.;
+	overOpacity: 1.;
+
+	width: -32px;
+	height: 36px;
+
+	color: black;
+
+	textPos: point(16px, 7px);
+	downTextPos: point(16px, 8px);
+}
+
+photoLoader: size(52px, 22px);
+photoLoaderBg: #00000054;
+photoLoaderCnt: 3;
+photoLoaderPoint: size(6px, 6px);
+photoLoaderSkip: 6px;
+photoLoaderPeriod: 600; // ms full period
+photoLoaderDelta: 150; // ms between points
+photoLoaderDuration1: 150; // ms fade in
+photoLoaderDuration2: 150; // ms fade out
+photoLoaderAlphaMin: 0.1; // not less than that
+
+radialSize: size(50px, 50px);
+radialLine: 2px;
+radialDuration: 350;
+radialPeriod: 3000;
+radialBgOpacity: 0.4;
+radialDownload: sprite(346px, 0px, 50px, 50px);
+radialDownloadOpacity: 0.8;
+radialCancel: sprite(378px, 50px, 18px, 18px);
+radialCancelOpacity: 1.0;
+
+overviewLoader: size(34px, 14px);
+overviewLoaderPoint: size(4px, 4px);
+overviewLoaderSkip: 4px;
+
+mediaviewLoader: size(78px, 33px);
+mediaviewLoaderPoint: size(9px, 9px);
+mediaviewLoaderSkip: 9px;
+
+downloadPathSkip: 10px;
+
+usernamePadding: margins(23px, 22px, 21px, 12px);
+usernameSkip: 49px;
+usernameTextStyle: textStyle(defaultTextStyle) {
+	lineHeight: 20px;
+}
+usernameDefaultFg: #777;
+
+youtubeIcon: sprite(116px, 338px, 72px, 50px);
+videoIcon: sprite(0px, 340px, 60px, 60px);
+locationSize: size(320px, 240px);
+
+boxOptionListPadding: margins(2px, 20px, 2px, 2px);
+
+langsWidth: 256px;
+langsButton: Radiobutton(defaultRadiobutton) {
+	width: 200px;
+}
+
+backgroundPadding: 10px;
+backgroundSize: size(108px, 193px);
+backgroundScroll: flatScroll(boxScroll) {
+	width: 10px;
+	deltax: 3px;
+	deltat: 10px;
+	deltab: 0px;
+}
+
+passcodeHeaderFont: font(19px);
+passcodeHeaderHeight: 80px;
+passcodeInput: flatInput(inpIntroPhone) {
+}
+passcodeSubmit: flatButton(btnIntroNext) {
+	textTop: 15px;
+	overTextTop: 15px;
+	downTextTop: 16px;
+	width: 225px;
+	font: font(19px);
+	overFont: font(19px);
+}
+passcodeSubmitSkip: 40px;
+passcodePadding: margins(0px, 22px, 0px, 3px);
+passcodeSkip: 31px;
+
+mentionHeight: 40px;
+mentionScroll: flatScroll(scrollDef) {
+	topsh: 0px;
+	bottomsh: 0px;
+}
+mentionPadding: margins(8px, 5px, 8px, 5px);
+mentionTop: 11px;
+mentionFont: linkFont;
+mentionPhotoSize: msgPhotoSize;
+mentionBgOver: #f5f5f5;
+mentionFg: #777;
+mentionFgOver: #707070;
+mentionFgActive: #0080c0;
+mentionFgOverActive: #0077b3;
+
+sessionsScroll: flatScroll(boxScroll) {
+	deltax: 5px;
+	width: 14px;
+}
+sessionsHeight: 440px;
+sessionHeight: 70px;
+sessionCurrentPadding: margins(0px, 7px, 0px, 4px);
+sessionCurrentHeight: 118px;
+sessionPadding: margins(21px, 10px, 21px, 0px);
+sessionNameFont: msgNameFont;
+sessionActiveFont: msgDateFont;
+sessionActiveColor: #aaa;
+sessionInfoFont: msgFont;
+sessionInfoColor: dlgTextColor;
+sessionTerminateTop: 30px;
+sessionTerminateSkip: 18px;
+sessionTerminate: iconedButton(notifyClose) {
+	iconPos: point(3px, 3px);
+	downIconPos: point(3px, 4px);
+	width: 16px;
+	height: 16px;
+}
+
+webPageLeft: 10px;
+webPageBar: 2px;
+webPageTitleFont: semiboldFont;
+webPageDescriptionFont: normalFont;
+webPagePhotoSkip: 5px;
+webPagePhotoSize: 100px;
+webPagePhotoDelta: 8px;
+
+botDescSkip: 8px;
+
+suppressAll: 0.2;
+suppressSong: 0.05;
+
+playerHeight: 44px;
+playerBg: #e4e9ef;
+playerFg: #54748f;
+playerTimeFg: #a4afba;
+playerLineHeight: 3px;
+playerMoverSize: size(2px, 7px);
+playerLineActive: #6389a8;
+playerLineInactive: #bac7d4;
+playerSkip: 8px;
+playerNameStyle: textStyle(defaultTextStyle) {
+	linkFg: #6389a8;
+	linkFgDown: #6389a8;
+	linkFlags: semiboldFont;
+	linkFlagsOver: semiboldFont;
+}
+playerPlay: sprite(377px, 109px, 19px, 22px);
+playerPause: sprite(379px, 131px, 17px, 20px);
+playerNext: sprite(374px, 151px, 22px, 14px);
+playerPrev: sprite(374px, 165px, 22px, 14px);
+playerClose: sprite(361px, 97px, 12px, 12px);
+playerFull: sprite(365px, 109px, 12px, 12px);
+playerRepeat: sprite(365px, 121px, 12px, 14px);
+playerVolume: sprite(352px, 179px, 44px, 12px);
+playerInactiveOpacity: 0.8;
+playerUnavailableOpacity: 0.3;
+playerDuration: 200;
+
+playlistHoverBg: #f2f2f2;
+playlistPadding: 10px;
+
+linksSearchMargin: margins(20px, 20px, 20px, 0px);
+linksMaxWidth: 520px;
+linksLetterFont: font(24px);
+linksMargin: margins(0px, 7px, 0px, 5px);
+linksTextTop: 6px;
+linksBorder: 1px;
+linksBorderFg: #eaeaea;
+linksDateColor: #808080;
+linksDateMargin: margins(0px, 15px, 0px, 2px);
+
+linksPhotoCheck: sprite(184px, 196px, 16px, 16px);
+linksPhotoChecked: sprite(168px, 196px, 16px, 16px);
+
+inlineResultsLeft: 11px;
+inlineResultsSkip: 3px;
+inlineMediaHeight: 96px;
+inlineThumbSize: 64px;
+inlineThumbSkip: 10px;
+inlineDescriptionFg: #8a8a8a;
+inlineRowMargin: 6px;
+inlineRowBorder: linksBorder;
+inlineRowBorderFg: linksBorderFg;
+inlineRowFileNameTop: 2px;
+inlineRowFileDescriptionTop: 23px;
+inlineResultsMinWidth: 64px;
+inlineDurationMargin: 3px;
+
+editTextArea: InputArea(defaultInputArea) {
+	textMargins: margins(1px, 6px, 1px, 4px);
+	heightMax: 256px;
+}
+
+toastFont: normalFont;
+toastMaxWidth: 480px;
+toastMinMargin: 13px;
+toastBg: medviewSaveMsg;
+toastFg: #FFF;
+toastPadding: margins(19px, 13px, 19px, 12px);
+toastFadeInDuration: 200;
+toastFadeOutDuration: 1000;
+
+infoButton: PeerAvatarButton {
+	size: topBarHeight;
+	photoSize: 42px;
+}
diff --git a/Telegram/Resources/basic_types.style b/Telegram/Resources/basic_types.style
new file mode 100644
index 000000000..750a52cea
--- /dev/null
+++ b/Telegram/Resources/basic_types.style
@@ -0,0 +1,413 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+
+textStyle {
+	linkFlags: font;
+	linkFlagsOver: font;
+	linkFg: color;
+	linkFgDown: color;
+	monoFg: color;
+	selectBg: color;
+	selectOverlay: color;
+	lineHeight: pixels;
+}
+
+linkButton {
+	color: color;
+	overColor: color;
+	downColor: color;
+	font: font;
+	overFont: font;
+}
+
+sysButton {
+	size: size;
+	img: sprite;
+	color: color;
+	overColor: color;
+	duration: int;
+}
+
+flatButton {
+	color: color;
+	overColor: color;
+	downColor: color;
+
+	bgColor: color;
+	overBgColor: color;
+	downBgColor: color;
+
+	width: pixels;
+	height: pixels;
+
+	textTop: pixels;
+	overTextTop: pixels;
+	downTextTop: pixels;
+
+	font: font;
+	overFont: font;
+	duration: int;
+	cursor: cursor;
+}
+
+iconedButton {
+	icon: sprite;
+	iconPos: point;
+	downIcon: sprite;
+	downIconPos: point;
+
+	color: color;
+	bgColor: color;
+	overBgColor: color;
+	width: pixels;
+	height: pixels;
+	font: font;
+
+	opacity: double;
+	overOpacity: double;
+
+	textPos: point;
+	downTextPos: point;
+
+	duration: int;
+	cursor: cursor;
+}
+
+flatCheckbox {
+	textColor: color;
+	bgColor: color;
+	disColor: color;
+
+	width: pixels;
+	height: pixels;
+	textTop: pixels;
+	textLeft: pixels;
+	font: font;
+	duration: int;
+	bgFunc: transition;
+	cursor: cursor;
+
+	disabledCursor: cursor;
+
+	imageRect: sprite;
+	chkImageRect: sprite;
+	overImageRect: sprite;
+	chkOverImageRect: sprite;
+	disImageRect: sprite;
+	chkDisImageRect: sprite;
+
+	imagePos: point;
+}
+
+flatInput {
+	textColor: color;
+	bgColor: color;
+	bgActive: color;
+	width: pixels;
+	height: pixels;
+	textMrg: margins;
+	align: align;
+	font: font;
+	cursor: cursor;
+
+	imgRect: sprite;
+	imgPos: point;
+
+	borderWidth: pixels;
+	borderColor: color;
+	borderActive: color;
+	borderError: color;
+
+	phColor: color;
+	phFocusColor: color;
+	phPos: point;
+	phAlign: align;
+	phShift: pixels;
+	phDuration: int;
+	phLeftFunc: transition;
+	phAlphaFunc: transition;
+	phColorFunc: transition;
+}
+
+flatTextarea {
+	textColor: color;
+	bgColor: color;
+	width: pixels;
+	textMrg: margins;
+	align: align;
+	font: font;
+	cursor: cursor;
+
+	phColor: color;
+	phFocusColor: color;
+	phPos: point;
+	phAlign: align;
+	phShift: pixels;
+	phDuration: int;
+	phLeftFunc: transition;
+	phAlphaFunc: transition;
+	phColorFunc: transition;
+}
+
+flatScroll {
+	barColor: color;
+	bgColor: color;
+	barOverColor: color;
+	bgOverColor: color;
+
+	round: pixels;
+
+	width: pixels;
+	minHeight: pixels;
+	deltax: pixels;
+	deltat: pixels;
+	deltab: pixels;
+
+	topsh: pixels;
+	bottomsh: pixels;
+	shColor: color;
+
+	duration: int;
+	hiding: int;
+}
+
+countryInput {
+	width: pixels;
+	height: pixels;
+	top: pixels;
+	bgColor: color;
+	ptrSize: size;
+	textMrg: margins;
+	font: font;
+	align: align;
+}
+
+slider {
+	color: color;
+	thikness: pixels;
+
+	width: pixels;
+	bar: sprite;
+}
+
+flatLabel {
+	font: font;
+	minWidth: pixels;
+	width: pixels;
+	align: align;
+}
+
+switcher {
+	border: pixels;
+	borderColor: color;
+
+	bgColor: color;
+	bgHovered: color;
+	bgActive: color;
+
+	height: pixels;
+
+	font: font;
+	textColor: color;
+	activeColor: color;
+
+	duration: int;
+}
+
+dropdown {
+	border: pixels;
+	borderColor: color;
+
+	padding: margins;
+	shadow: sprite;
+	shadowShift: pixels;
+
+	duration: int;
+	width: pixels;
+}
+
+PopupMenu {
+	skip: pixels;
+
+	shadow: sprite;
+	shadowShift: pixels;
+
+	itemBg: color;
+	itemBgOver: color;
+	itemFg: color;
+	itemFgOver: color;
+	itemFgDisabled: color;
+	itemFgShortcut: color;
+	itemFgShortcutOver: color;
+	itemFgShortcutDisabled: color;
+	itemPadding: margins;
+	itemFont: font;
+
+	separatorPadding: margins;
+	separatorWidth: pixels;
+	separatorFg: color;
+
+	arrow: sprite;
+
+	duration: int;
+
+	widthMin: pixels;
+	widthMax: pixels;
+}
+
+Tooltip {
+	textBg: color;
+	textFg: color;
+	textFont: font;
+	textBorder: color;
+	textPadding: margins;
+
+	shift: point;
+	skip: pixels;
+
+	widthMax: pixels;
+	linesMax: int;
+}
+
+botKeyboardButton {
+	margin: pixels;
+	padding: pixels;
+	height: pixels;
+	textTop: pixels;
+	downTextTop: pixels;
+}
+
+BoxButton {
+	textFg: color;
+	textFgOver: color;
+	textBg: color; // rect of textBg with rounded rect of textBgOver upon it
+	textBgOver: color;
+
+	width: pixels;
+	height: pixels;
+
+	textTop: pixels;
+
+	font: font;
+	duration: int;
+}
+
+Checkbox {
+	textFg: color;
+	textBg: color;
+
+	checkFg: color;
+	checkFgOver: color;
+	checkFgActive: color;
+
+	width: pixels;
+	height: pixels;
+
+	textPosition: point;
+	diameter: pixels;
+	thickness: pixels;
+	checkIcon: sprite;
+
+	font: font;
+	duration: int;
+}
+
+Radiobutton {
+	textFg: color;
+	textBg: color;
+
+	checkFg: color;
+	checkFgOver: color;
+	checkFgActive: color;
+
+	width: pixels;
+	height: pixels;
+
+	textPosition: point;
+	diameter: pixels;
+	thickness: pixels;
+	checkSkip: pixels;
+
+	font: font;
+	duration: int;
+}
+
+InputArea {
+	textFg: color;
+	textMargins: margins;
+
+	placeholderFg: color;
+	placeholderFgActive: color;
+	placeholderMargins: margins;
+	placeholderAlign: align;
+	placeholderShift: pixels;
+
+	duration: int;
+
+	borderFg: color;
+	borderFgActive: color;
+	borderFgError: color;
+
+	border: pixels;
+	borderActive: pixels;
+	borderError: pixels;
+
+	font: font;
+
+	width: pixels;
+	heightMin: pixels;
+	heightMax: pixels;
+}
+
+InputField {
+	textFg: color;
+	textMargins: margins;
+	textAlign: align;
+
+	placeholderFg: color;
+	placeholderFgActive: color;
+	placeholderMargins: margins;
+	placeholderAlign: align;
+	placeholderShift: pixels;
+
+	duration: int;
+
+	borderFg: color;
+	borderFgActive: color;
+	borderFgError: color;
+
+	border: pixels;
+	borderActive: pixels;
+	borderError: pixels;
+
+	font: font;
+
+	width: pixels;
+	height: pixels;
+
+	iconSprite: sprite;
+	iconPosition: point;
+}
+
+PeerAvatarButton {
+	size: pixels;
+	photoSize: pixels;
+}
diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt
index f63bb4db3..003796f0c 100644
--- a/Telegram/Resources/style.txt
+++ b/Telegram/Resources/style.txt
@@ -18,10 +18,8 @@ to link the code of portions of this program with the OpenSSL library.
 Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
-using "Resources/style_classes.txt";
-
-defaultFontFamily: "Open Sans";
-semibold: "Open Sans Semibold";
+defaultFontFamily: 'Open Sans';
+semibold: 'Open Sans Semibold';
 
 fsize: 13px;
 normalFont: font(fsize);
@@ -385,7 +383,7 @@ btnDefIconed: iconedButton {
 	font: font(fsize);
 
 	opacity: 0.78;
-	overOpacity: 1.;
+	overOpacity: 1;
 
 	textPos: point(0px, 0px);
 	downTextPos: point(0px, 0px);
@@ -433,7 +431,7 @@ titleBackButton: iconedButton(btnDefIconed) {
 	width: -30px;
 	height: 39px;
 
-	opacity: 1.;
+	opacity: 1;
 	cursor: cursor(default);
 
 	textPos: point(23px, 10px);
@@ -1117,8 +1115,8 @@ msgLinkColor: #2a6dc2;
 msgPressedLinkColor: #004bad;
 msgSkip: 40px;
 msgPtr: 8px;
-msgBG: ":/gui/art/bg.jpg";
-msgBG0: ":/gui/art/bg0.png";
+msgBG: ':/gui/art/bg.jpg';
+msgBG0: ':/gui/art/bg0.png';
 
 msgCheckPos: point(3px, 1px);
 msgSendingImg: sprite(260px, 20px, 20px, 20px);
@@ -1549,7 +1547,7 @@ reportSpamButton: flatButton(reportSpamHide) {
 reportSpamSeparator: 30px;
 reportSpamBg: #fffffff0;
 
-newMsgSound: ":/gui/art/newmsg.wav";
+newMsgSound: ':/gui/art/newmsg.wav';
 
 unreadBarHeight: 32px;
 unreadBarMargin: 8px;
@@ -2189,7 +2187,7 @@ mvDropdown: dropdown(dropdownDef) {
 	shadow: sprite(0px, 0px, 0px, 0px);
 	padding: margins(11px, 12px, 11px, 12px);
 
-	border: 0px;
+	border: 0;
 	width: 182px;
 }
 mvButton: iconedButton(btnDefIconed) {
@@ -2197,8 +2195,8 @@ mvButton: iconedButton(btnDefIconed) {
 	overBgColor: #505050;
 	font: font(fsize);
 
-	opacity: 1.;
-	overOpacity: 1.;
+	opacity: 1;
+	overOpacity: 1;
 
 	width: -32px;
 	height: 36px;
@@ -2298,8 +2296,8 @@ overviewFileExtFont: font(18px semibold);
 
 // Mac specific
 
-macAccessoryWidth: 450.;
-macAccessoryHeight: 90.;
+macAccessoryWidth: 450;
+macAccessoryHeight: 90;
 macEnableFilterAdd: 2;
 macEnableFilterTop: 5;
 macSelectorTop: 6;
@@ -2312,8 +2310,8 @@ btnContext: iconedButton(btnDefIconed) {
 	overBgColor: btnWhiteHover;
 	font: font(14px);
 
-	opacity: 1.;
-	overOpacity: 1.;
+	opacity: 1;
+	overOpacity: 1;
 
 	width: -32px;
 	height: 36px;
@@ -2400,8 +2398,8 @@ passcodeSkip: 31px;
 
 mentionHeight: 40px;
 mentionScroll: flatScroll(scrollDef) {
-	topsh: 0px;
-	bottomsh: 0px;
+	topsh: 0;
+	bottomsh: 0;
 }
 mentionPadding: margins(8px, 5px, 8px, 5px);
 mentionTop: 11px;
@@ -2421,7 +2419,7 @@ sessionsHeight: 440px;
 sessionHeight: 70px;
 sessionCurrentPadding: margins(0px, 7px, 0px, 4px);
 sessionCurrentHeight: 118px;
-sessionPadding: margins(21px, 10px, 21px, 0px);
+sessionPadding: margins(21px, 10px, 21px, 0);
 sessionNameFont: msgNameFont;
 sessionActiveFont: msgDateFont;
 sessionActiveColor: #aaa;
diff --git a/Telegram/Resources/style_classes.txt b/Telegram/Resources/style_classes.txt
index 27079bf5b..a3405a048 100644
--- a/Telegram/Resources/style_classes.txt
+++ b/Telegram/Resources/style_classes.txt
@@ -26,7 +26,7 @@ textStyle {
 	monoFg: color;
 	selectBg: color;
 	selectOverlay: color;
-	lineHeight: pixels;
+	lineHeight: number;
 }
 
 linkButton {
@@ -42,7 +42,7 @@ sysButton {
 	img: sprite;
 	color: color;
 	overColor: color;
-	duration: int;
+	duration: number;
 }
 
 flatButton {
@@ -54,16 +54,16 @@ flatButton {
 	overBgColor: color;
 	downBgColor: color;
 
-	width: pixels;
-	height: pixels;
+	width: number;
+	height: number;
 
-	textTop: pixels;
-	overTextTop: pixels;
-	downTextTop: pixels;
+	textTop: number;
+	overTextTop: number;
+	downTextTop: number;
 
 	font: font;
 	overFont: font;
-	duration: int;
+	duration: number;
 	cursor: cursor;
 }
 
@@ -76,17 +76,17 @@ iconedButton {
 	color: color;
 	bgColor: color;
 	overBgColor: color;
-	width: pixels;
-	height: pixels;
+	width: number;
+	height: number;
 	font: font;
 
-	opacity: double;
-	overOpacity: double;
+	opacity: number;
+	overOpacity: number;
 
 	textPos: point;
 	downTextPos: point;
 
-	duration: int;
+	duration: number;
 	cursor: cursor;
 }
 
@@ -95,12 +95,12 @@ flatCheckbox {
 	bgColor: color;
 	disColor: color;
 
-	width: pixels;
-	height: pixels;
-	textTop: pixels;
-	textLeft: pixels;
+	width: number;
+	height: number;
+	textTop: number;
+	textLeft: number;
 	font: font;
-	duration: int;
+	duration: number;
 	bgFunc: transition;
 	cursor: cursor;
 
@@ -120,8 +120,8 @@ flatInput {
 	textColor: color;
 	bgColor: color;
 	bgActive: color;
-	width: pixels;
-	height: pixels;
+	width: number;
+	height: number;
 	textMrg: margins;
 	align: align;
 	font: font;
@@ -130,7 +130,7 @@ flatInput {
 	imgRect: sprite;
 	imgPos: point;
 
-	borderWidth: pixels;
+	borderWidth: number;
 	borderColor: color;
 	borderActive: color;
 	borderError: color;
@@ -139,8 +139,8 @@ flatInput {
 	phFocusColor: color;
 	phPos: point;
 	phAlign: align;
-	phShift: pixels;
-	phDuration: int;
+	phShift: number;
+	phDuration: number;
 	phLeftFunc: transition;
 	phAlphaFunc: transition;
 	phColorFunc: transition;
@@ -149,7 +149,7 @@ flatInput {
 flatTextarea {
 	textColor: color;
 	bgColor: color;
-	width: pixels;
+	width: number;
 	textMrg: margins;
 	align: align;
 	font: font;
@@ -159,8 +159,8 @@ flatTextarea {
 	phFocusColor: color;
 	phPos: point;
 	phAlign: align;
-	phShift: pixels;
-	phDuration: int;
+	phShift: number;
+	phDuration: number;
 	phLeftFunc: transition;
 	phAlphaFunc: transition;
 	phColorFunc: transition;
@@ -172,26 +172,26 @@ flatScroll {
 	barOverColor: color;
 	bgOverColor: color;
 
-	round: pixels;
+	round: number;
 
-	width: pixels;
-	minHeight: pixels;
-	deltax: pixels;
-	deltat: pixels;
-	deltab: pixels;
+	width: number;
+	minHeight: number;
+	deltax: number;
+	deltat: number;
+	deltab: number;
 
-	topsh: pixels;
-	bottomsh: pixels;
+	topsh: number;
+	bottomsh: number;
 	shColor: color;
 
-	duration: int;
-	hiding: int;
+	duration: number;
+	hiding: number;
 }
 
 countryInput {
-	width: pixels;
-	height: pixels;
-	top: pixels;
+	width: number;
+	height: number;
+	top: number;
 	bgColor: color;
 	ptrSize: size;
 	textMrg: margins;
@@ -201,53 +201,53 @@ countryInput {
 
 slider {
 	color: color;
-	thikness: pixels;
+	thikness: number;
 
-	width: pixels;
+	width: number;
 	bar: sprite;
 }
 
 flatLabel {
 	font: font;
-	minWidth: pixels;
-	width: pixels;
+	minWidth: number;
+	width: number;
 	align: align;
 }
 
 switcher {
-	border: pixels;
+	border: number;
 	borderColor: color;
 
 	bgColor: color;
 	bgHovered: color;
 	bgActive: color;
 
-	height: pixels;
+	height: number;
 
 	font: font;
 	textColor: color;
 	activeColor: color;
 
-	duration: int;
+	duration: number;
 }
 
 dropdown {
-	border: pixels;
+	border: number;
 	borderColor: color;
 
 	padding: margins;
 	shadow: sprite;
-	shadowShift: pixels;
+	shadowShift: number;
 
-	duration: int;
-	width: pixels;
+	duration: number;
+	width: number;
 }
 
 PopupMenu {
-	skip: pixels;
+	skip: number;
 
 	shadow: sprite;
-	shadowShift: pixels;
+	shadowShift: number;
 
 	itemBg: color;
 	itemBgOver: color;
@@ -261,15 +261,15 @@ PopupMenu {
 	itemFont: font;
 
 	separatorPadding: margins;
-	separatorWidth: pixels;
+	separatorWidth: number;
 	separatorFg: color;
 
 	arrow: sprite;
 
-	duration: int;
+	duration: number;
 
-	widthMin: pixels;
-	widthMax: pixels;
+	widthMin: number;
+	widthMax: number;
 }
 
 Tooltip {
@@ -280,18 +280,18 @@ Tooltip {
 	textPadding: margins;
 
 	shift: point;
-	skip: pixels;
+	skip: number;
 
-	widthMax: pixels;
-	linesMax: int;
+	widthMax: number;
+	linesMax: number;
 }
 
 botKeyboardButton {
-	margin: pixels;
-	padding: pixels;
-	height: pixels;
-	textTop: pixels;
-	downTextTop: pixels;
+	margin: number;
+	padding: number;
+	height: number;
+	textTop: number;
+	downTextTop: number;
 }
 
 BoxButton {
@@ -300,13 +300,13 @@ BoxButton {
 	textBg: color; // rect of textBg with rounded rect of textBgOver upon it
 	textBgOver: color;
 
-	width: pixels;
-	height: pixels;
+	width: number;
+	height: number;
 
-	textTop: pixels;
+	textTop: number;
 
 	font: font;
-	duration: int;
+	duration: number;
 }
 
 Checkbox {
@@ -317,16 +317,16 @@ Checkbox {
 	checkFgOver: color;
 	checkFgActive: color;
 
-	width: pixels;
-	height: pixels;
+	width: number;
+	height: number;
 
 	textPosition: point;
-	diameter: pixels;
-	thickness: pixels;
+	diameter: number;
+	thickness: number;
 	checkIcon: sprite;
 
 	font: font;
-	duration: int;
+	duration: number;
 }
 
 Radiobutton {
@@ -337,16 +337,16 @@ Radiobutton {
 	checkFgOver: color;
 	checkFgActive: color;
 
-	width: pixels;
-	height: pixels;
+	width: number;
+	height: number;
 
 	textPosition: point;
-	diameter: pixels;
-	thickness: pixels;
-	checkSkip: pixels;
+	diameter: number;
+	thickness: number;
+	checkSkip: number;
 
 	font: font;
-	duration: int;
+	duration: number;
 }
 
 InputArea {
@@ -357,23 +357,23 @@ InputArea {
 	placeholderFgActive: color;
 	placeholderMargins: margins;
 	placeholderAlign: align;
-	placeholderShift: pixels;
+	placeholderShift: number;
 
-	duration: int;
+	duration: number;
 
 	borderFg: color;
 	borderFgActive: color;
 	borderFgError: color;
 
-	border: pixels;
-	borderActive: pixels;
-	borderError: pixels;
+	border: number;
+	borderActive: number;
+	borderError: number;
 
 	font: font;
 
-	width: pixels;
-	heightMin: pixels;
-	heightMax: pixels;
+	width: number;
+	heightMin: number;
+	heightMax: number;
 }
 
 InputField {
@@ -385,28 +385,28 @@ InputField {
 	placeholderFgActive: color;
 	placeholderMargins: margins;
 	placeholderAlign: align;
-	placeholderShift: pixels;
+	placeholderShift: number;
 
-	duration: int;
+	duration: number;
 
 	borderFg: color;
 	borderFgActive: color;
 	borderFgError: color;
 
-	border: pixels;
-	borderActive: pixels;
-	borderError: pixels;
+	border: number;
+	borderActive: number;
+	borderError: number;
 
 	font: font;
 
-	width: pixels;
-	height: pixels;
+	width: number;
+	height: number;
 
 	iconSprite: sprite;
 	iconPosition: point;
 }
 
 PeerAvatarButton {
-	size: pixels;
-	photoSize: pixels;
+	size: number;
+	photoSize: number;
 }
diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp
index d91437298..c61401d69 100644
--- a/Telegram/SourceFiles/app.cpp
+++ b/Telegram/SourceFiles/app.cpp
@@ -82,7 +82,7 @@ namespace {
 
 	HistoryItem *hoveredItem = 0, *pressedItem = 0, *hoveredLinkItem = 0, *pressedLinkItem = 0, *contextItem = 0, *mousedItem = 0;
 
-	QPixmap *sprite = 0, *emoji = 0, *emojiLarge = 0;
+	QPixmap *emoji = 0, *emojiLarge = 0;
 	style::font monofont;
 
 	struct CornersPixmaps {
@@ -1993,23 +1993,6 @@ namespace {
 			if (family.isEmpty()) family = QFontDatabase::systemFont(QFontDatabase::FixedFont).family();
 			::monofont = style::font(st::normalFont->f.pixelSize(), 0, family);
 		}
-		if (!::sprite) {
-			QString spriteFilePostfix;
-			if (cRetina() || cScale() == dbisTwo) {
-				spriteFilePostfix = qsl("_200x");
-			} else if (cScale() == dbisOneAndQuarter) {
-				spriteFilePostfix = qsl("_125x");
-			} else if (cScale() == dbisOneAndHalf) {
-				spriteFilePostfix = qsl("_150x");
-			}
-			QString spriteFile = qsl(":/gui/art/sprite") + spriteFilePostfix + qsl(".png");
-			if (rtl()) {
-				::sprite = new QPixmap(QPixmap::fromImage(QImage(spriteFile).mirrored(true, false)));
-			} else {
-				::sprite = new QPixmap(spriteFile);
-			}
-            if (cRetina()) ::sprite->setDevicePixelRatio(cRetinaFactor());
-		}
 		emojiInit();
 		if (!::emoji) {
 			::emoji = new QPixmap(QLatin1String(EName));
@@ -2070,8 +2053,6 @@ namespace {
 	void deinitMedia() {
 		audioFinish();
 
-		delete ::sprite;
-		::sprite = 0;
 		delete ::emoji;
 		::emoji = 0;
 		delete ::emojiLarge;
@@ -2149,7 +2130,7 @@ namespace {
 	}
 
 	const QPixmap &sprite() {
-		return *::sprite;
+		return style::spritePixmap();
 	}
 
 	const QPixmap &emoji() {
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
index 400fc9051..d33e06ee4 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
@@ -36,7 +36,7 @@ class LogStream;
 // Interface for reading a cleaned from comments file by basic tokens.
 class BasicTokenizedFile {
 public:
-	BasicTokenizedFile(const QString &filepath);
+	explicit BasicTokenizedFile(const QString &filepath);
 	BasicTokenizedFile(const BasicTokenizedFile &other) = delete;
 	BasicTokenizedFile &operator=(const BasicTokenizedFile &other) = delete;
 
diff --git a/Telegram/SourceFiles/codegen/common/checked_utf8_string.h b/Telegram/SourceFiles/codegen/common/checked_utf8_string.h
index 5ce217067..69441f838 100644
--- a/Telegram/SourceFiles/codegen/common/checked_utf8_string.h
+++ b/Telegram/SourceFiles/codegen/common/checked_utf8_string.h
@@ -36,9 +36,9 @@ public:
 	CheckedUtf8String(const CheckedUtf8String &other) = default;
 	CheckedUtf8String &operator=(const CheckedUtf8String &other) = default;
 
-	CheckedUtf8String(const char *string, int size = -1);
-	CheckedUtf8String(const QByteArray &string);
-	CheckedUtf8String(const ConstUtf8String &string);
+	explicit CheckedUtf8String(const char *string, int size = -1);
+	explicit CheckedUtf8String(const QByteArray &string);
+	explicit CheckedUtf8String(const ConstUtf8String &string);
 
 	bool isValid() const {
 		return valid_;
diff --git a/Telegram/SourceFiles/codegen/common/clean_file.h b/Telegram/SourceFiles/codegen/common/clean_file.h
index 80d4f73e3..82edf5a79 100644
--- a/Telegram/SourceFiles/codegen/common/clean_file.h
+++ b/Telegram/SourceFiles/codegen/common/clean_file.h
@@ -32,7 +32,7 @@ namespace common {
 // Reads a file removing all C-style comments.
 class CleanFile {
 public:
-	CleanFile(const QString &filepath);
+	explicit CleanFile(const QString &filepath);
 	CleanFile(const CleanFile &other) = delete;
 	CleanFile &operator=(const CleanFile &other) = delete;
 
diff --git a/Telegram/SourceFiles/codegen/common/const_utf8_string.h b/Telegram/SourceFiles/codegen/common/const_utf8_string.h
index 18f0849c8..d9b3ac03a 100644
--- a/Telegram/SourceFiles/codegen/common/const_utf8_string.h
+++ b/Telegram/SourceFiles/codegen/common/const_utf8_string.h
@@ -31,7 +31,7 @@ namespace common {
 // Not null-terminated! It does not hold any ownership.
 class ConstUtf8String {
 public:
-	ConstUtf8String(const char *string, int size = -1) : string_(string) {
+	explicit ConstUtf8String(const char *string, int size = -1) : string_(string) {
 		if (size < 0) {
 			size = strlen(string);
 		}
diff --git a/Telegram/SourceFiles/codegen/common/cpp_file.cpp b/Telegram/SourceFiles/codegen/common/cpp_file.cpp
new file mode 100644
index 000000000..14d4d87f6
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/cpp_file.cpp
@@ -0,0 +1,135 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/common/cpp_file.h"
+
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+
+namespace codegen {
+namespace common {
+namespace {
+
+void writeLicense(QTextStream &stream, const ProjectInfo &project) {
+	stream << "\
+/*\n\
+WARNING! All changes made in this file will be lost!\n\
+Created from '" << project.source << "' by '" << project.name << "'\n\
+\n\
+This file is part of Telegram Desktop,\n\
+the official desktop version of Telegram messaging app, see https://telegram.org\n\
+\n\
+Telegram Desktop is free software: you can redistribute it and/or modify\n\
+it under the terms of the GNU General Public License as published by\n\
+the Free Software Foundation, either version 3 of the License, or\n\
+(at your option) any later version.\n\
+\n\
+It is distributed in the hope that it will be useful,\n\
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
+GNU General Public License for more details.\n\
+\n\
+In addition, as a special exception, the copyright holders give permission\n\
+to link the code of portions of this program with the OpenSSL library.\n\
+\n\
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\n\
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org\n\
+*/\n";
+}
+
+} // namespace
+
+CppFile::CppFile(const QString &path, const ProjectInfo &project)
+: stream_(&content_)
+, forceReGenerate_(project.forceReGenerate) {
+	bool cpp = path.toLower().endsWith(".cpp");
+
+	QFileInfo info(path);
+	info.dir().mkpath(".");
+	filepath_ = info.absoluteFilePath();
+
+	writeLicense(stream_, project);
+	if (cpp) {
+		if (!project.precompiledHeader.isEmpty()) {
+			include(project.precompiledHeader);
+		}
+		include(info.baseName() + ".h").newline();
+	} else {
+		stream() << "#pragma once";
+		newline().newline();
+	}
+}
+
+CppFile &CppFile::include(const QString &header) {
+	stream() << "#include \"" << header << "\"";
+	return newline();
+}
+
+CppFile &CppFile::pushNamespace(const QString &name) {
+	namespaces_.push_back(name);
+
+	stream() << "namespace";
+	if (!name.isEmpty()) {
+		stream() << ' ' << name;
+	}
+	stream() << " {";
+	return newline();
+}
+
+CppFile &CppFile::popNamespace() {
+	if (namespaces_.isEmpty()) {
+		return *this;
+	}
+	auto name = namespaces_.back();
+	namespaces_.pop_back();
+
+	stream() << "} // namespace";
+	if (!name.isEmpty()) {
+		stream() << ' ' << name;
+	}
+	return newline();
+}
+
+bool CppFile::finalize() {
+	while (!namespaces_.isEmpty()) {
+		popNamespace();
+	}
+	stream_.flush();
+
+	QFile file(filepath_);
+	if (!forceReGenerate_ && file.open(QIODevice::ReadOnly)) {
+		if (file.readAll() == content_) {
+			file.close();
+			return true;
+		}
+		file.close();
+	}
+
+	if (!file.open(QIODevice::WriteOnly)) {
+		return false;
+	}
+	if (file.write(content_) != content_.size()) {
+		return false;
+	}
+	return true;
+}
+
+} // namespace common
+} // namespace codegen
\ No newline at end of file
diff --git a/Telegram/SourceFiles/codegen/common/cpp_file.h b/Telegram/SourceFiles/codegen/common/cpp_file.h
new file mode 100644
index 000000000..31691103a
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/common/cpp_file.h
@@ -0,0 +1,70 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+#include <QtCore/QVector>
+#include <QtCore/QTextStream>
+
+namespace codegen {
+namespace common {
+
+struct ProjectInfo {
+	QString name;
+	QString source;
+	QString precompiledHeader;
+	bool forceReGenerate;
+};
+
+// Creates a file with license header and codegen warning.
+class CppFile {
+public:
+	// If "basepath" is empty the folder containing "path" will be chosen.
+	// File ending with .cpp will be treated as source, otherwise like header.
+	CppFile(const QString &path, const ProjectInfo &project);
+
+	QTextStream &stream() {
+		return stream_;
+	}
+
+	CppFile &newline() {
+		stream() << "\n";
+		return *this;
+	}
+	CppFile &include(const QString &header);
+
+	// Empty name adds anonymous namespace.
+	CppFile &pushNamespace(const QString &name = QString());
+	CppFile &popNamespace();
+
+	bool finalize();
+
+private:
+	QString filepath_;
+	QByteArray content_;
+	QTextStream stream_;
+	QVector<QString> namespaces_;
+	bool forceReGenerate_;
+
+};
+
+} // namespace common
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/generator.cpp b/Telegram/SourceFiles/codegen/numbers/generator.cpp
new file mode 100644
index 000000000..e80f48297
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/generator.cpp
@@ -0,0 +1,54 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/numbers/generator.h"
+
+#include <QtCore/QDir>
+#include <QtCore/QSet>
+#include <functional>
+
+namespace codegen {
+namespace numbers {
+namespace {
+
+} // namespace
+
+Generator::Generator(const Rules &rules, const QString &destBasePath, const common::ProjectInfo &project)
+: rules_(rules)
+, basePath_(destBasePath)
+, project_(project) {
+}
+
+bool Generator::writeHeader() {
+	header_ = std::make_unique<common::CppFile>(basePath_ + ".h", project_);
+
+	header_->stream() << "QVector<int> phoneNumberParse(const QString &number);\n";
+
+	return header_->finalize();
+}
+
+bool Generator::writeSource() {
+	source_ = std::make_unique<common::CppFile>(basePath_ + ".cpp", project_);
+
+	return source_->finalize();
+}
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/generator.h b/Telegram/SourceFiles/codegen/numbers/generator.h
new file mode 100644
index 000000000..f7bff73e9
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/generator.h
@@ -0,0 +1,50 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <QtCore/QString>
+#include <QtCore/QSet>
+#include "codegen/common/cpp_file.h"
+#include "codegen/numbers/parsed_file.h"
+
+namespace codegen {
+namespace numbers {
+
+class Generator {
+public:
+	Generator(const Rules &rules, const QString &destBasePath, const common::ProjectInfo &project);
+	Generator(const Generator &other) = delete;
+	Generator &operator=(const Generator &other) = delete;
+
+	bool writeHeader();
+	bool writeSource();
+
+private:
+	const Rules &rules_;
+	QString basePath_;
+	const common::ProjectInfo &project_;
+	std::unique_ptr<common::CppFile> source_, header_;
+
+};
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/main.cpp b/Telegram/SourceFiles/codegen/numbers/main.cpp
new file mode 100644
index 000000000..ac7cddc0c
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/main.cpp
@@ -0,0 +1,36 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include <QtCore/QCoreApplication>
+
+#include "codegen/numbers/options.h"
+#include "codegen/numbers/processor.h"
+
+int main(int argc, char *argv[]) {
+	QCoreApplication app(argc, argv);
+
+	auto options = codegen::numbers::parseOptions();
+	if (options.inputPath.isEmpty()) {
+		return -1;
+	}
+
+	codegen::numbers::Processor processor(options);
+	return processor.launch();
+}
diff --git a/Telegram/SourceFiles/codegen/numbers/options.cpp b/Telegram/SourceFiles/codegen/numbers/options.cpp
new file mode 100644
index 000000000..abf3e776b
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/options.cpp
@@ -0,0 +1,74 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/numbers/options.h"
+
+#include <ostream>
+#include <QtCore/QCoreApplication>
+#include "codegen/common/logging.h"
+
+namespace codegen {
+namespace numbers {
+namespace {
+
+constexpr int kErrorOutputPathExpected      = 902;
+constexpr int kErrorInputPathExpected       = 903;
+constexpr int kErrorSingleInputPathExpected = 904;
+
+} // namespace
+
+using common::logError;
+
+Options parseOptions() {
+	Options result;
+	auto args(QCoreApplication::instance()->arguments());
+	for (int i = 1, count = args.size(); i < count; ++i) { // skip first
+		const auto &arg(args.at(i));
+
+		// Output path
+		if (arg == "-o") {
+			if (++i == count) {
+				logError(kErrorOutputPathExpected, "Command Line") << "output path expected after -o";
+				return Options();
+			} else {
+				result.outputPath = args.at(i);
+			}
+		} else if (arg.startsWith("-o")) {
+			result.outputPath = arg.mid(2);
+
+		// Input path
+		} else {
+			if (result.inputPath.isEmpty()) {
+				result.inputPath = arg;
+			} else {
+				logError(kErrorSingleInputPathExpected, "Command Line") << "only one input path expected";
+				return Options();
+			}
+		}
+	}
+	if (result.inputPath.isEmpty()) {
+		logError(kErrorInputPathExpected, "Command Line") << "input path expected";
+		return Options();
+	}
+	return result;
+}
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/options.h b/Telegram/SourceFiles/codegen/numbers/options.h
new file mode 100644
index 000000000..b2ed1aae4
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/options.h
@@ -0,0 +1,38 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+
+namespace codegen {
+namespace numbers {
+
+struct Options {
+	QString outputPath = ".";
+	QString inputPath;
+};
+
+// Parsing failed if inputPath is empty in the result.
+Options parseOptions();
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp b/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
new file mode 100644
index 000000000..3dc5508af
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
@@ -0,0 +1,66 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/numbers/parsed_file.h"
+
+#include <iostream>
+#include <QtCore/QMap>
+#include <QtCore/QDir>
+#include <QtCore/QRegularExpression>
+#include "codegen/common/basic_tokenized_file.h"
+#include "codegen/common/logging.h"
+
+using BasicToken = codegen::common::BasicTokenizedFile::Token;
+using BasicType = BasicToken::Type;
+
+namespace codegen {
+namespace numbers {
+namespace {
+
+} // namespace
+
+ParsedFile::ParsedFile(const Options &options)
+: file_(options.inputPath)
+, options_(options) {
+}
+
+bool ParsedFile::read() {
+	if (!file_.read()) {
+		return false;
+	}
+
+	auto filepath = QFileInfo(options_.inputPath).absoluteFilePath();
+	do {
+		if (auto startToken = file_.getToken(BasicType::Name)) {
+		}
+		if (file_.atEnd()) {
+			break;
+		}
+		logErrorUnexpectedToken() << "numbers rule";
+	} while (!failed());
+
+	if (failed()) {
+		result_.data.clear();
+	}
+	return !failed();
+}
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/parsed_file.h b/Telegram/SourceFiles/codegen/numbers/parsed_file.h
new file mode 100644
index 000000000..7f158b972
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/parsed_file.h
@@ -0,0 +1,74 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <string>
+#include "codegen/common/basic_tokenized_file.h"
+#include "codegen/numbers/options.h"
+
+namespace codegen {
+namespace numbers {
+
+struct Rule {
+};
+struct Rules {
+	QVector<Rule> data;
+};
+
+// Parses an input file to the internal struct.
+class ParsedFile {
+public:
+	explicit ParsedFile(const Options &options);
+	ParsedFile(const ParsedFile &other) = delete;
+	ParsedFile &operator=(const ParsedFile &other) = delete;
+
+	bool read();
+
+	Rules getResult() {
+		return result_;
+	}
+
+private:
+
+	bool failed() const {
+		return failed_ || file_.failed();
+	}
+
+	// Log error to std::cerr with 'code' at the current position in file.
+	common::LogStream logError(int code) {
+		failed_ = true;
+		return file_.logError(code);
+	}
+	common::LogStream logErrorUnexpectedToken() {
+		failed_ = true;
+		return file_.logErrorUnexpectedToken();
+	}
+
+	common::BasicTokenizedFile file_;
+	Options options_;
+	bool failed_ = false;
+	Rules result_;
+
+};
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/processor.cpp b/Telegram/SourceFiles/codegen/numbers/processor.cpp
new file mode 100644
index 000000000..e7d0baf3e
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/processor.cpp
@@ -0,0 +1,86 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/numbers/processor.h"
+
+#include <QtCore/QDir>
+#include <QtCore/QFileInfo>
+#include "codegen/common/cpp_file.h"
+#include "codegen/numbers/parsed_file.h"
+#include "codegen/numbers/generator.h"
+
+namespace codegen {
+namespace numbers {
+namespace {
+
+constexpr int kErrorCantWritePath = 851;
+
+} // namespace
+
+Processor::Processor(const Options &options)
+: parser_(std::make_unique<ParsedFile>(options))
+, options_(options) {
+}
+
+int Processor::launch() {
+	if (!parser_->read()) {
+		return -1;
+	}
+
+	auto result = parser_->getResult();
+	if (!write(result)) {
+		return -1;
+	}
+
+	return 0;
+}
+
+bool Processor::write(const Rules &rules) const {
+	QDir dir(options_.outputPath);
+	if (!dir.mkpath(".")) {
+		common::logError(kErrorCantWritePath, "Command Line") << "can not open path for writing: " << dir.absolutePath().toStdString();
+		return false;
+	}
+
+	QFileInfo srcFile(options_.inputPath);
+	QString dstFilePath = dir.absolutePath() + "/numbers";
+
+	common::ProjectInfo project = {
+		"codegen_style",
+		srcFile.fileName(),
+		"stdafx.h",
+		false, // forceReGenerate
+	};
+
+	Generator generator(rules, dstFilePath, project);
+	if (!generator.writeHeader()) {
+		return false;
+	}
+	if (!generator.writeSource()) {
+		return false;
+	}
+
+	return true;
+}
+
+Processor::~Processor() = default;
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/numbers/processor.h b/Telegram/SourceFiles/codegen/numbers/processor.h
new file mode 100644
index 000000000..e455e17d4
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/numbers/processor.h
@@ -0,0 +1,53 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <QtCore/QString>
+#include "codegen/numbers/options.h"
+
+namespace codegen {
+namespace numbers {
+class ParsedFile;
+struct Rules;
+
+// Walks through a file, parses it and generates number formatter.
+class Processor {
+public:
+	explicit Processor(const Options &options);
+	Processor(const Processor &other) = delete;
+	Processor &operator=(const Processor &other) = delete;
+
+	// Returns 0 on success.
+	int launch();
+
+	~Processor();
+
+private:
+	bool write(const Rules &rules) const;
+
+	std::unique_ptr<ParsedFile> parser_;
+	const Options &options_;
+
+};
+
+} // namespace numbers
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/generator.cpp b/Telegram/SourceFiles/codegen/style/generator.cpp
index 031b1ae3f..6609ef572 100644
--- a/Telegram/SourceFiles/codegen/style/generator.cpp
+++ b/Telegram/SourceFiles/codegen/style/generator.cpp
@@ -20,45 +20,533 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 #include "codegen/style/generator.h"
 
-#include <QtGui/QImage>
+#include <QtCore/QDir>
+#include <QtCore/QSet>
+#include <functional>
 #include "codegen/style/parsed_file.h"
 
+using Module = codegen::style::structure::Module;
+using Struct = codegen::style::structure::Struct;
+using Variable = codegen::style::structure::Variable;
+using Tag = codegen::style::structure::TypeTag;
+
 namespace codegen {
 namespace style {
 namespace {
 
-} // namespace
-
-Generator::Generator(const Options &options)
-: parser_(std::make_unique<ParsedFile>(options))
-, options_(options) {
-
+char hexChar(uchar ch) {
+	if (ch < 10) {
+		return '0' + ch;
+	} else if (ch < 16) {
+		return 'a' + (ch - 10);
+	}
+	return '0';
 }
 
-int Generator::process() {
-	if (!parser_->read()) {
-		return -1;
-	}
+char hexSecondChar(char ch) {
+	return hexChar((*reinterpret_cast<uchar*>(&ch)) << 4);
+}
 
-	const auto &result = parser_->data();
-	if (!write(result)) {
-		return -1;
-	}
-	if (options_.rebuildDependencies) {
-		for (auto included : result.includes) {
-			if (!write(included)) {
-				return -1;
-			}
+char hexFirstChar(char ch) {
+	return hexChar((*reinterpret_cast<uchar*>(&ch)) & 0x0F);
+}
+
+QString stringToEncodedString(const std::string &str) {
+	QString result;
+	result.reserve(str.size() * 4);
+	for (auto ch : str) {
+		if (ch == '\n') {
+			result.append("\\n");
+		} else if (ch == '\t') {
+			result.append("\\t");
+		} else if (ch == '"' || ch == '\\') {
+			result.append('\\').append(ch);
+		} else if (ch < 32 || ch > 127) {
+			result.append("\\x").append(hexFirstChar(ch)).append(hexSecondChar(ch));
+		} else {
+			result.append(ch);
 		}
 	}
-	return 0;
+	return '"' + result + '"';
 }
 
-bool Generator::write(const structure::Module &) const {
+QString pxValueName(int value) {
+	QString result = "px";
+	if (value < 0) {
+		value = -value;
+		result += 'm';
+	}
+	return result + QString::number(value);
+}
+
+} // namespace
+
+Generator::Generator(const structure::Module &module, const QString &destBasePath, const common::ProjectInfo &project)
+: module_(module)
+, basePath_(destBasePath)
+, baseName_(QFileInfo(basePath_).baseName())
+, project_(project) {
+}
+
+bool Generator::writeHeader() {
+	header_ = std::make_unique<common::CppFile>(basePath_ + ".h", project_);
+
+	header_->include("ui/style_core.h").newline();
+
+	if (!writeHeaderStyleNamespace()) {
+		return false;
+	}
+	if (!writeRefsDeclarations()) {
+		return false;
+	}
+
+	return header_->finalize();
+}
+
+bool Generator::writeSource() {
+	source_ = std::make_unique<common::CppFile>(basePath_ + ".cpp", project_);
+
+	writeIncludesInSource();
+
+	if (module_.hasVariables()) {
+		source_->pushNamespace().newline();
+		source_->stream() << "\
+bool inited = false;\n\
+\n\
+class Module_" << baseName_ << " : public style::internal::ModuleBase {\n\
+public:\n\
+	Module_" << baseName_ << "() { style::internal::registerModule(this); }\n\
+	~Module_" << baseName_ << "() { style::internal::unregisterModule(this); }\n\
+\n\
+	void start() override {\n\
+		style::internal::init_" << baseName_ << "();\n\
+	}\n\
+	void stop() override {\n\
+	}\n\
+};\n\
+Module_" << baseName_ << " registrator;\n";
+		if (!writeVariableDefinitions()) {
+			return false;
+		}
+		source_->newline().popNamespace();
+
+		source_->newline().pushNamespace("st");
+		if (!writeRefsDefinition()) {
+			return false;
+		}
+
+		source_->popNamespace().newline();
+		source_->newline().pushNamespace("style").pushNamespace("internal").newline();
+		if (!writeVariableInit()) {
+			return false;
+		}
+	}
+
+	return source_->finalize();
+}
+
+// Empty result means an error.
+QString Generator::typeToString(structure::Type type) const {
+	switch (type.tag) {
+	case Tag::Invalid: return QString();
+	case Tag::Int: return "int";
+	case Tag::Double: return "double";
+	case Tag::Pixels: return "int";
+	case Tag::String: return "QString";
+	case Tag::Color: return "style::color";
+	case Tag::Point: return "style::point";
+	case Tag::Sprite: return "style::sprite";
+	case Tag::Size: return "style::size";
+	case Tag::Transition: return "style::transition";
+	case Tag::Cursor: return "style::cursor";
+	case Tag::Align: return "style::align";
+	case Tag::Margins: return "style::margins";
+	case Tag::Font: return "style::font";
+	case Tag::Struct: return "style::" + type.name.back();
+	}
+	return QString();
+}
+
+// Empty result means an error.
+QString Generator::typeToDefaultValue(structure::Type type) const {
+	switch (type.tag) {
+	case Tag::Invalid: return QString();
+	case Tag::Int: return "0";
+	case Tag::Double: return "0.";
+	case Tag::Pixels: return "0";
+	case Tag::String: return "QString()";
+	case Tag::Color: return "{ Qt::Uninitialized }";
+	case Tag::Point: return "{ 0, 0 }";
+	case Tag::Sprite: return "{ 0, 0, 0, 0 }";
+	case Tag::Size: return "{ 0, 0 }";
+	case Tag::Transition: return "anim::linear";
+	case Tag::Cursor: return "style::cur_default";
+	case Tag::Align: return "style::al_topleft";
+	case Tag::Margins: return "{ 0, 0, 0, 0 }";
+	case Tag::Font: return "{ Qt::Uninitialized }";
+	case Tag::Struct: {
+		if (auto realType = module_.findStruct(type.name)) {
+			QStringList fields;
+			for (auto field : realType->fields) {
+				fields.push_back(typeToDefaultValue(field.type));
+			}
+			return "{ " + fields.join(", ") + " }";
+		}
+		return QString();
+	} break;
+	}
+	return QString();
+}
+
+// Empty result means an error.
+QString Generator::valueAssignmentCode(structure::Value value) const {
+	auto copy = value.copyOf();
+	if (!copy.isEmpty()) {
+		return "st::" + copy.back();
+	}
+
+	switch (value.type().tag) {
+	case Tag::Invalid: return QString();
+	case Tag::Int: return QString("%1").arg(value.Int());
+	case Tag::Double: return QString("%1").arg(value.Double());
+	case Tag::Pixels: return pxValueName(value.Int());
+	case Tag::String: return QString("qsl(%1)").arg(stringToEncodedString(value.String()));
+	case Tag::Color: return QString("{ %1, %2, %3, %4 }").arg(value.Color().red).arg(value.Color().green).arg(value.Color().blue).arg(value.Color().alpha);
+	case Tag::Point: {
+		auto v(value.Point());
+		return QString("{ %1, %2 }").arg(pxValueName(v.x)).arg(pxValueName(v.y));
+	}
+	case Tag::Sprite: {
+		auto v(value.Sprite());
+		return QString("{ %1, %2, %3, %4 }").arg(pxValueName(v.left)).arg(pxValueName(v.top)).arg(pxValueName(v.width)).arg(pxValueName(v.height));
+	}
+	case Tag::Size: {
+		auto v(value.Size());
+		return QString("{ %1, %2 }").arg(pxValueName(v.width)).arg(pxValueName(v.height));
+	}
+	case Tag::Transition: return QString("anim::%1").arg(value.String().c_str());
+	case Tag::Cursor: return QString("style::cur_%1").arg(value.String().c_str());
+	case Tag::Align: return QString("style::al_%1").arg(value.String().c_str());
+	case Tag::Margins: {
+		auto v(value.Margins());
+		return QString("{ %1, %2, %3, %4 }").arg(pxValueName(v.left)).arg(pxValueName(v.top)).arg(pxValueName(v.right)).arg(pxValueName(v.bottom));
+	}
+	case Tag::Font: {
+		auto v(value.Font());
+		QString family = "0";
+		if (!v.family.empty()) {
+			auto familyIndex = fontFamilyValues_.value(v.family, -1);
+			if (familyIndex < 0) {
+				return QString();
+			} else {
+				family = QString("font%1index").arg(familyIndex);
+			}
+		}
+		return QString("{ %1, %2, %3 }").arg(pxValueName(v.size)).arg(v.flags).arg(family);
+	}
+	case Tag::Struct: {
+		if (!value.Fields()) return QString();
+
+		QStringList fields;
+		for (auto field : *value.Fields()) {
+			fields.push_back(valueAssignmentCode(field.variable.value));
+		}
+		return "{ " + fields.join(", ") + " }";
+	} break;
+	}
+	return QString();
+}
+
+bool Generator::writeHeaderStyleNamespace() {
+	if (!module_.hasStructs() && !module_.hasVariables()) {
+		return true;
+	}
+	header_->pushNamespace("style");
+
+	if (module_.hasVariables()) {
+		header_->pushNamespace("internal").newline();
+		header_->stream() << "void init_" << baseName_ << "();\n\n";
+		header_->popNamespace();
+	}
+	if (module_.hasStructs()) {
+		header_->newline();
+		if (!writeStructsDefinitions()) {
+			return false;
+		}
+	}
+
+	header_->popNamespace().newline();
 	return true;
 }
 
-Generator::~Generator() = default;
+bool Generator::writeStructsDefinitions() {
+	if (!module_.hasStructs()) {
+		return true;
+	}
+
+	bool result = module_.enumStructs([this](const Struct &value) -> bool {
+		header_->stream() << "struct " << value.name.back() << " {\n";
+		for (const auto &field : value.fields) {
+			auto type = typeToString(field.type);
+			if (type.isEmpty()) {
+				return false;
+			}
+			header_->stream() << "\t" << type << " " << field.name.back() << ";\n";
+		}
+		header_->stream() << "};\n\n";
+		return true;
+	});
+
+	return result;
+}
+
+bool Generator::writeRefsDeclarations() {
+	if (!module_.hasVariables()) {
+		return true;
+	}
+
+	header_->pushNamespace("st");
+
+	bool result = module_.enumVariables([this](const Variable &value) -> bool {
+		auto name = value.name.back();
+		auto type = typeToString(value.value.type());
+		if (type.isEmpty()) {
+			return false;
+		}
+
+		header_->stream() << "extern const " << type << " &" << name << ";\n";
+		return true;
+	});
+
+	header_->popNamespace();
+
+	return result;
+}
+
+bool Generator::writeIncludesInSource() {
+	if (!module_.hasIncludes()) {
+		return true;
+	}
+
+	bool result = module_.enumIncludes([this](const Module &module) -> bool {
+		source_->include("style_" + QFileInfo(module.filepath()).baseName() + ".h");
+		return true;
+	});
+	source_->newline();
+	return result;
+}
+
+bool Generator::writeVariableDefinitions() {
+	if (!module_.hasVariables()) {
+		return true;
+	}
+
+	source_->newline();
+	bool result = module_.enumVariables([this](const Variable &variable) -> bool {
+		auto name = variable.name.back();
+		auto type = typeToString(variable.value.type());
+		if (type.isEmpty()) {
+			return false;
+		}
+		source_->stream() << type << " _" << name << " = " << typeToDefaultValue(variable.value.type()) << ";\n";
+		return true;
+	});
+	return result;
+}
+
+bool Generator::writeRefsDefinition() {
+	if (!module_.hasVariables()) {
+		return true;
+	}
+
+	source_->newline();
+	bool result = module_.enumVariables([this](const Variable &variable) -> bool {
+		auto name = variable.name.back();
+		auto type = typeToString(variable.value.type());
+		if (type.isEmpty()) {
+			return false;
+		}
+		source_->stream() << "const " << type << " &" << name << "(_" << name << ");\n";
+		return true;
+	});
+	return result;
+}
+
+bool Generator::writeVariableInit() {
+	if (!module_.hasVariables()) {
+		return true;
+	}
+
+	if (!collectUniqueValues()) {
+		return false;
+	}
+	bool hasUniqueValues = (!pxValues_.isEmpty() || !fontFamilyValues_.isEmpty());
+	if (hasUniqueValues) {
+		source_->pushNamespace();
+		if (!writePxValues()) {
+			return false;
+		}
+		if (!writeFontFamilyValues()) {
+			return false;
+		}
+		source_->popNamespace().newline();
+	}
+
+	source_->stream() << "\
+void init_" << baseName_ << "() {\n\
+	if (inited) return;\n\
+	inited = true;\n\n";
+
+	if (module_.hasIncludes()) {
+		bool writtenAtLeastOne = false;
+		bool result = module_.enumIncludes([this,&writtenAtLeastOne](const Module &module) -> bool {
+			if (module.hasVariables()) {
+				source_->stream() << "\tinit_style_" + QFileInfo(module.filepath()).baseName() + "();\n";
+				writtenAtLeastOne = true;
+			}
+			return true;
+		});
+		if (!result) {
+			return false;
+		}
+		if (writtenAtLeastOne) {
+			source_->newline();
+		}
+	}
+
+	if (hasUniqueValues) {
+		if (!pxValues_.isEmpty()) {
+			source_->stream() << "\tinitPxValues();\n";
+		}
+		if (!fontFamilyValues_.isEmpty()) {
+			source_->stream() << "\tinitFontFamilyValues();\n";
+		}
+		source_->newline();
+	}
+
+	bool result = module_.enumVariables([this](const Variable &variable) -> bool {
+		auto name = variable.name.back();
+		auto value = valueAssignmentCode(variable.value);
+		if (value.isEmpty()) {
+			return false;
+		}
+		source_->stream() << "\t_" << name << " = " << value << ";\n";
+		return true;
+	});
+	source_->stream() << "\
+}\n\n";
+	return result;
+}
+
+bool Generator::writePxValues() {
+	if (pxValues_.isEmpty()) {
+		return true;
+	}
+
+	for (auto i = pxValues_.cbegin(), e = pxValues_.cend(); i != e; ++i) {
+		source_->stream() << "int " << pxValueName(i.key()) << " = " << i.key() << ";\n";
+	}
+	source_->stream() << "\
+void initPxValues() {\n\
+	if (cRetina()) return;\n\
+\n\
+	switch (cScale()) {\n";
+	for (int i = 1, scalesCount = scales.size(); i < scalesCount; ++i) {
+		source_->stream() << "\tcase " << scaleNames.at(i) << ":\n";
+		for (auto it = pxValues_.cbegin(), e = pxValues_.cend(); it != e; ++it) {
+			auto value = it.key();
+			int adjusted = structure::data::pxAdjust(value, scales.at(i));
+			if (adjusted != value) {
+				source_->stream() << "\t\t" << pxValueName(value) << " = " << adjusted << ";\n";
+			}
+		}
+		source_->stream() << "\tbreak;\n";
+	}
+	source_->stream() << "\
+	}\n\
+}\n\n";
+	return true;
+}
+
+bool Generator::writeFontFamilyValues() {
+	if (fontFamilyValues_.isEmpty()) {
+		return true;
+	}
+
+	for (auto i = fontFamilyValues_.cbegin(), e = fontFamilyValues_.cend(); i != e; ++i) {
+		source_->stream() << "int font" << i.value() << "index;\n";
+	}
+	source_->stream() << "void initFontFamilyValues() {\n";
+	for (auto i = fontFamilyValues_.cbegin(), e = fontFamilyValues_.cend(); i != e; ++i) {
+		auto family = stringToEncodedString(i.key());
+		source_->stream() << "\tfont" << i.value() << "index = style::internal::registerFontFamily(" << family << ");\n";
+	}
+	source_->stream() << "}\n\n";
+	return true;
+}
+
+bool Generator::collectUniqueValues() {
+	int fontFamilyIndex = 0;
+	std::function<bool(const Variable&)> collector = [this, &collector, &fontFamilyIndex](const Variable &variable) {
+		auto value = variable.value;
+		switch (value.type().tag) {
+		case Tag::Invalid:
+		case Tag::Int:
+		case Tag::Double:
+		case Tag::String:
+		case Tag::Color:
+		case Tag::Transition:
+		case Tag::Cursor:
+		case Tag::Align: break;
+		case Tag::Pixels: pxValues_.insert(value.Int(), true); break;
+		case Tag::Point: {
+			auto v(value.Point());
+			pxValues_.insert(v.x, true);
+			pxValues_.insert(v.y, true);
+		} break;
+		case Tag::Sprite: {
+			auto v(value.Sprite());
+			pxValues_.insert(v.left, true);
+			pxValues_.insert(v.top, true);
+			pxValues_.insert(v.width, true);
+			pxValues_.insert(v.height, true);
+		} break;
+		case Tag::Size: {
+			auto v(value.Size());
+			pxValues_.insert(v.width, true);
+			pxValues_.insert(v.height, true);
+		} break;
+		case Tag::Margins: {
+			auto v(value.Margins());
+			pxValues_.insert(v.left, true);
+			pxValues_.insert(v.top, true);
+			pxValues_.insert(v.right, true);
+			pxValues_.insert(v.bottom, true);
+		} break;
+		case Tag::Font: {
+			auto v(value.Font());
+			pxValues_.insert(v.size, true);
+			if (!v.family.empty() && !fontFamilyValues_.contains(v.family)) {
+				fontFamilyValues_.insert(v.family, ++fontFamilyIndex);
+			}
+		} break;
+		case Tag::Struct: {
+			auto fields = variable.value.Fields();
+			if (!fields) {
+				return false;
+			}
+
+			for (auto field : *fields) {
+				if (!collector(field.variable)) {
+					return false;
+				}
+			}
+		} break;
+		}
+		return true;
+	};
+	return module_.enumVariables(collector);
+}
 
 } // namespace style
 } // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/generator.h b/Telegram/SourceFiles/codegen/style/generator.h
index 526a70912..b97460360 100644
--- a/Telegram/SourceFiles/codegen/style/generator.h
+++ b/Telegram/SourceFiles/codegen/style/generator.h
@@ -22,36 +22,53 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 #include <memory>
 #include <QtCore/QString>
-#include "codegen/style/options.h"
+#include <QtCore/QSet>
+#include "codegen/common/cpp_file.h"
+#include "codegen/style/structure_types.h"
 
 namespace codegen {
 namespace style {
 namespace structure {
-struct Module;
+class Module;
 } // namespace structure
-class ParsedFile;
 
-// Walks through a file, parses it and parses dependency files if necessary.
 class Generator {
 public:
-	Generator(const Options &options);
+	Generator(const structure::Module &module, const QString &destBasePath, const common::ProjectInfo &project);
 	Generator(const Generator &other) = delete;
 	Generator &operator=(const Generator &other) = delete;
 
-	// Returns 0 on success.
-	int process();
-
-	~Generator();
+	bool writeHeader();
+	bool writeSource();
 
 private:
-	bool write(const structure::Module &module) const;
+	QString typeToString(structure::Type type) const;
+	QString typeToDefaultValue(structure::Type type) const;
+	QString valueAssignmentCode(structure::Value value) const;
 
-	std::unique_ptr<ParsedFile> parser_;
-	const Options &options_;
+	bool writeHeaderStyleNamespace();
+	bool writeStructsDefinitions();
+	bool writeRefsDeclarations();
 
-	// List of files we need to generate with other instance of Generator.
-	// It is not empty only if rebuild_ flag is true.
-	QStringList dependenciesToGenerate_;
+	bool writeIncludesInSource();
+	bool writeVariableDefinitions();
+	bool writeRefsDefinition();
+	bool writeVariableInit();
+	bool writePxValues();
+	bool writeFontFamilyValues();
+
+	bool collectUniqueValues();
+
+	const structure::Module &module_;
+	QString basePath_, baseName_;
+	const common::ProjectInfo &project_;
+	std::unique_ptr<common::CppFile> source_, header_;
+
+	QMap<int, bool> pxValues_;
+	QMap<std::string, int> fontFamilyValues_;
+
+	std::vector<int> scales = { 4, 5, 6, 8 }; // scale / 4 gives our 1.00, 1.25, 1.50, 2.00
+	std::vector<const char *>scaleNames = { "dbisOne", "dbisOneAndQuarter", "dbisOneAndHalf", "dbisTwo" };
 
 };
 
diff --git a/Telegram/SourceFiles/codegen/style/main.cpp b/Telegram/SourceFiles/codegen/style/main.cpp
index b61d9ce11..b4e8ab217 100644
--- a/Telegram/SourceFiles/codegen/style/main.cpp
+++ b/Telegram/SourceFiles/codegen/style/main.cpp
@@ -19,21 +19,18 @@ Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 #include <QtCore/QCoreApplication>
-#include <QtCore/QTimer>
 
-#include "codegen/style/generator.h"
 #include "codegen/style/options.h"
-
-using namespace codegen::style;
+#include "codegen/style/processor.h"
 
 int main(int argc, char *argv[]) {
 	QCoreApplication app(argc, argv);
 
-	Options options = parseOptions();
+	auto options = codegen::style::parseOptions();
 	if (options.inputPath.isEmpty()) {
 		return -1;
 	}
 
-	Generator generator(options);
-	return generator.process();
+	codegen::style::Processor processor(options);
+	return processor.launch();
 }
diff --git a/Telegram/SourceFiles/codegen/style/module.cpp b/Telegram/SourceFiles/codegen/style/module.cpp
new file mode 100644
index 000000000..d11d4cdd0
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/module.cpp
@@ -0,0 +1,101 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/module.h"
+
+namespace codegen {
+namespace style {
+namespace structure {
+namespace {
+
+QString fullNameKey(const FullName &name) {
+	return name.join('.');
+}
+
+} // namespace
+
+Module::Module(const QString &fullpath) : fullpath_(fullpath) {
+}
+
+void Module::addIncluded(std::unique_ptr<Module> &&value) {
+	included_.push_back(std::move(value));
+}
+
+bool Module::addStruct(const Struct &value) {
+	if (findStruct(value.name)) {
+		return false;
+	}
+	structsByName_.insert(fullNameKey(value.name), structs_.size());
+	structs_.push_back(value);
+	return true;
+}
+
+const Struct *Module::findStruct(const FullName &name) const {
+	if (auto result = findStructInModule(name, *this)) {
+		return result;
+	}
+	for (const auto &module : included_) {
+		if (auto result = findStructInModule(name, *module)) {
+			return result;
+		}
+	}
+	return nullptr;
+}
+
+bool Module::addVariable(const Variable &value) {
+	if (findVariable(value.name)) {
+		return false;
+	}
+	variablesByName_.insert(fullNameKey(value.name), variables_.size());
+	variables_.push_back(value);
+	return true;
+}
+
+const Variable *Module::findVariable(const FullName &name) const {
+	if (auto result = findVariableInModule(name, *this)) {
+		return result;
+	}
+	for (const auto &module : included_) {
+		if (auto result = findVariableInModule(name, *module)) {
+			return result;
+		}
+	}
+	return nullptr;
+}
+
+const Struct *Module::findStructInModule(const FullName &name, const Module &module) const {
+	auto index = module.structsByName_.value(fullNameKey(name), -1);
+	if (index < 0) {
+		return nullptr;
+	}
+	return &module.structs_.at(index);
+}
+
+const Variable *Module::findVariableInModule(const FullName &name, const Module &module) const {
+	auto index = module.variablesByName_.value(fullNameKey(name), -1);
+	if (index < 0) {
+		return nullptr;
+	}
+	return &module.variables_.at(index);
+}
+
+} // namespace structure
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/module.h b/Telegram/SourceFiles/codegen/style/module.h
new file mode 100644
index 000000000..a890fd7dd
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/module.h
@@ -0,0 +1,112 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <QtCore/QString>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include <vector>
+#include "codegen/style/structure_types.h"
+
+namespace codegen {
+namespace style {
+namespace structure {
+
+class Module {
+public:
+
+	explicit Module(const QString &fullpath);
+
+	QString filepath() const {
+		return fullpath_;
+	}
+
+	void addIncluded(std::unique_ptr<Module> &&value);
+
+	bool hasIncludes() const {
+		return !included_.empty();
+	}
+	template <typename F>
+	bool enumIncludes(F functor) const {
+		for (const auto &module : included_) {
+			if (!functor(*module)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	// Returns false if there is a struct with such name already.
+	bool addStruct(const Struct &value);
+	// Returns nullptr if there is no such struct in result_ or any of included modules.
+	const Struct *findStruct(const FullName &name) const;
+	bool hasStructs() const {
+		return !structs_.isEmpty();
+	}
+
+	template <typename F>
+	bool enumStructs(F functor) const {
+		for (const auto &value : structs_) {
+			if (!functor(value)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	// Returns false if there is a variable with such name already.
+	bool addVariable(const Variable &value);
+	// Returns nullptr if there is no such variable in result_ or any of included modules.
+	const Variable *findVariable(const FullName &name) const;
+	bool hasVariables() const {
+		return !variables_.isEmpty();
+	}
+
+	template <typename F>
+	bool enumVariables(F functor) const {
+		for (const auto &value : variables_) {
+			if (!functor(value)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	explicit operator bool() const {
+		return !fullpath_.isEmpty();
+	}
+
+private:
+	QString fullpath_;
+	std::vector<std::unique_ptr<Module>> included_;
+	QList<Struct> structs_;
+	QList<Variable> variables_;
+	QMap<QString, int> structsByName_;
+	QMap<QString, int> variablesByName_;
+
+	const Struct *findStructInModule(const FullName &name, const Module &module) const;
+	const Variable *findVariableInModule(const FullName &name, const Module &module) const;
+
+};
+
+} // namespace structure
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.cpp b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
index f5f7e2d66..037b7732a 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.cpp
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
@@ -32,6 +32,9 @@ using BasicType = BasicToken::Type;
 
 namespace codegen {
 namespace style {
+
+using structure::logFullName;
+
 namespace {
 
 constexpr int kErrorInIncluded         = 801;
@@ -65,7 +68,7 @@ bool isValidColor(const QString &str) {
 
 uchar readHexUchar(QChar ch) {
 	auto code = ch.unicode();
-	return (code >= '0' && code <= '9') ? ((code - '0') & 0xFF) : ((code - 'a') & 0xFF);
+	return (code >= '0' && code <= '9') ? ((code - '0') & 0xFF) : ((code + 10 - 'a') & 0xFF);
 }
 
 uchar readHexUchar(QChar char1, QChar char2) {
@@ -95,10 +98,6 @@ structure::data::color convertIntColor(int r, int g, int b, int a) {
 	return { uchar(r & 0xFF), uchar(g & 0xFF), uchar(b & 0xFF), uchar(a & 0xFF) };
 }
 
-std::string logFullName(const structure::FullName &name) {
-	return name.join('.').toStdString();
-}
-
 std::string logType(const structure::Type &type) {
 	if (type.tag == structure::TypeTag::Struct) {
 		return "struct " + logFullName(type.name);
@@ -121,10 +120,6 @@ std::string logType(const structure::Type &type) {
 	return builtInTypes->value(type.tag, "invalid");
 }
 
-QString fullNameKey(const structure::FullName &name) {
-	return name.join('.');
-}
-
 bool validateAnsiString(const QString &value) {
 	for (auto ch : value) {
 		if (ch.unicode() > 127) {
@@ -158,67 +153,61 @@ bool ParsedFile::read() {
 		return false;
 	}
 
-	bool noErrors = false;
+	auto filepath = QFileInfo(options_.inputPath).absoluteFilePath();
+	module_ = std::make_unique<structure::Module>(filepath);
 	do {
 		if (auto startToken = file_.getToken(BasicType::Name)) {
 			if (tokenValue(startToken) == "using") {
 				if (auto includedResult = readIncluded()) {
-					result_.includes.push_back(includedResult);
+					module_->addIncluded(std::move(includedResult));
 					continue;
 				}
 			} else if (auto braceOpen = file_.getToken(BasicType::LeftBrace)) {
 				if (auto structResult = readStruct(tokenValue(startToken))) {
-					if (findStruct(structResult.name)) {
-						logError(kErrorAlreadyDefined) << "struct '" << logFullName(structResult.name) << "' already defined";
-						break;
+					if (module_->addStruct(structResult)) {
+						continue;
 					}
-					result_.structsByName.insert(fullNameKey(structResult.name), result_.structs.size());
-					result_.structs.push_back(structResult);
-					continue;
+					logError(kErrorAlreadyDefined) << "struct '" << logFullName(structResult.name) << "' already defined";
+					break;
 				}
 			} else if (auto colonToken = file_.getToken(BasicType::Colon)) {
 				if (auto variableResult = readVariable(tokenValue(startToken))) {
-					if (findVariable(variableResult.name)) {
-						logError(kErrorAlreadyDefined) << "variable '" << logFullName(variableResult.name) << "' already defined";
-						break;
+					if (module_->addVariable(variableResult)) {
+						continue;
 					}
-					result_.variablesByName.insert(fullNameKey(variableResult.name), result_.variables.size());
-					result_.variables.push_back(variableResult);
-					continue;
+					logError(kErrorAlreadyDefined) << "variable '" << logFullName(variableResult.name) << "' already defined";
+					break;
 				}
 			}
 		}
-		if (!file_.atEnd()) {
-			logErrorUnexpectedToken() << "using keyword, or struct definition, or variable definition";
-		} else {
-			noErrors = !failed();
+		if (file_.atEnd()) {
 			break;
 		}
+		logErrorUnexpectedToken() << "using keyword, or struct definition, or variable definition";
 	} while (!failed());
 
-	if (noErrors) {
-		result_.fullpath = QFileInfo(options_.inputPath).absoluteFilePath();
+	if (failed()) {
+		module_ = nullptr;
 	}
-	return noErrors;
+	return !failed();
 }
 
 common::LogStream ParsedFile::logErrorTypeMismatch() {
 	return logError(kErrorTypeMismatch) << "type mismatch: ";
 }
 
-structure::Module ParsedFile::readIncluded() {
-	structure::Module result;
+ParsedFile::ModulePtr ParsedFile::readIncluded() {
 	if (auto usingFile = assertNextToken(BasicType::String)) {
 		if (assertNextToken(BasicType::Semicolon)) {
 			ParsedFile included(includedOptions(tokenValue(usingFile)));
 			if (included.read()) {
-				result = included.data();
+				return included.getResult();
 			} else {
 				logError(kErrorInIncluded) << "error while parsing '" << tokenValue(usingFile).toStdString() << "'";
 			}
 		}
 	}
-	return result;
+	return nullptr;
 }
 
 structure::Struct ParsedFile::readStruct(const QString &name) {
@@ -268,7 +257,7 @@ structure::Type ParsedFile::readType() {
 			result = builtInType;
 		} else {
 			auto fullName = composeFullName(name);
-			if (findStruct(fullName)) {
+			if (module_->findStruct(fullName)) {
 				result.tag = structure::TypeTag::Struct;
 				result.name = fullName;
 			} else {
@@ -331,11 +320,17 @@ structure::Value ParsedFile::readStructValue() {
 }
 
 structure::Value ParsedFile::defaultConstructedStruct(const structure::FullName &structName) {
-	if (auto pattern = findStruct(structName)) {
-		QList<structure::Variable> fields;
+	if (auto pattern = module_->findStruct(structName)) {
+		QList<structure::data::field> fields;
 		fields.reserve(pattern->fields.size());
 		for (const auto &fieldType : pattern->fields) {
-			fields.push_back({ fieldType.name, { fieldType.type, Qt::Uninitialized } });
+			fields.push_back({
+				{ // variable
+					fieldType.name,
+					{ fieldType.type, Qt::Uninitialized }, // value
+				},
+				structure::data::field::Status::Uninitialized, // status
+			});
 		}
 		return { structName, fields };
 	}
@@ -343,14 +338,14 @@ structure::Value ParsedFile::defaultConstructedStruct(const structure::FullName
 }
 
 void ParsedFile::applyStructParent(structure::Value &result, const structure::FullName &parentName) {
-	if (auto parent = findVariable(parentName)) {
+	if (auto parent = module_->findVariable(parentName)) {
 		if (parent->value.type() != result.type()) {
 			logErrorTypeMismatch() << "parent '" << logFullName(parentName) << "' has type '" << logType(parent->value.type()) << "' while child value has type " << logType(result.type());
 			return;
 		}
 
-		const auto *srcFields(parent->value.Complex());
-		auto *dstFields(result.Complex());
+		const auto *srcFields(parent->value.Fields());
+		auto *dstFields(result.Fields());
 		if (!srcFields || !dstFields) {
 			logAssert(false) << "struct data check failed";
 			return;
@@ -358,10 +353,17 @@ void ParsedFile::applyStructParent(structure::Value &result, const structure::Fu
 
 		logAssert(srcFields->size() == dstFields->size()) << "struct size check failed";
 		for (int i = 0, s = srcFields->size(); i != s; ++i) {
-			const auto &srcValue(srcFields->at(i).value);
-			auto &dstValue((*dstFields)[i].value);
-			logAssert(srcValue.type() == dstValue.type()) << "struct field type check failed";
-			dstValue = srcValue;
+			const auto &srcField(srcFields->at(i));
+			auto &dstField((*dstFields)[i]);
+			using Status = structure::data::field::Status;
+			if (srcField.status == Status::Explicit ||
+				dstField.status == Status::Uninitialized) {
+				const auto &srcValue(srcField.variable.value);
+				auto &dstValue(dstField.variable.value);
+				logAssert(srcValue.type() == dstValue.type()) << "struct field type check failed";
+				dstValue = srcValue;
+				dstField.status = Status::Implicit;
+			}
 		}
 	} else {
 		logError(kErrorIdentifierNotFound) << "parent '" << logFullName(parentName) << "' not found";
@@ -388,18 +390,19 @@ bool ParsedFile::readStructValueInner(structure::Value &result) {
 }
 
 bool ParsedFile::assignStructField(structure::Value &result, const structure::Variable &field) {
-	auto *fields = result.Complex();
+	auto *fields = result.Fields();
 	if (!fields) {
 		logAssert(false) << "struct data check failed";
 		return false;
 	}
 	for (auto &already : *fields) {
-		if (already.name == field.name) {
-			if (already.value.type() == field.value.type()) {
-				already.value = field.value;
+		if (already.variable.name == field.name) {
+			if (already.variable.value.type() == field.value.type()) {
+				already.variable.value = field.value;
+				already.status = structure::data::field::Status::Explicit;
 				return true;
 			} else {
-				logErrorTypeMismatch() << "field '" << logFullName(already.name) << "' has type '" << logType(already.value.type()) << "' while value has type '" << logType(field.value.type()) << "'";
+				logErrorTypeMismatch() << "field '" << logFullName(already.variable.name) << "' has type '" << logType(already.variable.value.type()) << "' while value has type '" << logType(field.value.type()) << "'";
 				return false;
 			}
 		}
@@ -429,7 +432,7 @@ structure::Value ParsedFile::readPositiveValue() {
 	if (numericToken.type == BasicType::Int) {
 		return { structure::TypeTag::Int, tokenValue(numericToken).toInt() };
 	} else if (numericToken.type == BasicType::Double) {
-		return { tokenValue(numericToken).toDouble() };
+		return { structure::TypeTag::Double, tokenValue(numericToken).toDouble() };
 	} else if (numericToken.type == BasicType::Name) {
 		auto value = tokenValue(numericToken);
 		auto match = QRegularExpression("^\\d+px$").match(value);
@@ -717,7 +720,7 @@ structure::Value ParsedFile::readFontValue() {
 structure::Value ParsedFile::readCopyValue() {
 	if (auto copyName = file_.getToken(BasicType::Name)) {
 		structure::FullName name = { tokenValue(copyName) };
-		if (auto variable = findVariable(name)) {
+		if (auto variable = module_->findVariable(name)) {
 			return variable->value.makeCopy(variable->name);
 		}
 		logError(kErrorIdentifierNotFound) << "identifier '" << logFullName(name) << "' not found";
@@ -725,48 +728,6 @@ structure::Value ParsedFile::readCopyValue() {
 	return {};
 }
 
-// Returns nullptr if there is no such struct in result_ or any of included modules.
-const structure::Struct *ParsedFile::findStruct(const structure::FullName &name) {
-	if (auto result = findStructInModule(name, result_)) {
-		return result;
-	}
-	for (const auto &included : result_.includes) {
-		if (auto result = findStructInModule(name, included)) {
-			return result;
-		}
-	}
-	return nullptr;
-}
-
-const structure::Struct *ParsedFile::findStructInModule(const structure::FullName &name, const structure::Module &module) {
-	auto index = module.structsByName.value(fullNameKey(name), -1);
-	if (index < 0) {
-		return nullptr;
-	}
-	return &module.structs.at(index);
-}
-
-// Returns nullptr if there is no such variable in result_ or any of included modules.
-const structure::Variable *ParsedFile::findVariable(const structure::FullName &name) {
-	if (auto result = findVariableInModule(name, result_)) {
-		return result;
-	}
-	for (const auto &included : result_.includes) {
-		if (auto result = findVariableInModule(name, included)) {
-			return result;
-		}
-	}
-	return nullptr;
-}
-
-const structure::Variable *ParsedFile::findVariableInModule(const structure::FullName &name, const structure::Module &module) {
-	auto index = module.variablesByName.value(fullNameKey(name), -1);
-	if (index < 0) {
-		return nullptr;
-	}
-	return &module.variables.at(index);
-}
-
 BasicToken ParsedFile::assertNextToken(BasicToken::Type type) {
 	auto result = file_.getToken(type);
 	if (!result) {
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.h b/Telegram/SourceFiles/codegen/style/parsed_file.h
index 6106d728a..f98b41c7c 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.h
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.h
@@ -24,7 +24,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #include <string>
 #include "codegen/common/basic_tokenized_file.h"
 #include "codegen/style/options.h"
-#include "codegen/style/structure.h"
+#include "codegen/style/module.h"
 
 namespace codegen {
 namespace style {
@@ -32,14 +32,15 @@ namespace style {
 // Parses an input file to the internal struct.
 class ParsedFile {
 public:
-	ParsedFile(const Options &options);
+	explicit ParsedFile(const Options &options);
 	ParsedFile(const ParsedFile &other) = delete;
 	ParsedFile &operator=(const ParsedFile &other) = delete;
 
 	bool read();
 
-	const structure::Module &data() const {
-		return result_;
+	using ModulePtr = std::unique_ptr<structure::Module>;
+	ModulePtr getResult() {
+		return std::move(module_);
 	}
 
 private:
@@ -66,7 +67,7 @@ private:
 	}
 
 	// Helper methods for context-dependent reading.
-	structure::Module readIncluded();
+	ModulePtr readIncluded();
 	structure::Struct readStruct(const QString &name);
 	structure::Variable readVariable(const QString &name);
 
@@ -96,14 +97,6 @@ private:
 	structure::Value readFontValue();
 	structure::Value readCopyValue();
 
-	// Returns nullptr if there is no such struct in result_ or any of included modules.
-	const structure::Struct *findStruct(const structure::FullName &name);
-	const structure::Struct *findStructInModule(const structure::FullName &name, const structure::Module &module);
-
-	// Returns nullptr if there is no such variable in result_ or any of included modules.
-	const structure::Variable *findVariable(const structure::FullName &name);
-	const structure::Variable *findVariableInModule(const structure::FullName &name, const structure::Module &module);
-
 	// Read next token and fire unexpected token error if it is not of "type".
 	using BasicToken = common::BasicTokenizedFile::Token;
 	BasicToken assertNextToken(BasicToken::Type type);
@@ -117,7 +110,7 @@ private:
 	common::BasicTokenizedFile file_;
 	Options options_;
 	bool failed_ = false;
-	structure::Module result_;
+	ModulePtr module_;
 
 	QMap<std::string, structure::Type> typeNames_ = {
 		{ "int"       , { structure::TypeTag::Int } },
diff --git a/Telegram/SourceFiles/codegen/style/processor.cpp b/Telegram/SourceFiles/codegen/style/processor.cpp
new file mode 100644
index 000000000..77c241b14
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/processor.cpp
@@ -0,0 +1,103 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/processor.h"
+
+#include <QtCore/QDir>
+#include <QtCore/QFileInfo>
+#include "codegen/common/cpp_file.h"
+#include "codegen/style/parsed_file.h"
+#include "codegen/style/generator.h"
+#include "codegen/style/sprite_generator.h"
+
+namespace codegen {
+namespace style {
+namespace {
+
+constexpr int kErrorCantWritePath = 851;
+
+QString destFileBaseName(const structure::Module &module) {
+	return "style_" + QFileInfo(module.filepath()).baseName();
+}
+
+} // namespace
+
+Processor::Processor(const Options &options)
+: parser_(std::make_unique<ParsedFile>(options))
+, options_(options) {
+}
+
+int Processor::launch() {
+	if (!parser_->read()) {
+		return -1;
+	}
+
+	auto module = parser_->getResult();
+	if (options_.rebuildDependencies) {
+		bool result = module->enumIncludes([this](const structure::Module &included) -> bool {
+			return write(included);
+		});
+		if (!result) {
+			return -1;
+		}
+	} else if (!write(*module)) {
+		return -1;
+	}
+
+	return 0;
+}
+
+bool Processor::write(const structure::Module &module) const {
+	QDir dir(options_.outputPath);
+	if (!dir.mkpath(".")) {
+		common::logError(kErrorCantWritePath, "Command Line") << "can not open path for writing: " << dir.absolutePath().toStdString();
+		return false;
+	}
+
+	QFileInfo srcFile(module.filepath());
+	QString dstFilePath = dir.absolutePath() + '/' + destFileBaseName(module);
+
+	common::ProjectInfo project = {
+		"codegen_style",
+		srcFile.fileName(),
+		"stdafx.h",
+		!options_.rebuildDependencies, // forceReGenerate
+	};
+
+	SpriteGenerator spriteGenerator(module);
+	if (!spriteGenerator.writeSprites()) {
+		return false;
+	}
+
+	Generator generator(module, dstFilePath, project);
+	if (!generator.writeHeader()) {
+		return false;
+	}
+	if (!generator.writeSource()) {
+		return false;
+	}
+
+	return true;
+}
+
+Processor::~Processor() = default;
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/processor.h b/Telegram/SourceFiles/codegen/style/processor.h
new file mode 100644
index 000000000..d2c2cbd55
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/processor.h
@@ -0,0 +1,60 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#pragma once
+
+#include <memory>
+#include <QtCore/QString>
+#include "codegen/style/options.h"
+
+namespace codegen {
+namespace style {
+namespace structure {
+class Module;
+} // namespace structure
+class ParsedFile;
+
+// Walks through a file, parses it and parses dependency files if necessary.
+// Uses Generator class to produce the final output.
+class Processor {
+public:
+	explicit Processor(const Options &options);
+	Processor(const Processor &other) = delete;
+	Processor &operator=(const Processor &other) = delete;
+
+	// Returns 0 on success.
+	int launch();
+
+	~Processor();
+
+private:
+	bool write(const structure::Module &module) const;
+
+	std::unique_ptr<ParsedFile> parser_;
+	const Options &options_;
+
+	// List of files we need to generate with other instance of Generator.
+	// It is not empty only if rebuild_ flag is true.
+	QStringList dependenciesToGenerate_;
+
+};
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/sprite_generator.cpp b/Telegram/SourceFiles/codegen/style/sprite_generator.cpp
new file mode 100644
index 000000000..34a6e948a
--- /dev/null
+++ b/Telegram/SourceFiles/codegen/style/sprite_generator.cpp
@@ -0,0 +1,180 @@
+/*
+This file is part of Telegram Desktop,
+the official desktop version of Telegram messaging app, see https://telegram.org
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
+Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
+*/
+#include "codegen/style/sprite_generator.h"
+
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+#include <QtCore/QBuffer>
+#include <QtGui/QPainter>
+#include <QtGui/QColor>
+#include <functional>
+#include "codegen/style/parsed_file.h"
+
+using Module = codegen::style::structure::Module;
+using Struct = codegen::style::structure::Struct;
+using Variable = codegen::style::structure::Variable;
+using Tag = codegen::style::structure::TypeTag;
+
+namespace codegen {
+namespace style {
+
+using structure::logFullName;
+
+namespace {
+
+constexpr int kErrorFileNotFound      = 881;
+constexpr int kErrorSpritesIntersect  = 882;
+constexpr int kErrorCouldNotGenerate  = 886;
+constexpr int kErrorCouldNotSerialize = 886;
+constexpr int kErrorCouldNotOpen      = 886;
+constexpr int kErrorCouldNotWrite     = 886;
+
+} // namespace
+
+SpriteGenerator::SpriteGenerator(const structure::Module &module)
+: module_(module)
+, basePath_(QFileInfo(module.filepath()).dir().absolutePath()) {
+}
+
+bool SpriteGenerator::writeSprites() {
+	if (!collectSprites()) {
+		return false;
+	}
+	if (sprites_.isEmpty()) {
+		return true;
+	}
+
+	sprite2x_ = QImage(basePath_ + "/art/sprite_200x.png");
+	if (sprite2x_.isNull()) {
+		common::logError(kErrorFileNotFound, "/art/sprite_200x.png") << "sprite file was not found";
+		return false;
+	}
+	std::vector<int> sizes = { 5, 6 };
+	std::vector<const char *> postfixes = { "125", "150" };
+	for (int i = 0, l = sizes.size(); i < l; ++i) {
+		auto sprite = generateSprite(sizes[i]);
+		QString filepath = basePath_ + "/art/sprite_" + postfixes[i] + "x.png";
+		if (sprite.isNull()) {
+			common::logError(kErrorCouldNotGenerate, filepath) << "could not generate sprite file";
+			return false;
+		}
+		QByteArray spriteData;
+		{
+			QBuffer spriteBuffer(&spriteData);
+			if (!sprite.save(&spriteBuffer, "PNG")) {
+				common::logError(kErrorCouldNotSerialize, filepath) << "could not serialize sprite file";
+				return false;
+			}
+		}
+		QFile file(filepath);
+		if (file.open(QIODevice::ReadOnly)) {
+			if (file.readAll() == spriteData) {
+				continue;
+			}
+			file.close();
+		}
+		if (!file.open(QIODevice::WriteOnly)) {
+			common::logError(kErrorCouldNotOpen, filepath) << "could not open sprite file for write";
+			return false;
+		}
+		if (file.write(spriteData) != spriteData.size()) {
+			common::logError(kErrorCouldNotWrite, filepath) << "could not write sprite file";
+			return false;
+		}
+
+		// Touch resource file.
+		filepath = basePath_ + "/telegram.qrc";
+		QFile qrc(filepath);
+		if (qrc.open(QIODevice::ReadOnly)) {
+			auto qrcContent = qrc.readAll();
+			qrc.close();
+			if (!qrc.open(QIODevice::WriteOnly)) {
+				common::logError(kErrorCouldNotOpen, filepath) << "could not open .qrc file for write";
+				return false;
+			}
+			if (qrc.write(qrcContent) != qrcContent.size()) {
+				common::logError(kErrorCouldNotWrite, filepath) << "could not write .qrc file";
+				return false;
+			}
+		}
+	}
+
+	return true;
+}
+
+bool SpriteGenerator::collectSprites() {
+	std::function<bool(const Variable&)> collector = [this, &collector](const Variable &variable) {
+		auto value = variable.value;
+		if (value.type().tag == Tag::Sprite) {
+			auto v(value.Sprite());
+			if (!v.width || !v.height) return true;
+
+			QRect vRect(v.left, v.top, v.width, v.height);
+			bool found = false;
+			for (auto var : sprites_) {
+				auto sprite = var.value.Sprite();
+				QRect spriteRect(sprite.left, sprite.top, sprite.width, sprite.height);
+				if (spriteRect == vRect) {
+					found = true;
+				} else if (spriteRect.intersects(vRect)) {
+					common::logError(kErrorSpritesIntersect, module_.filepath()) << "sprite '" << logFullName(variable.name) << "' intersects with '" << logFullName(var.name) << "'";
+					return false;
+				}
+			}
+			if (!found) {
+				sprites_.push_back(variable);
+			}
+		} else if (value.type().tag == Tag::Struct) {
+			auto fields = variable.value.Fields();
+			if (!fields) {
+				return false;
+			}
+
+			for (auto field : *fields) {
+				if (!collector(field.variable)) {
+					return false;
+				}
+			}
+		}
+		return true;
+	};
+	return module_.enumVariables(collector);
+}
+
+QImage SpriteGenerator::generateSprite(int scale) {
+	auto convert = [scale](int value) -> int { return structure::data::pxAdjust(value, scale); };
+	QImage result(convert(sprite2x_.width() / 2), convert(sprite2x_.height() / 2), sprite2x_.format());
+	{
+		QPainter p(&result);
+		p.setCompositionMode(QPainter::CompositionMode_Source);
+		p.fillRect(0, 0, result.width(), result.height(), QColor(0, 0, 0, 0));
+		for (auto variable : sprites_) {
+			auto sprite = variable.value.Sprite();
+			auto copy = sprite2x_.copy(sprite.left * 2, sprite.top * 2, sprite.width * 2, sprite.height * 2);
+			copy = copy.scaled(convert(sprite.width), convert(sprite.height), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+			p.drawImage(convert(sprite.left), convert(sprite.top), copy);
+		}
+	}
+	return result;
+}
+
+} // namespace style
+} // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/structure.h b/Telegram/SourceFiles/codegen/style/sprite_generator.h
similarity index 62%
rename from Telegram/SourceFiles/codegen/style/structure.h
rename to Telegram/SourceFiles/codegen/style/sprite_generator.h
index 8f29350b4..832a71984 100644
--- a/Telegram/SourceFiles/codegen/style/structure.h
+++ b/Telegram/SourceFiles/codegen/style/sprite_generator.h
@@ -20,55 +20,37 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 #pragma once
 
+#include <memory>
 #include <QtCore/QString>
-#include <QtCore/QList>
-#include <QtCore/QMap>
+#include <QtCore/QSet>
+#include <QtGui/QImage>
 #include "codegen/style/structure_types.h"
 
 namespace codegen {
 namespace style {
 namespace structure {
-
-struct Variable {
-	FullName name;
-	Value value;
-
-	explicit operator bool() const {
-		return !name.isEmpty();
-	}
-};
-
-struct StructField {
-	FullName name;
-	Type type;
-
-	explicit operator bool() const {
-		return !name.isEmpty();
-	}
-};
-
-struct Struct {
-	FullName name;
-	QList<StructField> fields;
-
-	explicit operator bool() const {
-		return !name.isEmpty();
-	}
-};
-
-struct Module {
-	QString fullpath;
-	QList<Module> includes;
-	QList<Struct> structs;
-	QList<Variable> variables;
-	QMap<QString, int> structsByName;
-	QMap<QString, int> variablesByName;
-
-	explicit operator bool() const {
-		return !fullpath.isEmpty();
-	}
-};
-
+class Module;
 } // namespace structure
+
+class SpriteGenerator {
+public:
+	SpriteGenerator(const structure::Module &module);
+	SpriteGenerator(const SpriteGenerator &other) = delete;
+	SpriteGenerator &operator=(const SpriteGenerator &other) = delete;
+
+	bool writeSprites();
+
+private:
+
+	bool collectSprites();
+	QImage generateSprite(int scale); // scale = 5 for 125% and 6 for 150%.
+
+	const structure::Module &module_;
+	QString basePath_;
+	QImage sprite2x_;
+	QList<structure::Variable> sprites_;
+
+};
+
 } // namespace style
 } // namespace codegen
diff --git a/Telegram/SourceFiles/codegen/style/structure_types.cpp b/Telegram/SourceFiles/codegen/style/structure_types.cpp
index 15a973efd..0cb47e23e 100644
--- a/Telegram/SourceFiles/codegen/style/structure_types.cpp
+++ b/Telegram/SourceFiles/codegen/style/structure_types.cpp
@@ -20,8 +20,6 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 #include "codegen/style/structure_types.h"
 
-#include "codegen/style/structure.h"
-
 namespace codegen {
 namespace style {
 namespace structure {
@@ -117,15 +115,15 @@ struct Value::DataTypes {
 		data::font value_;
 
 	};
-	class TComplex : public DataBase {
+	class TFields : public DataBase {
 	public:
-		TComplex(data::complex value) : value_(value) {
+		TFields(data::fields value) : value_(value) {
 		}
-		const data::complex *Complex() const override { return &value_; }
-		data::complex *Complex() override { return &value_; }
+		const data::fields *Fields() const override { return &value_; }
+		data::fields *Fields() override { return &value_; }
 
 	private:
-		data::complex value_;
+		data::fields value_;
 
 	};
 };
@@ -133,9 +131,6 @@ struct Value::DataTypes {
 Value::Value() : Value(TypeTag::Invalid, std::make_shared<DataBase>()) {
 }
 
-Value::Value(double value) : Value(TypeTag::Double, std::make_shared<DataTypes::TDouble>(value)) {
-}
-
 Value::Value(data::point value) : Value(TypeTag::Point, std::make_shared<DataTypes::TPoint>(value)) {
 }
 
@@ -154,9 +149,16 @@ Value::Value(data::margins value) : Value(TypeTag::Margins, std::make_shared<Dat
 Value::Value(data::font value) : Value(TypeTag::Font, std::make_shared<DataTypes::TFont>(value)) {
 }
 
-Value::Value(const FullName &type, data::complex value)
+Value::Value(const FullName &type, data::fields value)
 : type_ { TypeTag::Struct, type }
-, data_(std::make_shared<DataTypes::TComplex>(value)) {
+, data_(std::make_shared<DataTypes::TFields>(value)) {
+}
+
+Value::Value(TypeTag type, double value) : Value(type, std::make_shared<DataTypes::TDouble>(value)) {
+	if (type_.tag != TypeTag::Double) {
+		type_.tag = TypeTag::Invalid;
+		data_ = std::make_shared<DataBase>();
+	}
 }
 
 Value::Value(TypeTag type, int value) : Value(type, std::make_shared<DataTypes::TInt>(value)) {
@@ -189,10 +191,10 @@ Value::Value(Type type, Qt::Initialization) : type_(type) {
 	case TypeTag::Size: data_ = std::make_shared<DataTypes::TSize>(data::size { 0, 0 }); break;
 	case TypeTag::Transition: data_ = std::make_shared<DataTypes::TString>("linear"); break;
 	case TypeTag::Cursor: data_ = std::make_shared<DataTypes::TString>("default"); break;
-	case TypeTag::Align: data_ = std::make_shared<DataTypes::TString>("left"); break;
+	case TypeTag::Align: data_ = std::make_shared<DataTypes::TString>("topleft"); break;
 	case TypeTag::Margins: data_ = std::make_shared<DataTypes::TMargins>(data::margins { 0, 0, 0, 0 }); break;
 	case TypeTag::Font: data_ = std::make_shared<DataTypes::TFont>(data::font { "", 13, 0 }); break;
-	case TypeTag::Struct: data_ = std::make_shared<DataTypes::TComplex>(data::complex {}); break;
+	case TypeTag::Struct: data_ = std::make_shared<DataTypes::TFields>(data::fields {}); break;
 	}
 }
 
diff --git a/Telegram/SourceFiles/codegen/style/structure_types.h b/Telegram/SourceFiles/codegen/style/structure_types.h
index 2e2703b3c..9146621fd 100644
--- a/Telegram/SourceFiles/codegen/style/structure_types.h
+++ b/Telegram/SourceFiles/codegen/style/structure_types.h
@@ -30,6 +30,9 @@ namespace structure {
 
 // List of names, like overview.document.bg
 using FullName = QStringList;
+inline std::string logFullName(const FullName &name) {
+	return name.join('.').toStdString();
+}
 
 struct Variable;
 
@@ -68,6 +71,10 @@ inline bool operator!=(const Type &a, const Type &b) {
 
 namespace data {
 
+inline int pxAdjust(int value, int scale) {
+	return qRound((value * scale / 4.) + (value > 0 ? -0.01 : 0.01));
+}
+
 struct point {
 	int x, y;
 };
@@ -85,29 +92,32 @@ struct margins {
 };
 struct font {
 	enum Flag {
-		Bold = 0x01,
-		Italic = 0x02,
+		Bold      = 0x01,
+		Italic    = 0x02,
 		Underline = 0x04,
 	};
 	std::string family;
 	int size;
 	int flags;
 };
-using complex = QList<Variable>;
+struct field; // defined after Variable is defined
+using fields = QList<field>;
 
 } // namespace data
 
 class Value {
 public:
 	Value();
-	Value(double value);
 	Value(data::point value);
 	Value(data::sprite value);
 	Value(data::size value);
 	Value(data::color value);
 	Value(data::margins value);
 	Value(data::font value);
-	Value(const FullName &type, data::complex value);
+	Value(const FullName &type, data::fields value);
+
+	// Can be only double.
+	Value(TypeTag type, double value);
 
 	// Can be int / pixels.
 	Value(TypeTag type, int value);
@@ -128,8 +138,8 @@ public:
 	data::color Color() const { return data_->Color(); };
 	data::margins Margins() const { return data_->Margins(); };
 	data::font Font() const { return data_->Font(); };
-	const data::complex *Complex() const { return data_->Complex(); };
-	data::complex *Complex() { return data_->Complex(); };
+	const data::fields *Fields() const { return data_->Fields(); };
+	data::fields *Fields() { return data_->Fields(); };
 
 	explicit operator bool() const {
 		return type_.tag != TypeTag::Invalid;
@@ -141,6 +151,10 @@ public:
 		return result;
 	}
 
+	const FullName &copyOf() const {
+		return copyOf_;
+	}
+
 private:
 	class DataBase {
 	public:
@@ -153,8 +167,8 @@ private:
 		virtual data::color Color() const { return {}; };
 		virtual data::margins Margins() const { return {}; };
 		virtual data::font Font() const { return {}; };
-		virtual const data::complex *Complex() const { return nullptr; };
-		virtual data::complex *Complex() { return nullptr; };
+		virtual const data::fields *Fields() const { return nullptr; };
+		virtual data::fields *Fields() { return nullptr; };
 		virtual ~DataBase() {
 		}
 	};
@@ -169,6 +183,45 @@ private:
 
 };
 
+struct Variable {
+	FullName name;
+	Value value;
+
+	explicit operator bool() const {
+		return !name.isEmpty();
+	}
+};
+
+namespace data {
+struct field {
+	enum class Status {
+		Uninitialized,
+		Implicit,
+		Explicit
+	};
+	Variable variable;
+	Status status;
+};
+} // namespace data
+
+struct StructField {
+	FullName name;
+	Type type;
+
+	explicit operator bool() const {
+		return !name.isEmpty();
+	}
+};
+
+struct Struct {
+	FullName name;
+	QList<StructField> fields;
+
+	explicit operator bool() const {
+		return !name.isEmpty();
+	}
+};
+
 } // namespace structure
 } // namespace style
 } // namespace codegen
diff --git a/Telegram/SourceFiles/core/basic_types.h b/Telegram/SourceFiles/core/basic_types.h
index 75757ba02..41d42cc57 100644
--- a/Telegram/SourceFiles/core/basic_types.h
+++ b/Telegram/SourceFiles/core/basic_types.h
@@ -813,8 +813,7 @@ inline QSharedPointer<T> MakeShared(Args&&... args) {
 template <typename T>
 class NeverFreedPointer {
 public:
-	explicit NeverFreedPointer() {
-	}
+	NeverFreedPointer() = default;
 	NeverFreedPointer(const NeverFreedPointer<T> &other) = delete;
 	NeverFreedPointer &operator=(const NeverFreedPointer<T> &other) = delete;
 
@@ -861,7 +860,7 @@ public:
 	}
 
 private:
-	T *_p = nullptr;
+	T *_p;
 
 };
 
diff --git a/Telegram/SourceFiles/dropdown.cpp b/Telegram/SourceFiles/dropdown.cpp
index 676ff0025..ceae67a46 100644
--- a/Telegram/SourceFiles/dropdown.cpp
+++ b/Telegram/SourceFiles/dropdown.cpp
@@ -2876,7 +2876,7 @@ void EmojiPan::paintEvent(QPaintEvent *e) {
 					}
 
 					if (rtl()) selx = width() - selx - st::rbEmoji.width;
-					p.setOpacity(skip ? qMax(1., selx / (skip * st::rbEmoji.width)) : 1.);
+					p.setOpacity(skip ? qMax(1., selx / float64(skip * st::rbEmoji.width)) : 1.);
 					p.fillRect(selx, _iconsTop + st::rbEmoji.height - st::stickerIconPadding, st::rbEmoji.width, st::stickerIconSel, st::stickerIconSelColor);
 
 					float64 o_left = snap(float64(_iconsX.current()) / st::stickerIconLeft.pxWidth(), 0., 1.);
diff --git a/Telegram/SourceFiles/ui/flatbutton.cpp b/Telegram/SourceFiles/ui/flatbutton.cpp
index 7079c2cb6..383c05d85 100644
--- a/Telegram/SourceFiles/ui/flatbutton.cpp
+++ b/Telegram/SourceFiles/ui/flatbutton.cpp
@@ -375,7 +375,7 @@ void BoxButton::resizeToText() {
 		resize(_textWidth - _st.width, _st.height);
 	} else {
 		if (_st.width < _textWidth + (_st.height - _st.font->height)) {
-			_text = _st.font->elided(_fullText, qMax(_st.width - (_st.height - _st.font->height), 1.));
+			_text = _st.font->elided(_fullText, qMax(_st.width - (_st.height - _st.font->height), 1));
 			_textWidth = _st.font->width(_text);
 		}
 		resize(_st.width, _st.height);
diff --git a/Telegram/SourceFiles/ui/flatcheckbox.cpp b/Telegram/SourceFiles/ui/flatcheckbox.cpp
index ea118134a..ddeb4f55e 100644
--- a/Telegram/SourceFiles/ui/flatcheckbox.cpp
+++ b/Telegram/SourceFiles/ui/flatcheckbox.cpp
@@ -250,7 +250,7 @@ Checkbox::Checkbox(QWidget *parent, const QString &text, bool checked, const sty
 		resize(_textWidth - _st.width, _st.height);
 	} else {
 		if (_st.width < _st.textPosition.x() + _textWidth + (_st.textPosition.x() - _st.diameter)) {
-			_text = _st.font->elided(_fullText, qMax(_st.width - (_st.textPosition.x() + (_st.textPosition.x() - _st.diameter)), 1.));
+			_text = _st.font->elided(_fullText, qMax(_st.width - (_st.textPosition.x() + (_st.textPosition.x() - _st.diameter)), 1));
 			_textWidth = _st.font->width(_text);
 		}
 		resize(_st.width, _st.height);
@@ -392,7 +392,7 @@ Radiobutton::Radiobutton(QWidget *parent, const QString &group, int32 value, con
 		resize(_textWidth - _st.width, _st.height);
 	} else {
 		if (_st.width < _st.textPosition.x() + _textWidth + (_st.textPosition.x() - _st.diameter)) {
-			_text = _st.font->elided(_fullText, qMax(_st.width - (_st.textPosition.x() + (_st.textPosition.x() - _st.diameter)), 1.));
+			_text = _st.font->elided(_fullText, qMax(_st.width - (_st.textPosition.x() + (_st.textPosition.x() - _st.diameter)), 1));
 			_textWidth = _st.font->width(_text);
 		}
 		resize(_st.width, _st.height);
diff --git a/Telegram/SourceFiles/ui/style.h b/Telegram/SourceFiles/ui/style.h
index b3108ab22..414541118 100644
--- a/Telegram/SourceFiles/ui/style.h
+++ b/Telegram/SourceFiles/ui/style.h
@@ -21,5 +21,5 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #pragma once
 
 #include "ui/style_core.h"
-#include "GeneratedFiles/style_classes.h"
-#include "GeneratedFiles/style_auto.h"
+#include "GeneratedFiles/styles/style_basic_types.h"
+#include "GeneratedFiles/styles/style_basic.h"
diff --git a/Telegram/SourceFiles/ui/style_core.cpp b/Telegram/SourceFiles/ui/style_core.cpp
index f1b52a7fa..e6ad6cbab 100644
--- a/Telegram/SourceFiles/ui/style_core.cpp
+++ b/Telegram/SourceFiles/ui/style_core.cpp
@@ -20,13 +20,63 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 #include "stdafx.h"
 
+namespace style {
 namespace {
-	typedef QMap<QString, uint32> FontFamilyMap;
-	FontFamilyMap _fontFamilyMap;
+using ModulesList = QList<internal::ModuleBase*>;
+NeverFreedPointer<ModulesList> styleModules;
+
+typedef QMap<QString, int> FontFamilyMap;
+FontFamilyMap fontFamilyMap;
+
+typedef QVector<QString> FontFamilies;
+FontFamilies _fontFamilies;
+
+typedef QMap<uint32, FontData*> FontDatas;
+FontDatas fontsMap;
+
+typedef QMap<uint32, ColorData*> ColorDatas;
+ColorDatas colorsMap;
+
+int spriteWidthValue = 0;
+QPixmap *spriteData = nullptr;
+
+inline uint32 fontKey(int size, uint32 flags, int family) {
+	return (((uint32(family) << 10) | uint32(size)) << 3) | flags;
 }
 
-namespace style {
-	FontData::FontData(uint32 size, uint32 flags, uint32 family, Font *other) : f(_fontFamilies[family]), m(f), _size(size), _flags(flags), _family(family) {
+} // namespace
+
+namespace internal {
+
+void registerModule(ModuleBase *module) {
+	styleModules.makeIfNull();
+	styleModules->push_back(module);
+}
+
+void unregisterModule(ModuleBase *module) {
+	styleModules->removeOne(module);
+	if (styleModules->isEmpty()) {
+		styleModules.clear();
+	}
+}
+
+int registerFontFamily(const QString &family) {
+	auto result = fontFamilyMap.value(family, -1);
+	if (result < 0) {
+		result = _fontFamilies.size();
+		fontFamilyMap.insert(family, result);
+		_fontFamilies.push_back(family);
+	}
+	return result;
+}
+
+int spriteWidth() {
+	return spriteWidthValue;
+}
+
+} // namespace internal
+
+	FontData::FontData(int size, uint32 flags, int family, Font *other) : f(_fontFamilies[family]), m(f), _size(size), _flags(flags), _family(family) {
 		if (other) {
 			memcpy(modified, other, sizeof(modified));
 		} else {
@@ -60,7 +110,7 @@ namespace style {
 		return otherFlagsFont(FontUnderline, set);
 	}
 
-	uint32 FontData::size() const {
+	int FontData::size() const {
 		return _size;
 	}
 
@@ -68,7 +118,7 @@ namespace style {
 		return _flags;
 	}
 
-	uint32 FontData::family() const {
+	int FontData::family() const {
 		return _family;
 	}
 
@@ -80,34 +130,34 @@ namespace style {
 		return modified[newFlags];
 	}
 
-	Font::Font(uint32 size, uint32 flags, const QString &family) {
-		if (_fontFamilyMap.isEmpty()) {
+	Font::Font(int size, uint32 flags, const QString &family) {
+		if (fontFamilyMap.isEmpty()) {
 			for (uint32 i = 0, s = style::_fontFamilies.size(); i != s; ++i) {
-				_fontFamilyMap.insert(style::_fontFamilies.at(i), i);
+				fontFamilyMap.insert(style::_fontFamilies.at(i), i);
 			}
 		}
 
-		FontFamilyMap::const_iterator i = _fontFamilyMap.constFind(family);
-		if (i == _fontFamilyMap.cend()) {
+		auto i = fontFamilyMap.constFind(family);
+		if (i == fontFamilyMap.cend()) {
 			style::_fontFamilies.push_back(family);
-			i = _fontFamilyMap.insert(family, style::_fontFamilies.size() - 1);
+			i = fontFamilyMap.insert(family, style::_fontFamilies.size() - 1);
 		}
 		init(size, flags, i.value(), 0);
 	}
 
-	Font::Font(uint32 size, uint32 flags, uint32 family) {
+	Font::Font(int size, uint32 flags, int family) {
 		init(size, flags, family, 0);
 	}
 
-	Font::Font(uint32 size, uint32 flags, uint32 family, Font *modified) {
+	Font::Font(int size, uint32 flags, int family, Font *modified) {
 		init(size, flags, family, modified);
 	}
 
-	void Font::init(uint32 size, uint32 flags, uint32 family, Font *modified) {
-		uint32 key = _fontKey(size, flags, family);
-		FontDatas::const_iterator i = _fontsMap.constFind(key);
-		if (i == _fontsMap.cend()) {
-			i = _fontsMap.insert(key, new FontData(size, flags, family, modified));
+	void Font::init(int size, uint32 flags, int family, Font *modified) {
+		uint32 key = fontKey(size, flags, family);
+		auto i = fontsMap.constFind(key);
+		if (i == fontsMap.cend()) {
+			i = fontsMap.insert(key, new FontData(size, flags, family, modified));
 		}
 		ptr = i.value();
 	}
@@ -141,9 +191,9 @@ namespace style {
 	}
 	void Color::init(uchar r, uchar g, uchar b, uchar a) {
 		uint32 key = colorKey(r, g, b, a);
-		ColorDatas::const_iterator i = _colorsMap.constFind(key);
-		if (i == _colorsMap.cend()) {
-			i = _colorsMap.insert(key, new ColorData(r, g, b, a));
+		auto i = colorsMap.constFind(key);
+		if (i == colorsMap.cend()) {
+			i = colorsMap.insert(key, new ColorData(r, g, b, a));
 		}
 		ptr = i.value();
 	}
@@ -163,16 +213,57 @@ namespace style {
 		b = QBrush(color);
 	}
 
-	void stopManager() {
-		for (FontDatas::const_iterator i = _fontsMap.cbegin(), e = _fontsMap.cend(); i != e; ++i) {
-			delete i.value();
+	void startManager() {
+		if (cRetina()) {
+			cSetRealScale(dbisOne);
 		}
-		_fontsMap.clear();
 
-		for (ColorDatas::const_iterator i = _colorsMap.cbegin(), e = _colorsMap.cend(); i != e; ++i) {
-			delete i.value();
+		internal::registerFontFamily(qsl("Open Sans"));
+		QString spriteFilePostfix;
+		if (cRetina() || cScale() == dbisTwo) {
+			spriteFilePostfix = qsl("_200x");
+		} else if (cScale() == dbisOneAndQuarter) {
+			spriteFilePostfix = qsl("_125x");
+		} else if (cScale() == dbisOneAndHalf) {
+			spriteFilePostfix = qsl("_150x");
 		}
-		_colorsMap.clear();
+		QString spriteFile = qsl(":/gui/art/sprite") + spriteFilePostfix + qsl(".png");
+		if (rtl()) {
+			spriteData = new QPixmap(QPixmap::fromImage(QImage(spriteFile).mirrored(true, false)));
+		} else {
+			spriteData = new QPixmap(spriteFile);
+		}
+		if (cRetina()) spriteData->setDevicePixelRatio(cRetinaFactor());
+		spriteWidthValue = spriteData->width();
+
+		if (styleModules) {
+			for_const (auto module, *styleModules) {
+				module->start();
+			}
+		}
+		_fontFamilies.push_back(qsl("Open Sans"));
+	}
+
+	void stopManager() {
+		if (styleModules) {
+			for_const (auto module, *styleModules) {
+				module->stop();
+			}
+		}
+
+		for (auto fontData : fontsMap) {
+			delete fontData;
+		}
+		fontsMap.clear();
+
+		for (auto colorData : colorsMap) {
+			delete colorData;
+		}
+		colorsMap.clear();
+	}
+
+	const QPixmap &spritePixmap() {
+		return *spriteData;
 	}
 
 };
diff --git a/Telegram/SourceFiles/ui/style_core.h b/Telegram/SourceFiles/ui/style_core.h
index 1528284d1..e440dd414 100644
--- a/Telegram/SourceFiles/ui/style_core.h
+++ b/Telegram/SourceFiles/ui/style_core.h
@@ -46,14 +46,31 @@ inline QRect centerrect(const QRect &inRect, const QRect &rect) {
 }
 
 namespace style {
+namespace internal {
+
+// Objects of derived classes are created in global scope.
+// They call [un]registerModule() in [de|con]structor.
+class ModuleBase {
+public:
+	virtual void start() = 0;
+	virtual void stop() = 0;
+};
+void registerModule(ModuleBase *module);
+void unregisterModule(ModuleBase *module);
+
+int registerFontFamily(const QString &family);
+
+int spriteWidth();
+
+} // namespace internal
 
 	class FontData;
 	class Font {
 	public:
 		Font(Qt::Initialization = Qt::Uninitialized) : ptr(0) {
 		}
-		Font(uint32 size, uint32 flags, const QString &family);
-		Font(uint32 size, uint32 flags = 0, uint32 family = 0);
+		Font(int size, uint32 flags, const QString &family);
+		Font(int size, uint32 flags = 0, int family = 0);
 
 		Font &operator=(const Font &other) {
 			ptr = other.ptr;
@@ -76,36 +93,24 @@ namespace style {
 	private:
 		FontData *ptr;
 
-		void init(uint32 size, uint32 flags, uint32 family, Font *modified);
+		void init(int size, uint32 flags, int family, Font *modified);
 		friend void startManager();
 
 		Font(FontData *p) : ptr(p) {
 		}
-		Font(uint32 size, uint32 flags, uint32 family, Font *modified);
+		Font(int size, uint32 flags, int family, Font *modified);
 		friend class FontData;
 
 	};
 
-	enum FontFlagBits {
-		FontBoldBit,
-		FontItalicBit,
-		FontUnderlineBit,
-
-		FontFlagsBits
-	};
-
 	enum FontFlags {
-		FontBold = (1 << FontBoldBit),
-		FontItalic = (1 << FontItalicBit),
-		FontUnderline = (1 << FontUnderlineBit),
+		FontBold           = 0x01,
+		FontItalic         = 0x02,
+		FontUnderline      = 0x04,
 
-		FontDifferentFlags = (1 << FontFlagsBits)
+		FontDifferentFlags = 0x08,
 	};
 
-	inline uint32 _fontKey(uint32 size, uint32 flags, uint32 family) {
-		return (((family << 10) | size) << FontFlagsBits) | flags;
-	}
-
 	class FontData {
 	public:
 
@@ -126,9 +131,9 @@ namespace style {
 		Font italic(bool set = true) const;
 		Font underline(bool set = true) const;
 
-		uint32 size() const;
+		int size() const;
 		uint32 flags() const;
-		uint32 family() const;
+		int family() const;
 
 		QFont f;
 		QFontMetrics m;
@@ -138,10 +143,12 @@ namespace style {
 		mutable Font modified[FontDifferentFlags];
 
 		Font otherFlagsFont(uint32 flag, bool set) const;
-		FontData(uint32 size, uint32 flags, uint32 family, Font *other);
+		FontData(int size, uint32 flags, int family, Font *other);
 
 		friend class Font;
-		uint32 _size, _flags, _family;
+		int _size;
+		uint32 _flags;
+		int _family;
 
 	};
 
@@ -159,7 +166,7 @@ namespace style {
 	class ColorData;
 	class Color {
 	public:
-		Color(Qt::Initialization = Qt::Uninitialized) : ptr(0), owner(false) {
+		Color(Qt::Initialization = Qt::Uninitialized) {
 		}
 		Color(const Color &c);
 		Color(const QColor &c);
@@ -185,8 +192,8 @@ namespace style {
 		}
 
 	private:
-		ColorData *ptr;
-		bool owner;
+		ColorData *ptr = nullptr;
+		bool owner = false;
 
 		void init(uchar r, uchar g, uchar b, uchar a);
 
@@ -233,17 +240,6 @@ namespace style {
 		return ptr->p;
 	}
 
-	typedef QVector<QString> FontFamilies;
-	extern FontFamilies _fontFamilies;
-
-	typedef QMap<uint32, FontData*> FontDatas;
-	extern FontDatas _fontsMap;
-
-	typedef QMap<uint32, ColorData*> ColorDatas;
-	extern ColorDatas _colorsMap;
-
-	extern int _spriteWidth;
-
 	typedef float64 number;
 	typedef QString string;
 	typedef QRect rect;
@@ -252,7 +248,7 @@ namespace style {
     public:
         sprite() {
         }
-		sprite(int left, int top, int width, int height) : rect(rtl() ? (_spriteWidth - left - width) : left, top, width, height) {
+		sprite(int left, int top, int width, int height) : rect(rtl() ? (internal::spriteWidth() - left - width) : left, top, width, height) {
         }
         inline int pxWidth() const {
             return rect::width() / cIntRetinaFactor();
@@ -314,8 +310,9 @@ namespace style {
 
 	void startManager();
 	void stopManager();
+	const QPixmap &spritePixmap();
 
-};
+} // namespace style
 
 inline QRect centersprite(const QRect &inRect, const style::sprite &sprite) {
 	return centerrect(inRect, QRect(QPoint(0, 0), sprite.pxSize()));
diff --git a/Telegram/Telegram.vcxproj b/Telegram/Telegram.vcxproj
index 3f3b24616..ff3e6f773 100644
--- a/Telegram/Telegram.vcxproj
+++ b/Telegram/Telegram.vcxproj
@@ -1051,7 +1051,13 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     </ClCompile>
-    <ClCompile Include="GeneratedFiles\style_auto.cpp" />
+    <ClCompile Include="GeneratedFiles\styles\style_basic.cpp" />
+    <ClCompile Include="GeneratedFiles\styles\style_basic_types.cpp" />
+    <ClCompile Include="GeneratedFiles\style_auto.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
     <ClCompile Include="SourceFiles\apiwrap.cpp" />
     <ClCompile Include="SourceFiles\app.cpp" />
     <ClCompile Include="SourceFiles\application.cpp" />
@@ -1245,6 +1251,8 @@
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
     </CustomBuild>
+    <ClInclude Include="GeneratedFiles\styles\style_basic.h" />
+    <ClInclude Include="GeneratedFiles\styles\style_basic_types.h" />
     <ClInclude Include="SourceFiles\core\click_handler.h" />
     <ClInclude Include="SourceFiles\core\click_handler_types.h" />
     <ClInclude Include="SourceFiles\dialogs\dialogs_common.h" />
@@ -1608,8 +1616,16 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
     </CustomBuild>
     <ClInclude Include="GeneratedFiles\lang_auto.h" />
-    <ClInclude Include="GeneratedFiles\style_auto.h" />
-    <ClInclude Include="GeneratedFiles\style_classes.h" />
+    <ClInclude Include="GeneratedFiles\style_auto.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="GeneratedFiles\style_classes.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </ClInclude>
     <ClInclude Include="resource.h" />
     <CustomBuild Include="SourceFiles\apiwrap.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2379,7 +2395,13 @@
     <None Include="Version" />
   </ItemGroup>
   <ItemGroup>
-    <CodegenStyleItem Include="Resources\all_files.style" />
+    <CodegenStyleItem Include="Resources\all_files.style">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </CodegenStyleItem>
+    <CodegenStyleItem Include="Resources\basic.style" />
+    <CodegenStyleItem Include="Resources\basic_types.style" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/Telegram/Telegram.vcxproj.filters b/Telegram/Telegram.vcxproj.filters
index 964d49b76..bd8a0352a 100644
--- a/Telegram/Telegram.vcxproj.filters
+++ b/Telegram/Telegram.vcxproj.filters
@@ -82,6 +82,9 @@
       <Extensions>cpp;moc</Extensions>
       <SourceControlFiles>False</SourceControlFiles>
     </Filter>
+    <Filter Include="GeneratedFiles\styles">
+      <UniqueIdentifier>{3397dfda-79f1-4a4c-940b-be26b001baf5}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="SourceFiles\main.cpp">
@@ -1077,6 +1080,12 @@
     <ClCompile Include="SourceFiles\ui\text\text_block.cpp">
       <Filter>SourceFiles\ui\text</Filter>
     </ClCompile>
+    <ClCompile Include="GeneratedFiles\styles\style_basic.cpp">
+      <Filter>GeneratedFiles\styles</Filter>
+    </ClCompile>
+    <ClCompile Include="GeneratedFiles\styles\style_basic_types.cpp">
+      <Filter>GeneratedFiles\styles</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="SourceFiles\stdafx.h">
@@ -1235,6 +1244,12 @@
     <ClInclude Include="SourceFiles\ui\text\text_block.h">
       <Filter>SourceFiles\ui\text</Filter>
     </ClInclude>
+    <ClInclude Include="GeneratedFiles\styles\style_basic.h">
+      <Filter>GeneratedFiles\styles</Filter>
+    </ClInclude>
+    <ClInclude Include="GeneratedFiles\styles\style_basic_types.h">
+      <Filter>GeneratedFiles\styles</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="SourceFiles\application.h">
@@ -1539,5 +1554,11 @@
     <CodegenStyleItem Include="Resources\all_files.style">
       <Filter>Resources</Filter>
     </CodegenStyleItem>
+    <CodegenStyleItem Include="Resources\basic.style">
+      <Filter>Resources</Filter>
+    </CodegenStyleItem>
+    <CodegenStyleItem Include="Resources\basic_types.style">
+      <Filter>Resources</Filter>
+    </CodegenStyleItem>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj b/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj
new file mode 100644
index 000000000..9e5a0eee3
--- /dev/null
+++ b/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\clean_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\cpp_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\logging.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\generator.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\main.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\options.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\parsed_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\processor.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file_reader.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\const_utf8_string.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\cpp_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\logging.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\generator.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\options.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\parsed_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\processor.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}</ProjectGuid>
+    <Keyword>Qt4VSv1.0</Keyword>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>14.0.24730.2</_ProjectFileVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(SolutionDir)$(Platform)\codegen\$(Configuration)\</OutDir>
+    <IntDir>$(SolutionDir)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(SolutionDir)$(Platform)\codegen\$(Configuration)\</OutDir>
+    <IntDir>$(SolutionDir)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization>Disabled</Optimization>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <AdditionalOptions>/w44062 /wd4127 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>ws2_32.lib;qtmaind.lib;qtharfbuzzngd.lib;qtpcred.lib;qtfreetyped.lib;Qt5Cored.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DebugInformationFormat />
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <AdditionalOptions>/w44062 /wd4127 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <AdditionalDependencies>ws2_32.lib;qtmain.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties MocDir=".\GeneratedFiles\$(ConfigurationName)" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" lupdateOptions="" lupdateOnBuild="0" lreleaseOptions="" Qt5Version_x0020_Win32="QtStatic" MocOptions="" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj.filters b/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj.filters
new file mode 100644
index 000000000..ed647d66b
--- /dev/null
+++ b/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj.filters
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="src">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;cxx;c;def</Extensions>
+    </Filter>
+    <Filter Include="src\common">
+      <UniqueIdentifier>{77524fac-2d55-437d-810f-c271326c7f95}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\numbers">
+      <UniqueIdentifier>{48ba9931-338f-4476-8d83-600d0ac4440e}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\clean_file.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\cpp_file.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\logging.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\main.cpp">
+      <Filter>src\numbers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\options.cpp">
+      <Filter>src\numbers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\processor.cpp">
+      <Filter>src\numbers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\parsed_file.cpp">
+      <Filter>src\numbers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\numbers\generator.cpp">
+      <Filter>src\numbers</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file_reader.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\const_utf8_string.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\cpp_file.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\logging.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\options.h">
+      <Filter>src\numbers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\processor.h">
+      <Filter>src\numbers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\parsed_file.h">
+      <Filter>src\numbers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\numbers\generator.h">
+      <Filter>src\numbers</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/Telegram/build/vc/codegen_style/codegen_style.targets b/Telegram/build/vc/codegen_style/codegen_style.targets
index 541943db3..f43879e86 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.targets
+++ b/Telegram/build/vc/codegen_style/codegen_style.targets
@@ -15,6 +15,6 @@
     Inputs="%(CodegenStyleItem.Identity)"
     Outputs=".\GeneratedFiles\styles\style_%(CodegenStyleItem.Filename).h;.\GeneratedFiles\styles\style_%(CodegenStyleItem.Filename).cpp">
   <Message Text="Generating style: %(CodegenStyleItem.Identity)" />
-  <Exec Command="$(SolutionDir)$(Platform)\codegen\$(Configuration)\codegen_style.exe %(CodegenStyleItem.Identity)"/>
+  <Exec Command="$(SolutionDir)$(Platform)\codegen\$(Configuration)\codegen_style.exe &quot;-I.\SourceFiles&quot; &quot;-o.\GeneratedFiles\styles&quot; %(CodegenStyleItem.Identity)"/>
  </Target>
 </Project>
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
index 29b8674b4..aa95a1a6b 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
@@ -14,11 +14,15 @@
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\clean_file.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\cpp_file.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\logging.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\generator.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\processor.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\module.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\options.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\parsed_file.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\main.cpp" />
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\sprite_generator.cpp" />
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\structure_types.cpp" />
   </ItemGroup>
   <ItemGroup>
@@ -27,11 +31,14 @@
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\basic_tokenized_file.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\clean_file.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\const_utf8_string.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\cpp_file.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\logging.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\generator.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\processor.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\options.h" />
-    <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\module.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\parsed_file.h" />
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\sprite_generator.h" />
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure_types.h" />
   </ItemGroup>
   <PropertyGroup Label="Globals">
@@ -86,7 +93,7 @@
       <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
       <AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>ws2_32.lib;qtmaind.lib;qtharfbuzzngd.lib;qtpcred.lib;qtfreetyped.lib;imageformats\qwebpd.lib;Qt5Cored.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;qtmaind.lib;qtharfbuzzngd.lib;qtpcred.lib;qtfreetyped.lib;imageformats\qwebpd.lib;Qt5Cored.lib;Qt5Guid.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -94,7 +101,7 @@
       <PreprocessorDefinitions>UNICODE;WIN32;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <DebugInformationFormat />
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
       <WarningLevel>Level4</WarningLevel>
       <TreatWarningAsError>true</TreatWarningAsError>
@@ -105,7 +112,7 @@
       <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
       <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>false</GenerateDebugInformation>
-      <AdditionalDependencies>qtmain.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;qtmain.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;imageformats\qwebp.lib;Qt5Core.lib;Qt5Gui.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
index 20abd6169..ba57a5469 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj.filters
@@ -22,9 +22,6 @@
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\logging.cpp">
       <Filter>src\common</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\SourceFiles\codegen\style\generator.cpp">
-      <Filter>src\style</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\SourceFiles\codegen\common\clean_file.cpp">
       <Filter>src\common</Filter>
     </ClCompile>
@@ -40,11 +37,23 @@
     <ClCompile Include="..\..\..\SourceFiles\codegen\style\structure_types.cpp">
       <Filter>src\style</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\module.cpp">
+      <Filter>src\style</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\common\cpp_file.cpp">
+      <Filter>src\common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\processor.cpp">
+      <Filter>src\style</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\generator.cpp">
+      <Filter>src\style</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\SourceFiles\codegen\style\sprite_generator.cpp">
+      <Filter>src\style</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\..\SourceFiles\codegen\style\generator.h">
-      <Filter>src\style</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\SourceFiles\codegen\common\checked_utf8_string.h">
       <Filter>src\common</Filter>
     </ClInclude>
@@ -66,14 +75,26 @@
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\options.h">
       <Filter>src\style</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure.h">
-      <Filter>src\style</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\parsed_file.h">
       <Filter>src\style</Filter>
     </ClInclude>
     <ClInclude Include="..\..\..\SourceFiles\codegen\style\structure_types.h">
       <Filter>src\style</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\module.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\common\cpp_file.h">
+      <Filter>src\common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\processor.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\generator.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\SourceFiles\codegen\style\sprite_generator.h">
+      <Filter>src\style</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file

From 6859109503d573b63280041588e9e1eb62e50402 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 19 Apr 2016 01:00:54 +0300
Subject: [PATCH 06/12] Replaced MetaStyle project with codegen_style/numbers
 in MSVC.

---
 Telegram.sln                                  | 12 ---
 .../codegen/common/basic_tokenized_file.cpp   |  3 +
 .../codegen/common/basic_tokenized_file.h     |  1 +
 .../SourceFiles/codegen/common/clean_file.cpp | 33 ++++---
 .../SourceFiles/codegen/common/clean_file.h   |  9 +-
 .../codegen/common/clean_file_reader.h        |  7 +-
 .../SourceFiles/codegen/numbers/generator.cpp | 56 ++++++++++++
 .../codegen/numbers/parsed_file.cpp           | 85 ++++++++++++++++++-
 .../SourceFiles/codegen/numbers/parsed_file.h |  6 +-
 Telegram/Telegram.vcxproj                     | 29 +------
 Telegram/Telegram.vcxproj.filters             | 15 +---
 .../vc/codegen_style/codegen_style.vcxproj    |  2 +-
 12 files changed, 184 insertions(+), 74 deletions(-)

diff --git a/Telegram.sln b/Telegram.sln
index b474402bc..0bcdb9682 100644
--- a/Telegram.sln
+++ b/Telegram.sln
@@ -5,15 +5,12 @@ VisualStudioVersion = 14.0.24720.0
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Telegram", "Telegram\Telegram.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}"
 	ProjectSection(ProjectDependencies) = postProject
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0} = {6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}
 		{E4DF8176-4DEF-4859-962F-B497E3E7A323} = {E4DF8176-4DEF-4859-962F-B497E3E7A323}
 		{E417CAA4-259B-4C99-88E3-805F1300E8EB} = {E417CAA4-259B-4C99-88E3-805F1300E8EB}
 		{EB7D16AC-EACF-4577-B05A-F28E5F356794} = {EB7D16AC-EACF-4577-B05A-F28E5F356794}
 		{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6} = {7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MetaStyle", "Telegram\MetaStyle.vcxproj", "{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MetaEmoji", "Telegram\MetaEmoji.vcxproj", "{EB7D16AC-EACF-4577-B05A-F28E5F356794}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Updater", "Telegram\Updater.vcxproj", "{6B4BA3BE-7B15-4B4C-B200-81ABFDEF2C76}"
@@ -48,15 +45,6 @@ Global
 		{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|Win32.ActiveCfg = Release|Win32
 		{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|Win32.Build.0 = Release|Win32
 		{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.ActiveCfg = Release|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Debug|Win32.Build.0 = Debug|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Debug|x64.ActiveCfg = Debug|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Deploy|Win32.ActiveCfg = Deploy|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Deploy|Win32.Build.0 = Deploy|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Deploy|x64.ActiveCfg = Release|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Release|Win32.ActiveCfg = Release|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Release|Win32.Build.0 = Release|Win32
-		{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Release|x64.ActiveCfg = Release|Win32
 		{EB7D16AC-EACF-4577-B05A-F28E5F356794}.Debug|Win32.ActiveCfg = Debug|Win32
 		{EB7D16AC-EACF-4577-B05A-F28E5F356794}.Debug|x64.ActiveCfg = Debug|Win32
 		{EB7D16AC-EACF-4577-B05A-F28E5F356794}.Deploy|Win32.ActiveCfg = Deploy|Win32
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
index 2a80bea35..7bbc9c59d 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
@@ -57,6 +57,9 @@ Token invalidToken() {
 BasicTokenizedFile::BasicTokenizedFile(const QString &filepath) : reader_(filepath) {
 }
 
+BasicTokenizedFile::BasicTokenizedFile(const QByteArray &content, const QString &filepath) : reader_(content, filepath) {
+}
+
 bool BasicTokenizedFile::putBack() {
 	if (currentToken_ > 0) {
 		--currentToken_;
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
index d33e06ee4..fcfcd27a4 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.h
@@ -37,6 +37,7 @@ class LogStream;
 class BasicTokenizedFile {
 public:
 	explicit BasicTokenizedFile(const QString &filepath);
+	explicit BasicTokenizedFile(const QByteArray &content, const QString &filepath = QString());
 	BasicTokenizedFile(const BasicTokenizedFile &other) = delete;
 	BasicTokenizedFile &operator=(const BasicTokenizedFile &other) = delete;
 
diff --git a/Telegram/SourceFiles/codegen/common/clean_file.cpp b/Telegram/SourceFiles/codegen/common/clean_file.cpp
index 154084792..ba104fe9b 100644
--- a/Telegram/SourceFiles/codegen/common/clean_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/clean_file.cpp
@@ -55,13 +55,22 @@ bool readFile(const QString &filepath, QByteArray *outResult) {
 } // namespace
 
 
-CleanFile::CleanFile(const QString &filepath) : filepath_(filepath) {
+CleanFile::CleanFile(const QString &filepath)
+: filepath_(filepath)
+, read_(true) {
+}
+
+CleanFile::CleanFile(const QByteArray &content, const QString &filepath)
+: filepath_(filepath)
+, content_(content)
+, read_(false) {
 }
 
 bool CleanFile::read() {
-	QByteArray content;
-	if (!readFile(filepath_, &content)) {
-		return false;
+	if (read_) {
+		if (!readFile(filepath_, &content_)) {
+			return false;
+		}
 	}
 	filepath_ = QFileInfo(filepath_).absoluteFilePath();
 
@@ -73,19 +82,19 @@ bool CleanFile::read() {
 	auto insideComment = InsideComment::None;
 	bool insideString = false;
 
-	const char *begin = content.cbegin(), *end = content.cend(), *offset = begin;
+	const char *begin = content_.cbegin(), *end = content_.cend(), *offset = begin;
 	auto feedContent = [this, &offset, end](const char *ch) {
 		if (ch > offset) {
-			if (content_.isEmpty()) content_.reserve(end - offset - 2);
-			content_.append(offset, ch - offset);
+			if (result_.isEmpty()) result_.reserve(end - offset - 2);
+			result_.append(offset, ch - offset);
 			offset = ch;
 		}
 	};
 	auto feedComment = [this, &offset, end](const char *ch) {
 		if (ch > offset) {
 //			comments_.push_back({ content_.size(), QByteArray(offset, ch - offset) });
-			if (content_.isEmpty()) content_.reserve(end - offset - 2);
-			content_.append(' ');
+			if (result_.isEmpty()) result_.reserve(end - offset - 2);
+			result_.append(' ');
 			offset = ch;
 		}
 	};
@@ -142,10 +151,10 @@ bool CleanFile::read() {
 		return false;
 	}
 	if (insideComment == InsideComment::None && end > offset) {
-		if (content_.isEmpty()) {
-			content_ = content;
+		if (result_.isEmpty()) {
+			result_ = content_;
 		} else {
-			content_.append(offset, end - offset);
+			result_.append(offset, end - offset);
 		}
 	}
 	return true;
diff --git a/Telegram/SourceFiles/codegen/common/clean_file.h b/Telegram/SourceFiles/codegen/common/clean_file.h
index 82edf5a79..8afbb7f36 100644
--- a/Telegram/SourceFiles/codegen/common/clean_file.h
+++ b/Telegram/SourceFiles/codegen/common/clean_file.h
@@ -33,16 +33,17 @@ namespace common {
 class CleanFile {
 public:
 	explicit CleanFile(const QString &filepath);
+	explicit CleanFile(const QByteArray &content, const QString &filepath = QString());
 	CleanFile(const CleanFile &other) = delete;
 	CleanFile &operator=(const CleanFile &other) = delete;
 
 	bool read();
 
 	const char *data() const {
-		return content_.constData();
+		return result_.constData();
 	}
 	const char *end() const {
-		return content_.constEnd();
+		return result_.constEnd();
 	}
 
 	static constexpr int MaxSize = 10 * 1024 * 1024;
@@ -52,8 +53,8 @@ public:
 
 private:
 	QString filepath_;
-
-	QByteArray content_;
+	QByteArray content_, result_;
+	bool read_;
 	//struct Comment {
 	//	int offset;
 	//	QByteArray content;
diff --git a/Telegram/SourceFiles/codegen/common/clean_file_reader.h b/Telegram/SourceFiles/codegen/common/clean_file_reader.h
index 18c8ee31e..923dd9bb0 100644
--- a/Telegram/SourceFiles/codegen/common/clean_file_reader.h
+++ b/Telegram/SourceFiles/codegen/common/clean_file_reader.h
@@ -30,7 +30,9 @@ namespace common {
 // Wrapper allows you to read forward the CleanFile without overflow checks.
 class CleanFileReader {
 public:
-	CleanFileReader(const QString &filepath) : file_(filepath) {
+	explicit CleanFileReader(const QString &filepath) : file_(filepath) {
+	}
+	explicit CleanFileReader(const QByteArray &content, const QString &filepath = QString()) : file_(content, filepath) {
 	}
 
 	bool read() {
@@ -57,6 +59,9 @@ public:
 	const char *currentPtr() const {
 		return pos_;
 	}
+	int charsLeft() const {
+		return (end_ - pos_);
+	}
 
 	// Log error to std::cerr with 'code' at line number 'line' in data().
 	LogStream logError(int code, int line) const {
diff --git a/Telegram/SourceFiles/codegen/numbers/generator.cpp b/Telegram/SourceFiles/codegen/numbers/generator.cpp
index e80f48297..4c6dcb8b8 100644
--- a/Telegram/SourceFiles/codegen/numbers/generator.cpp
+++ b/Telegram/SourceFiles/codegen/numbers/generator.cpp
@@ -47,6 +47,62 @@ bool Generator::writeHeader() {
 bool Generator::writeSource() {
 	source_ = std::make_unique<common::CppFile>(basePath_ + ".cpp", project_);
 
+	source_->stream() << "\
+QVector<int> phoneNumberParse(const QString &number) {\n\
+	QVector<int> result;\n\
+\n\
+	int32 len = number.size();\n\
+	if (len > 0) switch (number.at(0).unicode()) {\n";
+
+	QString already;
+	for (auto i = rules_.data.cend(), e = rules_.data.cbegin(); i != e;) {
+		--i;
+		QString k = i.key();
+		bool onlyLastChanged = true;
+		while (!already.isEmpty() && (already.size() > k.size() || !already.endsWith(k.at(already.size() - 1)))) {
+			if (!onlyLastChanged) {
+				source_->stream() << QString("\t").repeated(1 + already.size()) << "}\n";
+				source_->stream() << QString("\t").repeated(already.size()) << "break;\n";
+			}
+			already = already.mid(0, already.size() - 1);
+			onlyLastChanged = false;
+		}
+		if (already == k) {
+			source_->stream() << QString("\t").repeated(1 + already.size()) << "}\n";
+		} else {
+			bool onlyFirstCheck = true;
+			while (already.size() < k.size()) {
+				if (!onlyFirstCheck) source_->stream() << QString("\t").repeated(1 + already.size()) << "if (len > " << already.size() << ") switch (number.at(" << already.size() << ").unicode()) {\n";
+				source_->stream() << QString("\t").repeated(1 + already.size()) << "case '" << k.at(already.size()).toLatin1() << "':\n";
+				already.push_back(k.at(already.size()));
+				onlyFirstCheck = false;
+			}
+		}
+		if (i.value().isEmpty()) {
+			source_->stream() << QString("\t").repeated(1 + already.size()) << "return QVector<int>(1, " << k.size() << ");\n";
+		} else {
+			source_->stream() << QString("\t").repeated(1 + already.size()) << "result.reserve(" << (i.value().size() + 1) << ");\n";
+			source_->stream() << QString("\t").repeated(1 + already.size()) << "result.push_back(" << k.size() << ");\n";
+			for (int j = 0, l = i.value().size(); j < l; ++j) {
+				source_->stream() << QString("\t").repeated(1 + already.size()) << "result.push_back(" << i.value().at(j) << ");\n";
+			}
+			source_->stream() << QString("\t").repeated(1 + already.size()) << "return result;\n";
+		}
+	}
+	bool onlyLastChanged = true;
+	while (!already.isEmpty()) {
+		if (!onlyLastChanged) {
+			source_->stream() << QString("\t").repeated(1 + already.size()) << "}\n";
+		}
+		already = already.mid(0, already.size() - 1);
+		onlyLastChanged = false;
+	}
+	source_->stream() << "\
+	}\n\
+\n\
+	return result;\n\
+}\n";
+
 	return source_->finalize();
 }
 
diff --git a/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp b/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
index 3dc5508af..5fd4c81e4 100644
--- a/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
+++ b/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
@@ -26,6 +26,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #include <QtCore/QRegularExpression>
 #include "codegen/common/basic_tokenized_file.h"
 #include "codegen/common/logging.h"
+#include "codegen/common/clean_file_reader.h"
+#include "codegen/common/checked_utf8_string.h"
 
 using BasicToken = codegen::common::BasicTokenizedFile::Token;
 using BasicType = BasicToken::Type;
@@ -34,21 +36,98 @@ namespace codegen {
 namespace numbers {
 namespace {
 
+QByteArray replaceStrings(const QString &filepath) {
+	common::CleanFileReader reader(filepath);
+	if (!reader.read()) {
+		return QByteArray();
+	}
+	common::CheckedUtf8String string(reader.currentPtr(), reader.charsLeft());
+	if (!string.isValid()) {
+		return QByteArray();
+	}
+
+	QStringList lines = string.toString().split('\n');
+	for (auto &line : lines) {
+		auto match = QRegularExpression("^(\\d+;[A-Z]+;)([^;]+)(;.+)?$").match(line);
+		if (match.hasMatch()) {
+			line = match.captured(1) + '"' + match.captured(2) + '"' + match.captured(3);
+		}
+	}
+	return lines.join('\n').toUtf8();
+}
+
 } // namespace
 
 ParsedFile::ParsedFile(const Options &options)
-: file_(options.inputPath)
+: content_(replaceStrings(options.inputPath))
+, file_(content_, options.inputPath)
 , options_(options) {
 }
 
 bool ParsedFile::read() {
-	if (!file_.read()) {
+	if (content_.isEmpty() || !file_.read()) {
 		return false;
 	}
 
 	auto filepath = QFileInfo(options_.inputPath).absoluteFilePath();
 	do {
-		if (auto startToken = file_.getToken(BasicType::Name)) {
+		if (auto code = file_.getToken(BasicType::Int)) {
+			if (!file_.getToken(BasicType::Semicolon)) {
+				logErrorUnexpectedToken() << "';'";
+				return false;
+			}
+			if (!file_.getToken(BasicType::Name)) {
+				logErrorUnexpectedToken() << "country code";
+				return false;
+			}
+			if (!file_.getToken(BasicType::Semicolon)) {
+				logErrorUnexpectedToken() << "';'";
+				return false;
+			}
+			if (!file_.getToken(BasicType::String)) {
+				logErrorUnexpectedToken() << "country name";
+				return false;
+			}
+			if (file_.getToken(BasicType::Semicolon)) {
+				if (auto firstPart = file_.getToken(BasicType::Int)) {
+					if (firstPart.original.toByteArray() != code.original.toByteArray()) {
+						file_.putBack();
+						result_.data.insert(code.original.toStringUnchecked(), Rule());
+						continue;
+					}
+
+					Rule rule;
+					while (auto part = file_.getToken(BasicType::Name)) {
+						rule.push_back(part.original.size());
+					}
+					result_.data.insert(code.original.toStringUnchecked(), rule);
+					if (rule.isEmpty()) {
+						logErrorUnexpectedToken() << "bad phone pattern";
+						return false;
+					}
+
+					if (!file_.getToken(BasicType::Semicolon)) {
+						logErrorUnexpectedToken() << "';'";
+						return false;
+					}
+					if (!file_.getToken(BasicType::Int)) {
+						logErrorUnexpectedToken() << "country phone len";
+						return false;
+					}
+					file_.getToken(BasicType::Semicolon);
+					continue;
+				} else {
+					logErrorUnexpectedToken() << "country phone pattern";
+					return false;
+				}
+			} else if (file_.getToken(BasicType::Int)) {
+				file_.putBack();
+				result_.data.insert(code.original.toStringUnchecked(), Rule());
+				continue;
+			} else {
+				logErrorUnexpectedToken() << "country phone pattern";
+				return false;
+			}
 		}
 		if (file_.atEnd()) {
 			break;
diff --git a/Telegram/SourceFiles/codegen/numbers/parsed_file.h b/Telegram/SourceFiles/codegen/numbers/parsed_file.h
index 7f158b972..8c9609344 100644
--- a/Telegram/SourceFiles/codegen/numbers/parsed_file.h
+++ b/Telegram/SourceFiles/codegen/numbers/parsed_file.h
@@ -28,10 +28,9 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 namespace codegen {
 namespace numbers {
 
-struct Rule {
-};
+using Rule = QVector<int>;
 struct Rules {
-	QVector<Rule> data;
+	QMap<QString, Rule> data;
 };
 
 // Parses an input file to the internal struct.
@@ -63,6 +62,7 @@ private:
 		return file_.logErrorUnexpectedToken();
 	}
 
+	QByteArray content_;
 	common::BasicTokenizedFile file_;
 	Options options_;
 	bool failed_ = false;
diff --git a/Telegram/Telegram.vcxproj b/Telegram/Telegram.vcxproj
index ff3e6f773..6bf9744be 100644
--- a/Telegram/Telegram.vcxproj
+++ b/Telegram/Telegram.vcxproj
@@ -1053,11 +1053,6 @@
     </ClCompile>
     <ClCompile Include="GeneratedFiles\styles\style_basic.cpp" />
     <ClCompile Include="GeneratedFiles\styles\style_basic_types.cpp" />
-    <ClCompile Include="GeneratedFiles\style_auto.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="SourceFiles\apiwrap.cpp" />
     <ClCompile Include="SourceFiles\app.cpp" />
     <ClCompile Include="SourceFiles\application.cpp" />
@@ -1251,6 +1246,7 @@
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
     </CustomBuild>
+    <ClInclude Include="GeneratedFiles\numbers.h" />
     <ClInclude Include="GeneratedFiles\styles\style_basic.h" />
     <ClInclude Include="GeneratedFiles\styles\style_basic_types.h" />
     <ClInclude Include="SourceFiles\core\click_handler.h" />
@@ -1583,18 +1579,10 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
     </CustomBuild>
-    <CustomBuild Include="Resources\style_classes.txt">
-      <Outputs>.\GeneratedFiles\style_classes.h</Outputs>
-      <Command>"$(SolutionDir)$(Platform)\$(Configuration)Style\MetaStyle.exe" -classes_in ".\Resources\style_classes.txt" -classes_out ".\GeneratedFiles\style_classes.h" -styles_in ".\Resources\style.txt" -styles_out ".\GeneratedFiles\style_auto.h" -path_to_sprites ".\Resources\art\\"</Command>
-    </CustomBuild>
-    <CustomBuild Include="Resources\style.txt">
-      <Outputs>.\GeneratedFiles\style_auto.h</Outputs>
-      <Outputs>.\GeneratedFiles\style_auto.cpp</Outputs>
-      <Command>"$(SolutionDir)$(Platform)\$(Configuration)Style\MetaStyle.exe" -classes_in ".\Resources\style_classes.txt" -classes_out ".\GeneratedFiles\style_classes.h" -styles_in ".\Resources\style.txt" -styles_out ".\GeneratedFiles\style_auto.h" -path_to_sprites ".\Resources\art\\"</Command>
-    </CustomBuild>
     <CustomBuild Include="Resources\numbers.txt">
+      <Outputs>.\GeneratedFiles\numbers.h</Outputs>
       <Outputs>.\GeneratedFiles\numbers.cpp</Outputs>
-      <Command>"$(SolutionDir)$(Platform)\$(Configuration)Style\MetaStyle.exe" -classes_in ".\Resources\style_classes.txt" -classes_out ".\GeneratedFiles\style_classes.h" -styles_in ".\Resources\style.txt" -styles_out ".\GeneratedFiles\style_auto.h" -path_to_sprites ".\Resources\art\\"</Command>
+      <Command>"$(SolutionDir)$(Platform)\codegen\$(Configuration)\codegen_numbers.exe" "-o.\GeneratedFiles" ".\Resources\numbers.txt"</Command>
     </CustomBuild>
     <CustomBuild Include="Resources\lang.strings">
       <Outputs>.\GeneratedFiles\lang_auto.h</Outputs>
@@ -1616,16 +1604,6 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
     </CustomBuild>
     <ClInclude Include="GeneratedFiles\lang_auto.h" />
-    <ClInclude Include="GeneratedFiles\style_auto.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="GeneratedFiles\style_classes.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClInclude>
     <ClInclude Include="resource.h" />
     <CustomBuild Include="SourceFiles\apiwrap.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2229,7 +2207,6 @@
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
     </CustomBuild>
-    <ClInclude Include="SourceFiles\numbers.h" />
     <ClInclude Include="SourceFiles\pspecific.h" />
     <CustomBuild Include="SourceFiles\pspecific_linux.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
diff --git a/Telegram/Telegram.vcxproj.filters b/Telegram/Telegram.vcxproj.filters
index bd8a0352a..2a5b14af6 100644
--- a/Telegram/Telegram.vcxproj.filters
+++ b/Telegram/Telegram.vcxproj.filters
@@ -111,9 +111,6 @@
     <ClCompile Include="SourceFiles\mainwidget.cpp">
       <Filter>SourceFiles</Filter>
     </ClCompile>
-    <ClCompile Include="GeneratedFiles\style_auto.cpp">
-      <Filter>GeneratedFiles</Filter>
-    </ClCompile>
     <ClCompile Include="SourceFiles\app.cpp">
       <Filter>SourceFiles</Filter>
     </ClCompile>
@@ -1094,12 +1091,6 @@
     <ClInclude Include="SourceFiles\logs.h">
       <Filter>SourceFiles</Filter>
     </ClInclude>
-    <ClInclude Include="GeneratedFiles\style_auto.h">
-      <Filter>GeneratedFiles</Filter>
-    </ClInclude>
-    <ClInclude Include="GeneratedFiles\style_classes.h">
-      <Filter>GeneratedFiles</Filter>
-    </ClInclude>
     <ClInclude Include="SourceFiles\countries.h">
       <Filter>SourceFiles</Filter>
     </ClInclude>
@@ -1127,9 +1118,6 @@
     <ClInclude Include="SourceFiles\pspecific_mac_p.h">
       <Filter>SourceFiles</Filter>
     </ClInclude>
-    <ClInclude Include="SourceFiles\numbers.h">
-      <Filter>SourceFiles</Filter>
-    </ClInclude>
     <ClInclude Include="SourceFiles\config.h">
       <Filter>Version</Filter>
     </ClInclude>
@@ -1250,6 +1238,9 @@
     <ClInclude Include="GeneratedFiles\styles\style_basic_types.h">
       <Filter>GeneratedFiles\styles</Filter>
     </ClInclude>
+    <ClInclude Include="GeneratedFiles\numbers.h">
+      <Filter>GeneratedFiles</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="SourceFiles\application.h">
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
index aa95a1a6b..15a73d76a 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
@@ -100,7 +100,7 @@
     <ClCompile>
       <PreprocessorDefinitions>UNICODE;WIN32;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <DebugInformationFormat />
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
       <WarningLevel>Level4</WarningLevel>

From b4d69b847a0d130ab413ec311c91d9f3df49ddbd Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 19 Apr 2016 13:59:59 +0300
Subject: [PATCH 07/12] Xcode build now uses codegen_style/numbers. Xcode
 projects created.

---
 .gitignore                                    |   4 +-
 .../codegen/common/basic_tokenized_file.cpp   |   2 +-
 .../SourceFiles/codegen/common/clean_file.cpp |   5 +-
 .../codegen/numbers/parsed_file.cpp           |   2 +-
 Telegram/SourceFiles/history.cpp              |  12 +-
 Telegram/SourceFiles/intro/introwidget.h      |   2 +-
 Telegram/SourceFiles/numbers.h                |  24 -
 Telegram/SourceFiles/ui/style.h               |   4 +-
 Telegram/Telegram.xcodeproj/project.pbxproj   | 193 ++++++--
 Telegram/Telegram.xcodeproj/qt_preprocess.mak |  28 --
 .../codegen_numbers.xcodeproj/project.pbxproj | 371 ++++++++++++++++
 .../codegen_style.xcodeproj/project.pbxproj   | 413 ++++++++++++++++++
 12 files changed, 951 insertions(+), 109 deletions(-)
 delete mode 100644 Telegram/SourceFiles/numbers.h
 create mode 100644 Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj
 create mode 100644 Telegram/build/xcode/codegen_style/codegen_style.xcodeproj/project.pbxproj

diff --git a/.gitignore b/.gitignore
index 49c8fc4d5..fd44deed6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,8 +33,8 @@ ipch/
 ._*
 .qmake.stash
 /Mac/
-/Telegram/*.xcodeproj/xcuserdata/
-/Telegram/*.xcodeproj/project.xcworkspace/
+project.xcworkspace
+xcuserdata
 
 /Telegram/*.user.*
 /Linux/
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
index 7bbc9c59d..7713897dd 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
@@ -49,7 +49,7 @@ bool isWhitespaceChar(char ch) {
 }
 
 Token invalidToken() {
-	return { Type::Invalid, QString(), ConstUtf8String(nullptr, 0) };
+	return { Type::Invalid, QString(), ConstUtf8String(nullptr, 0), false };
 }
 
 } // namespace
diff --git a/Telegram/SourceFiles/codegen/common/clean_file.cpp b/Telegram/SourceFiles/codegen/common/clean_file.cpp
index ba104fe9b..f68896ebf 100644
--- a/Telegram/SourceFiles/codegen/common/clean_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/clean_file.cpp
@@ -40,8 +40,9 @@ bool readFile(const QString &filepath, QByteArray *outResult) {
 		logError(kErrorFileNotFound, filepath) << ": error: file does not exist.";
 		return false;
 	}
-	if (f.size() > CleanFile::MaxSize) {
-		logError(kErrorFileTooLarge, filepath) << "' is too large, size=" << f.size() << " > maxsize=" << CleanFile::MaxSize;
+	auto limit = CleanFile::MaxSize;
+	if (f.size() > limit) {
+		logError(kErrorFileTooLarge, filepath) << "' is too large, size=" << f.size() << " > maxsize=" << limit;
 		return false;
 	}
 	if (!f.open(QIODevice::ReadOnly)) {
diff --git a/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp b/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
index 5fd4c81e4..07c05f59e 100644
--- a/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
+++ b/Telegram/SourceFiles/codegen/numbers/parsed_file.cpp
@@ -48,7 +48,7 @@ QByteArray replaceStrings(const QString &filepath) {
 
 	QStringList lines = string.toString().split('\n');
 	for (auto &line : lines) {
-		auto match = QRegularExpression("^(\\d+;[A-Z]+;)([^;]+)(;.+)?$").match(line);
+		auto match = QRegularExpression("^(\\d+;[A-Z]+;)([^;]+)(;.*)?$").match(line);
 		if (match.hasMatch()) {
 			line = match.captured(1) + '"' + match.captured(2) + '"' + match.captured(3);
 		}
diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp
index 7970cfbe2..7765dd6a2 100644
--- a/Telegram/SourceFiles/history.cpp
+++ b/Telegram/SourceFiles/history.cpp
@@ -7401,9 +7401,9 @@ void HistoryMessage::draw(Painter &p, const QRect &r, TextSelection selection, u
 		}
 	}
 
-	uint64 animms = App::main() ? App::main()->animActiveTimeStart(this) : 0;
-	if (animms > 0 && animms <= ms) {
-		animms = ms - animms;
+	uint64 fullAnimMs = App::main() ? App::main()->animActiveTimeStart(this) : 0;
+	if (fullAnimMs > 0 && fullAnimMs <= ms) {
+		int animms = ms - fullAnimMs;
 		if (animms > st::activeFadeInDuration + st::activeFadeOutDuration) {
 			App::main()->stopAnimActive();
 		} else {
@@ -8192,9 +8192,9 @@ void HistoryService::draw(Painter &p, const QRect &r, TextSelection selection, u
 		height -= unreadbarh;
 	}
 
-	uint64 animms = App::main() ? App::main()->animActiveTimeStart(this) : 0;
-	if (animms > 0 && animms <= ms) {
-		animms = ms - animms;
+	uint64 fullAnimMs = App::main() ? App::main()->animActiveTimeStart(this) : 0;
+	if (fullAnimMs > 0 && fullAnimMs <= ms) {
+		int animms = ms - fullAnimMs;
 		if (animms > st::activeFadeInDuration + st::activeFadeOutDuration) {
 			App::main()->stopAnimActive();
 		} else {
diff --git a/Telegram/SourceFiles/intro/introwidget.h b/Telegram/SourceFiles/intro/introwidget.h
index 6c377f800..c569e2a3c 100644
--- a/Telegram/SourceFiles/intro/introwidget.h
+++ b/Telegram/SourceFiles/intro/introwidget.h
@@ -74,7 +74,7 @@ public:
 
 	void finish(const MTPUser &user, const QImage &photo = QImage());
 
-	void rpcClear();
+	void rpcClear() override;
 	void langChangeTo(int32 langId);
 
 	void nextStep(IntroStep *step) {
diff --git a/Telegram/SourceFiles/numbers.h b/Telegram/SourceFiles/numbers.h
deleted file mode 100644
index bbbf125e6..000000000
--- a/Telegram/SourceFiles/numbers.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-This file is part of Telegram Desktop,
-the official desktop version of Telegram messaging app, see https://telegram.org
-
-Telegram Desktop is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-It is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-In addition, as a special exception, the copyright holders give permission
-to link the code of portions of this program with the OpenSSL library.
-
-Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
-Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
-*/
-
-#pragma once
-
-QVector<int> phoneNumberParse(const QString &number);
diff --git a/Telegram/SourceFiles/ui/style.h b/Telegram/SourceFiles/ui/style.h
index 414541118..a2f01bbc1 100644
--- a/Telegram/SourceFiles/ui/style.h
+++ b/Telegram/SourceFiles/ui/style.h
@@ -21,5 +21,5 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 #pragma once
 
 #include "ui/style_core.h"
-#include "GeneratedFiles/styles/style_basic_types.h"
-#include "GeneratedFiles/styles/style_basic.h"
+#include "styles/style_basic_types.h"
+#include "styles/style_basic.h"
diff --git a/Telegram/Telegram.xcodeproj/project.pbxproj b/Telegram/Telegram.xcodeproj/project.pbxproj
index 679670ac5..ea7cbc981 100644
--- a/Telegram/Telegram.xcodeproj/project.pbxproj
+++ b/Telegram/Telegram.xcodeproj/project.pbxproj
@@ -23,7 +23,6 @@
 			isa = PBXAggregateTarget;
 			buildConfigurationList = 07C3AF3D194CCC310016CFF1 /* Build configuration list for PBXAggregateTarget "Meta Compile" */;
 			buildPhases = (
-				07C3AF3A194CCC310016CFF1 /* Meta Style */,
 				07C3AF3B194CCC310016CFF1 /* Meta Lang */,
 			);
 			dependencies = (
@@ -51,6 +50,9 @@
 		0732E4A9199E262300D50FE7 /* overviewwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0732E4A7199E262300D50FE7 /* overviewwidget.cpp */; };
 		0732E4AC199E268A00D50FE7 /* moc_overviewwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0732E4AB199E268A00D50FE7 /* moc_overviewwidget.cpp */; };
 		074756191A1372C600CA07F7 /* moc_basic_types.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 074756181A1372C600CA07F7 /* moc_basic_types.cpp */; };
+		0747FF7E1CC6435100096FC3 /* style_basic_types.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0747FF7A1CC6435100096FC3 /* style_basic_types.cpp */; };
+		0747FF7F1CC6435100096FC3 /* style_basic.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0747FF7C1CC6435100096FC3 /* style_basic.cpp */; };
+		0747FF851CC6458B00096FC3 /* numbers.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0747FF831CC6458B00096FC3 /* numbers.cpp */; };
 		074968D01A44D14C00394F46 /* languagebox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 074968CE1A44D14C00394F46 /* languagebox.cpp */; };
 		074968D21A44D1DF00394F46 /* moc_languagebox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 074968D11A44D1DF00394F46 /* moc_languagebox.cpp */; };
 		0749CE69194D723400345D61 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 07C3AF24194335ED0016CFF1 /* Images.xcassets */; };
@@ -77,9 +79,7 @@
 		077A4AF81CA41C38002188D2 /* connection_auto.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 077A4AEE1CA41C38002188D2 /* connection_auto.cpp */; };
 		077A4AF91CA41C38002188D2 /* connection_http.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 077A4AF01CA41C38002188D2 /* connection_http.cpp */; };
 		077A4AFA1CA41C38002188D2 /* connection_tcp.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 077A4AF21CA41C38002188D2 /* connection_tcp.cpp */; };
-		077A4AFB1CA41C38002188D2 /* generate.py in Resources */ = {isa = PBXBuildFile; fileRef = 077A4AF41CA41C38002188D2 /* generate.py */; };
 		077A4AFC1CA41C38002188D2 /* rsa_public_key.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 077A4AF51CA41C38002188D2 /* rsa_public_key.cpp */; };
-		077A4AFD1CA41C38002188D2 /* scheme.tl in Resources */ = {isa = PBXBuildFile; fileRef = 077A4AF61CA41C38002188D2 /* scheme.tl */; };
 		077A4B031CA41EE2002188D2 /* moc_connection_abstract.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 077A4AFF1CA41EE2002188D2 /* moc_connection_abstract.cpp */; };
 		077A4B041CA41EE2002188D2 /* moc_connection_auto.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 077A4B001CA41EE2002188D2 /* moc_connection_auto.cpp */; };
 		077A4B051CA41EE2002188D2 /* moc_connection_http.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 077A4B011CA41EE2002188D2 /* moc_connection_http.cpp */; };
@@ -90,8 +90,6 @@
 		07A6933519927B160099CB9F /* moc_mediaview.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07A6933419927B160099CB9F /* moc_mediaview.cpp */; };
 		07AF95F41AFD03B90060B057 /* qrc_telegram_emojis.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07AF95F21AFD03B90060B057 /* qrc_telegram_emojis.cpp */; };
 		07AF95F51AFD03B90060B057 /* qrc_telegram_mac.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07AF95F31AFD03B90060B057 /* qrc_telegram_mac.cpp */; };
-		07AF95F91AFD03C80060B057 /* telegram_emojis.qrc in Resources */ = {isa = PBXBuildFile; fileRef = 07AF95F71AFD03C80060B057 /* telegram_emojis.qrc */; };
-		07AF95FA1AFD03C80060B057 /* telegram_mac.qrc in Resources */ = {isa = PBXBuildFile; fileRef = 07AF95F81AFD03C80060B057 /* telegram_mac.qrc */; };
 		07B604321B46A0EC00CA29FE /* playerwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07B604301B46A0EC00CA29FE /* playerwidget.cpp */; };
 		07B604351B46A20900CA29FE /* moc_playerwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07B604341B46A20900CA29FE /* moc_playerwidget.cpp */; };
 		07B817091CB9A235006F7869 /* dialogs_indexed_list.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07B817021CB9A235006F7869 /* dialogs_indexed_list.cpp */; };
@@ -122,7 +120,6 @@
 		07DB674D1AD07C9200A51329 /* abstractbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07DB67491AD07C9200A51329 /* abstractbox.cpp */; };
 		07DB674E1AD07C9200A51329 /* sessionsbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07DB674B1AD07C9200A51329 /* sessionsbox.cpp */; };
 		07DB67511AD07CB800A51329 /* intropwdcheck.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07DB674F1AD07CB800A51329 /* intropwdcheck.cpp */; };
-		07DC42A01B5EA15300B6B888 /* numbers.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07DC429F1B5EA15300B6B888 /* numbers.cpp */; };
 		07DE92A01AA4923300A18F6F /* passcodewidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07DE929F1AA4923200A18F6F /* passcodewidget.cpp */; };
 		07DE92A71AA4925B00A18F6F /* autolockbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07DE92A31AA4925B00A18F6F /* autolockbox.cpp */; };
 		07DE92A81AA4925B00A18F6F /* passcodebox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 07DE92A51AA4925B00A18F6F /* passcodebox.cpp */; };
@@ -251,7 +248,6 @@
 		E8B28580819B882A5964561A /* moc_addcontactbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 81780025807318AEA3B8A6FF /* moc_addcontactbox.cpp */; settings = {ATTRIBUTES = (); }; };
 		E8D95529CED88F18818C9A8B /* introwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0771C4C94B623FC34BF62983 /* introwidget.cpp */; settings = {ATTRIBUTES = (); }; };
 		E97B3CFAB59B49BACFFC5F7C /* moc_title.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1080B6D395843B8F76A2E45E /* moc_title.cpp */; settings = {ATTRIBUTES = (); }; };
-		E9F1CE7F9B18C7C85A50E62D /* style_auto.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 99B8D38F7F5858601230911E /* style_auto.cpp */; settings = {ATTRIBUTES = (); }; };
 		EBE29731916DB43BF49FE7A4 /* aboutbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = C194EDD00F76216057D48A5C /* aboutbox.cpp */; settings = {ATTRIBUTES = (); }; };
 		ED2557A57C6782721DC494AF /* moc_connectionbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = FEC58F9D8A0963E5A9D4BE6F /* moc_connectionbox.cpp */; settings = {ATTRIBUTES = (); }; };
 		F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = FCC237CA5AD60B9BA4447615 /* Foundation.framework */; };
@@ -275,6 +271,34 @@
 			remoteGlobalIDString = 07084678195445A600B5AE3A;
 			remoteInfo = Updater;
 		};
+		0747FF1F1CC63E7E00096FC3 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0747FF1B1CC63E7E00096FC3 /* codegen_style.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 0747FE5A1CC62B8500096FC3;
+			remoteInfo = codegen_style;
+		};
+		0747FF2B1CC63E9900096FC3 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0747FF271CC63E9900096FC3 /* codegen_numbers.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 0747FEE61CC63AD900096FC3;
+			remoteInfo = codegen_numbers;
+		};
+		0747FF701CC63FF300096FC3 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0747FF1B1CC63E7E00096FC3 /* codegen_style.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = 0747FE591CC62B8500096FC3;
+			remoteInfo = codegen_style;
+		};
+		0747FF721CC63FFD00096FC3 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0747FF271CC63E9900096FC3 /* codegen_numbers.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = 0747FEE51CC63AD900096FC3;
+			remoteInfo = codegen_numbers;
+		};
 		07C3AF22194335970016CFF1 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 6DB9C3763D02B1415CD9D565 /* Project object */;
@@ -324,6 +348,15 @@
 		0732E4A8199E262300D50FE7 /* overviewwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = overviewwidget.h; path = SourceFiles/overviewwidget.h; sourceTree = SOURCE_ROOT; };
 		0732E4AB199E268A00D50FE7 /* moc_overviewwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_overviewwidget.cpp; path = GeneratedFiles/Debug/moc_overviewwidget.cpp; sourceTree = SOURCE_ROOT; };
 		074756181A1372C600CA07F7 /* moc_basic_types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_basic_types.cpp; path = GeneratedFiles/Debug/moc_basic_types.cpp; sourceTree = SOURCE_ROOT; };
+		0747FF1B1CC63E7E00096FC3 /* codegen_style.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = codegen_style.xcodeproj; path = build/xcode/codegen_style/codegen_style.xcodeproj; sourceTree = SOURCE_ROOT; };
+		0747FF271CC63E9900096FC3 /* codegen_numbers.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = codegen_numbers.xcodeproj; path = build/xcode/codegen_numbers/codegen_numbers.xcodeproj; sourceTree = SOURCE_ROOT; };
+		0747FF7A1CC6435100096FC3 /* style_basic_types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = style_basic_types.cpp; path = GeneratedFiles/styles/style_basic_types.cpp; sourceTree = SOURCE_ROOT; };
+		0747FF7B1CC6435100096FC3 /* style_basic_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = style_basic_types.h; path = GeneratedFiles/styles/style_basic_types.h; sourceTree = SOURCE_ROOT; };
+		0747FF7C1CC6435100096FC3 /* style_basic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = style_basic.cpp; path = GeneratedFiles/styles/style_basic.cpp; sourceTree = SOURCE_ROOT; };
+		0747FF7D1CC6435100096FC3 /* style_basic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = style_basic.h; path = GeneratedFiles/styles/style_basic.h; sourceTree = SOURCE_ROOT; };
+		0747FF811CC644FF00096FC3 /* numbers.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = numbers.txt; path = Resources/numbers.txt; sourceTree = SOURCE_ROOT; };
+		0747FF831CC6458B00096FC3 /* numbers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = numbers.cpp; path = GeneratedFiles/numbers.cpp; sourceTree = SOURCE_ROOT; };
+		0747FF841CC6458B00096FC3 /* numbers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = numbers.h; path = GeneratedFiles/numbers.h; sourceTree = SOURCE_ROOT; };
 		074968CC1A44D13400394F46 /* lang_it.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = lang_it.strings; path = Resources/langs/lang_it.strings; sourceTree = SOURCE_ROOT; };
 		074968CE1A44D14C00394F46 /* languagebox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = languagebox.cpp; path = SourceFiles/boxes/languagebox.cpp; sourceTree = SOURCE_ROOT; };
 		074968CF1A44D14C00394F46 /* languagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = languagebox.h; path = SourceFiles/boxes/languagebox.h; sourceTree = SOURCE_ROOT; };
@@ -448,8 +481,6 @@
 		07DB674C1AD07C9200A51329 /* sessionsbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sessionsbox.h; path = SourceFiles/boxes/sessionsbox.h; sourceTree = SOURCE_ROOT; };
 		07DB674F1AD07CB800A51329 /* intropwdcheck.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = intropwdcheck.cpp; path = SourceFiles/intro/intropwdcheck.cpp; sourceTree = SOURCE_ROOT; };
 		07DB67501AD07CB800A51329 /* intropwdcheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = intropwdcheck.h; path = SourceFiles/intro/intropwdcheck.h; sourceTree = SOURCE_ROOT; };
-		07DC429D1B5EA0E600B6B888 /* numbers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = numbers.h; path = SourceFiles/numbers.h; sourceTree = SOURCE_ROOT; };
-		07DC429F1B5EA15300B6B888 /* numbers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = numbers.cpp; path = GeneratedFiles/numbers.cpp; sourceTree = SOURCE_ROOT; };
 		07DE929F1AA4923200A18F6F /* passcodewidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = passcodewidget.cpp; path = SourceFiles/passcodewidget.cpp; sourceTree = SOURCE_ROOT; };
 		07DE92A21AA4924400A18F6F /* passcodewidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = passcodewidget.h; path = SourceFiles/passcodewidget.h; sourceTree = SOURCE_ROOT; };
 		07DE92A31AA4925B00A18F6F /* autolockbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = autolockbox.cpp; path = SourceFiles/boxes/autolockbox.cpp; sourceTree = SOURCE_ROOT; };
@@ -507,7 +538,6 @@
 		34E1DF19219C52D7DB20224A /* flatlabel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = flatlabel.h; path = SourceFiles/ui/flatlabel.h; sourceTree = "<absolute>"; };
 		36BDA5D01BED543A92886669 /* Telegram.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Telegram.pro; sourceTree = "<absolute>"; };
 		36F718DC72345A84987DB0F6 /* flatbutton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = flatbutton.h; path = SourceFiles/ui/flatbutton.h; sourceTree = "<absolute>"; };
-		39C1ADF085370E033CB7E7E1 /* style_classes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = style_classes.h; path = GeneratedFiles/style_classes.h; sourceTree = "<absolute>"; };
 		3A220FD1AE5AD9FE3DC073A4 /* moc_mainwidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mainwidget.cpp; path = GeneratedFiles/Debug/moc_mainwidget.cpp; sourceTree = "<absolute>"; };
 		3B3ED09AB00290D78CF1181B /* moc_dialogswidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_dialogswidget.cpp; path = GeneratedFiles/Debug/moc_dialogswidget.cpp; sourceTree = "<absolute>"; };
 		3BBB805F6180E363BF89151A /* qtaudio_coreaudio */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtaudio_coreaudio; path = "/usr/local/Qt-5.5.1/plugins/audio/libqtaudio_coreaudio$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
@@ -592,7 +622,6 @@
 		96ACDDE3DCB798B97F9EA2F4 /* file_download.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = file_download.h; path = SourceFiles/mtproto/file_download.h; sourceTree = "<absolute>"; };
 		9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
 		974DB34EEB8F83B91614C0B0 /* logs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = logs.cpp; path = SourceFiles/logs.cpp; sourceTree = "<absolute>"; };
-		99B8D38F7F5858601230911E /* style_auto.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = style_auto.cpp; path = GeneratedFiles/style_auto.cpp; sourceTree = "<absolute>"; };
 		9A55B8F7C143D66AD9EAE304 /* qgenericbearer */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qgenericbearer; path = "/usr/local/Qt-5.5.1/plugins/bearer/libqgenericbearer$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
 		9A69B711DE4B9C89BA803750 /* moc_aboutbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_aboutbox.cpp; path = GeneratedFiles/Debug/moc_aboutbox.cpp; sourceTree = "<absolute>"; };
 		9AB1479D7D63386FD2046620 /* flatinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = flatinput.cpp; path = SourceFiles/ui/flatinput.cpp; sourceTree = "<absolute>"; };
@@ -601,7 +630,6 @@
 		9D9F4744B2F9FF22569D4535 /* moc_countryinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_countryinput.cpp; path = GeneratedFiles/Debug/moc_countryinput.cpp; sourceTree = "<absolute>"; };
 		9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
 		9E0704DE8650D7952DC6B7AE /* moc_photosendbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_photosendbox.cpp; path = GeneratedFiles/Debug/moc_photosendbox.cpp; sourceTree = "<absolute>"; };
-		9EFD7CB36012BFC00CC79434 /* style_auto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = style_auto.h; path = GeneratedFiles/style_auto.h; sourceTree = "<absolute>"; };
 		A0090709DE1B155085362C36 /* introcode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = introcode.cpp; path = SourceFiles/intro/introcode.cpp; sourceTree = "<absolute>"; };
 		A1479F94376F9732B57C69DB /* moc_animation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_animation.cpp; path = GeneratedFiles/Debug/moc_animation.cpp; sourceTree = "<absolute>"; };
 		A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
@@ -763,6 +791,42 @@
 			name = minizip;
 			sourceTree = "<group>";
 		};
+		0747FE4F1CC62AE400096FC3 /* codegen */ = {
+			isa = PBXGroup;
+			children = (
+				0747FF271CC63E9900096FC3 /* codegen_numbers.xcodeproj */,
+				0747FF1B1CC63E7E00096FC3 /* codegen_style.xcodeproj */,
+			);
+			name = codegen;
+			sourceTree = "<group>";
+		};
+		0747FF1C1CC63E7E00096FC3 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				0747FF201CC63E7E00096FC3 /* codegen_style */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0747FF281CC63E9900096FC3 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				0747FF2C1CC63E9900096FC3 /* codegen_numbers */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0747FF791CC6434300096FC3 /* styles */ = {
+			isa = PBXGroup;
+			children = (
+				0747FF7A1CC6435100096FC3 /* style_basic_types.cpp */,
+				0747FF7B1CC6435100096FC3 /* style_basic_types.h */,
+				0747FF7C1CC6435100096FC3 /* style_basic.cpp */,
+				0747FF7D1CC6435100096FC3 /* style_basic.h */,
+			);
+			name = styles;
+			sourceTree = "<group>";
+		};
 		074968CB1A44D0B800394F46 /* langs */ = {
 			isa = PBXGroup;
 			children = (
@@ -832,14 +896,15 @@
 			isa = PBXGroup;
 			children = (
 				074968CB1A44D0B800394F46 /* langs */,
-				07D7EABC1A597DD000838BA2 /* Localizable.strings */,
-				07C3AF24194335ED0016CFF1 /* Images.xcassets */,
 				07080BCB1A4357F300741A51 /* lang.strings */,
+				0747FF811CC644FF00096FC3 /* numbers.txt */,
 				07C3AF2919433ABF0016CFF1 /* style_classes.txt */,
 				07C3AF2A19433ABF0016CFF1 /* style.txt */,
 				07AF95F71AFD03C80060B057 /* telegram_emojis.qrc */,
 				07AF95F81AFD03C80060B057 /* telegram_mac.qrc */,
 				1292B92B4848460640F6A391 /* telegram.qrc */,
+				07C3AF24194335ED0016CFF1 /* Images.xcassets */,
+				07D7EABC1A597DD000838BA2 /* Localizable.strings */,
 			);
 			name = Resources;
 			sourceTree = "<group>";
@@ -936,16 +1001,15 @@
 		25B08E2869634E9BCBA333A2 /* GeneratedFiles */ = {
 			isa = PBXGroup;
 			children = (
+				0747FF791CC6434300096FC3 /* styles */,
 				801973D3334D0FCA849CF485 /* Debug */,
-				07DC429F1B5EA15300B6B888 /* numbers.cpp */,
 				07080BCD1A43588C00741A51 /* lang_auto.cpp */,
 				07080BCE1A43588C00741A51 /* lang_auto.h */,
+				0747FF831CC6458B00096FC3 /* numbers.cpp */,
+				0747FF841CC6458B00096FC3 /* numbers.h */,
 				07AF95F21AFD03B90060B057 /* qrc_telegram_emojis.cpp */,
 				07AF95F31AFD03B90060B057 /* qrc_telegram_mac.cpp */,
 				D6FF6676816C4E374D374060 /* qrc_telegram.cpp */,
-				99B8D38F7F5858601230911E /* style_auto.cpp */,
-				9EFD7CB36012BFC00CC79434 /* style_auto.h */,
-				39C1ADF085370E033CB7E7E1 /* style_classes.h */,
 			);
 			name = GeneratedFiles;
 			sourceTree = "<Group>";
@@ -1067,7 +1131,6 @@
 				FE8FD20832B4C226E345CFBA /* mainwidget.h */,
 				07A69330199277BA0099CB9F /* mediaview.cpp */,
 				07A69331199277BA0099CB9F /* mediaview.h */,
-				07DC429D1B5EA0E600B6B888 /* numbers.h */,
 				0732E4A7199E262300D50FE7 /* overviewwidget.cpp */,
 				0732E4A8199E262300D50FE7 /* overviewwidget.h */,
 				07DE929F1AA4923200A18F6F /* passcodewidget.cpp */,
@@ -1284,7 +1347,7 @@
 		E8C543AB96796ECAA2E65C57 /* Telegram */ = {
 			isa = PBXGroup;
 			children = (
-				07084684195445A600B5AE3A /* Updater.xcodeproj */,
+				0747FE4F1CC62AE400096FC3 /* codegen */,
 				25B08E2869634E9BCBA333A2 /* GeneratedFiles */,
 				73F2E45FDEB381A085D37A49 /* SourceFiles */,
 				071AD8691C5E8504008C9E90 /* ThirdParty */,
@@ -1292,6 +1355,7 @@
 				AF39DD055C3EF8226FBE929D /* Frameworks */,
 				FE0A091FDBFB3E9C31B7A1BD /* Products */,
 				076B1C611CBFCC0F002C0BC2 /* Resources */,
+				07084684195445A600B5AE3A /* Updater.xcodeproj */,
 			);
 			name = Telegram;
 			sourceTree = "<Group>";
@@ -1311,6 +1375,8 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "Telegram" */;
 			buildPhases = (
+				0747FF741CC6408600096FC3 /* Generate styles */,
+				0747FF801CC6437300096FC3 /* Generate numbers */,
 				F7E50F631C51CD5B5DC0BC43 /* Compile Sources */,
 				D1C883685E82D5676953459A /* Link Binary With Libraries */,
 				07C3AF341948FC3B0016CFF1 /* Force Resources Directory */,
@@ -1321,6 +1387,8 @@
 			buildRules = (
 			);
 			dependencies = (
+				0747FF731CC63FFD00096FC3 /* PBXTargetDependency */,
+				0747FF711CC63FF300096FC3 /* PBXTargetDependency */,
 				69BB0D15D494AAF597C8D2CF /* PBXTargetDependency */,
 			);
 			name = Telegram;
@@ -1358,6 +1426,14 @@
 			productRefGroup = FE0A091FDBFB3E9C31B7A1BD /* Products */;
 			projectDirPath = "";
 			projectReferences = (
+				{
+					ProductGroup = 0747FF281CC63E9900096FC3 /* Products */;
+					ProjectRef = 0747FF271CC63E9900096FC3 /* codegen_numbers.xcodeproj */;
+				},
+				{
+					ProductGroup = 0747FF1C1CC63E7E00096FC3 /* Products */;
+					ProjectRef = 0747FF1B1CC63E7E00096FC3 /* codegen_style.xcodeproj */;
+				},
 				{
 					ProductGroup = 07084685195445A600B5AE3A /* Products */;
 					ProjectRef = 07084684195445A600B5AE3A /* Updater.xcodeproj */;
@@ -1380,6 +1456,20 @@
 			remoteRef = 07084688195445A700B5AE3A /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
+		0747FF201CC63E7E00096FC3 /* codegen_style */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = codegen_style;
+			remoteRef = 0747FF1F1CC63E7E00096FC3 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		0747FF2C1CC63E9900096FC3 /* codegen_numbers */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = codegen_numbers;
+			remoteRef = 0747FF2B1CC63E9900096FC3 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 /* End PBXReferenceProxy section */
 
 /* Begin PBXResourcesBuildPhase section */
@@ -1387,12 +1477,8 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				077A4AFB1CA41C38002188D2 /* generate.py in Resources */,
 				0749CE69194D723400345D61 /* Images.xcassets in Resources */,
-				07AF95FA1AFD03C80060B057 /* telegram_mac.qrc in Resources */,
 				07D7EABA1A597DD000838BA2 /* Localizable.strings in Resources */,
-				077A4AFD1CA41C38002188D2 /* scheme.tl in Resources */,
-				07AF95F91AFD03C80060B057 /* telegram_emojis.qrc in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1413,6 +1499,34 @@
 			shellPath = /bin/sh;
 			shellScript = "mkdir -p \"$CONFIGURATION_BUILD_DIR/$PRODUCT_NAME.app/Contents/Helpers\" && cp \"./../../Libraries/crashpad/crashpad/out/Release/crashpad_handler\" \"$CONFIGURATION_BUILD_DIR/$PRODUCT_NAME.app/Contents/Helpers/\"";
 		};
+		0747FF741CC6408600096FC3 /* Generate styles */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Generate styles";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "./../Mac/codegen/$CONFIGURATION/codegen_style \"-I./SourceFiles\" \"-o./GeneratedFiles/styles\" ./Resources/all_files.style --rebuild";
+		};
+		0747FF801CC6437300096FC3 /* Generate numbers */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Generate numbers";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "./../Mac/codegen/$CONFIGURATION/codegen_numbers \"-o./GeneratedFiles\" ./Resources/numbers.txt";
+		};
 		07489B6B1A28949600348CD9 /* Build Updater */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -1441,20 +1555,6 @@
 			shellPath = /bin/sh;
 			shellScript = "mkdir -p \"$CONFIGURATION_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources\"";
 		};
-		07C3AF3A194CCC310016CFF1 /* Meta Style */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = "Meta Style";
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "open ../Mac/DebugStyle/MetaStyle.app --args -classes_in \"../../Telegram/Resources/style_classes.txt\" -classes_out \"../../Telegram/GeneratedFiles/style_classes.h\" -styles_in \"../../Telegram/Resources/style.txt\" -styles_out \"../../Telegram/GeneratedFiles/style_auto.h\" -path_to_sprites \"../../Telegram/Resources/art/\"";
-		};
 		07C3AF3B194CCC310016CFF1 /* Meta Lang */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -1535,7 +1635,6 @@
 				8F65F0D95B1F0CEB859F2FB3 /* boxshadow.cpp in Compile Sources */,
 				07C8FE021CB66D97007A8702 /* inline_bot_layout_item.cpp in Compile Sources */,
 				D7EF8F129FCCE9AB3F3F081F /* button.cpp in Compile Sources */,
-				07DC42A01B5EA15300B6B888 /* numbers.cpp in Compile Sources */,
 				C03447C9A7D9FF73463B8BB5 /* countryinput.cpp in Compile Sources */,
 				07BE850F1A2093C9008ACB9F /* localstorage.cpp in Compile Sources */,
 				CDB0266A8B7CB20A95266BCD /* emoji_config.cpp in Compile Sources */,
@@ -1557,7 +1656,6 @@
 				077A4B061CA41EE2002188D2 /* moc_connection_tcp.cpp in Compile Sources */,
 				FCE6518C548DF7BC82228A4A /* twidget.cpp in Compile Sources */,
 				071AD8D21C5E8E6D008C9E90 /* zip.c in Compile Sources */,
-				E9F1CE7F9B18C7C85A50E62D /* style_auto.cpp in Compile Sources */,
 				EBE29731916DB43BF49FE7A4 /* aboutbox.cpp in Compile Sources */,
 				4426AF526AAD86D6F73CE36F /* addcontactbox.cpp in Compile Sources */,
 				07D7034B19B8755A00C4EED2 /* audio.cpp in Compile Sources */,
@@ -1601,6 +1699,7 @@
 				0710CA051B0B9404001B4272 /* moc_stickersetbox.cpp in Compile Sources */,
 				07DE92A71AA4925B00A18F6F /* autolockbox.cpp in Compile Sources */,
 				07D8509919F8320900623D75 /* usernamebox.cpp in Compile Sources */,
+				0747FF7E1CC6435100096FC3 /* style_basic_types.cpp in Compile Sources */,
 				A469EC9C4C367E0B773A9BB7 /* moc_settingswidget.cpp in Compile Sources */,
 				FD2FE0C564A7389A2E609EC7 /* moc_sysbuttons.cpp in Compile Sources */,
 				E97B3CFAB59B49BACFFC5F7C /* moc_title.cpp in Compile Sources */,
@@ -1615,6 +1714,7 @@
 				07080BCF1A43588C00741A51 /* lang_auto.cpp in Compile Sources */,
 				07539B1D1A1416AF00083EFC /* moc_history.cpp in Compile Sources */,
 				07C8FE121CB80915007A8702 /* moc_toast_manager.cpp in Compile Sources */,
+				0747FF851CC6458B00096FC3 /* numbers.cpp in Compile Sources */,
 				077A4AFC1CA41C38002188D2 /* rsa_public_key.cpp in Compile Sources */,
 				2A500B102B7CE80F3EB6E13E /* moc_file_download.cpp in Compile Sources */,
 				07A6933519927B160099CB9F /* moc_mediaview.cpp in Compile Sources */,
@@ -1664,6 +1764,7 @@
 				0F7872E39EA570249D420912 /* moc_introwidget.cpp in Compile Sources */,
 				4F27F5F76AA3F78C8CA27339 /* moc_introcode.cpp in Compile Sources */,
 				07D8509519F5C97E00623D75 /* scheme_auto.cpp in Compile Sources */,
+				0747FF7F1CC6435100096FC3 /* style_basic.cpp in Compile Sources */,
 				0250AB6761AC71A2E3155EEA /* moc_introphone.cpp in Compile Sources */,
 				07D8509419F5C97E00623D75 /* core_types.cpp in Compile Sources */,
 				2EF5D0AC9A18F9FE9B8A1ACA /* moc_introsignup.cpp in Compile Sources */,
@@ -1678,6 +1779,16 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		0747FF711CC63FF300096FC3 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = codegen_style;
+			targetProxy = 0747FF701CC63FF300096FC3 /* PBXContainerItemProxy */;
+		};
+		0747FF731CC63FFD00096FC3 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = codegen_numbers;
+			targetProxy = 0747FF721CC63FFD00096FC3 /* PBXContainerItemProxy */;
+		};
 		07C3AF42194CCC510016CFF1 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 07C3AF39194CCC310016CFF1 /* Meta Compile */;
@@ -1773,7 +1884,6 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = SourceFiles/stdafx.h;
 				GCC_STRICT_ALIASING = NO;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNDECLARED_SELECTOR = YES;
@@ -1915,7 +2025,6 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = SourceFiles/stdafx.h;
 				GCC_STRICT_ALIASING = NO;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNDECLARED_SELECTOR = YES;
diff --git a/Telegram/Telegram.xcodeproj/qt_preprocess.mak b/Telegram/Telegram.xcodeproj/qt_preprocess.mak
index 610300e3e..b033462ff 100644
--- a/Telegram/Telegram.xcodeproj/qt_preprocess.mak
+++ b/Telegram/Telegram.xcodeproj/qt_preprocess.mak
@@ -411,8 +411,6 @@ GeneratedFiles/Debug/moc_settingswidget.cpp: SourceFiles/ui/flatbutton.h \
 		../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
 		../../Libraries/QtStatic/qtbase/include/QtGui/QColor \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/sysbuttons.h \
 		SourceFiles/settingswidget.h
 	/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/settingswidget.h -o GeneratedFiles/Debug/moc_settingswidget.cpp
@@ -587,8 +585,6 @@ GeneratedFiles/Debug/moc_popupmenu.cpp: ../../Libraries/QtStatic/qtbase/include/
 
 GeneratedFiles/Debug/moc_countryinput.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/flatinput.h \
 		../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/ui/animation.h \
@@ -618,8 +614,6 @@ GeneratedFiles/Debug/moc_flatbutton.cpp: SourceFiles/ui/button.h \
 		../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
 		../../Libraries/QtStatic/qtbase/include/QtGui/QColor \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/flatbutton.h
 	/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/ui/flatbutton.h -o GeneratedFiles/Debug/moc_flatbutton.cpp
 
@@ -631,8 +625,6 @@ GeneratedFiles/Debug/moc_flatcheckbox.cpp: SourceFiles/ui/button.h \
 
 GeneratedFiles/Debug/moc_flatinput.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/animation.h \
 		SourceFiles/core/basic_types.h \
 		../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
@@ -643,15 +635,11 @@ GeneratedFiles/Debug/moc_flatinput.cpp: ../../Libraries/QtStatic/qtbase/include/
 	/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/ui/flatinput.h -o GeneratedFiles/Debug/moc_flatinput.cpp
 
 GeneratedFiles/Debug/moc_flatlabel.cpp: SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/flatlabel.h
 	/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/ui/flatlabel.h -o GeneratedFiles/Debug/moc_flatlabel.cpp
 
 GeneratedFiles/Debug/moc_flattextarea.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QTextEdit \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/animation.h \
 		SourceFiles/core/basic_types.h \
 		../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
@@ -663,8 +651,6 @@ GeneratedFiles/Debug/moc_flattextarea.cpp: ../../Libraries/QtStatic/qtbase/inclu
 
 GeneratedFiles/Debug/moc_scrollarea.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QScrollArea \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/scrollarea.h
 	/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/ui/scrollarea.h -o GeneratedFiles/Debug/moc_scrollarea.cpp
 
@@ -706,8 +692,6 @@ GeneratedFiles/Debug/moc_connectionbox.cpp: SourceFiles/boxes/abstractbox.h \
 		SourceFiles/ui/flatinput.h \
 		../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/animation.h \
 		SourceFiles/core/basic_types.h \
 		../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
@@ -727,8 +711,6 @@ GeneratedFiles/Debug/moc_downloadpathbox.cpp: SourceFiles/boxes/abstractbox.h \
 		SourceFiles/ui/flatinput.h \
 		../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/animation.h \
 		SourceFiles/core/basic_types.h \
 		../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
@@ -793,8 +775,6 @@ GeneratedFiles/Debug/moc_introwidget.cpp: ../../Libraries/QtStatic/qtbase/includ
 		../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
 		../../Libraries/QtStatic/qtbase/include/QtGui/QColor \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/intro/introwidget.h
 	/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/intro/introwidget.h -o GeneratedFiles/Debug/moc_introwidget.cpp
 
@@ -810,8 +790,6 @@ GeneratedFiles/Debug/moc_introcode.cpp: ../../Libraries/QtStatic/qtbase/include/
 		../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
 		../../Libraries/QtStatic/qtbase/include/QtGui/QColor \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/flatinput.h \
 		../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/intro/introwidget.h \
@@ -830,8 +808,6 @@ GeneratedFiles/Debug/moc_introphone.cpp: ../../Libraries/QtStatic/qtbase/include
 		../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
 		../../Libraries/QtStatic/qtbase/include/QtGui/QColor \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/flatinput.h \
 		../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/ui/countryinput.h \
@@ -854,8 +830,6 @@ GeneratedFiles/Debug/moc_intropwdcheck.cpp: ../../Libraries/QtStatic/qtbase/incl
 		../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
 		../../Libraries/QtStatic/qtbase/include/QtGui/QColor \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/flatinput.h \
 		../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/ui/countryinput.h \
@@ -878,8 +852,6 @@ GeneratedFiles/Debug/moc_introsignup.cpp: ../../Libraries/QtStatic/qtbase/includ
 		../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
 		../../Libraries/QtStatic/qtbase/include/QtGui/QColor \
 		SourceFiles/ui/style.h \
-		GeneratedFiles/style_classes.h \
-		GeneratedFiles/style_auto.h \
 		SourceFiles/ui/flatinput.h \
 		../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
 		SourceFiles/intro/introwidget.h \
diff --git a/Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj b/Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..cde163d15
--- /dev/null
+++ b/Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj
@@ -0,0 +1,371 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		0747FEFC1CC63B6100096FC3 /* basic_tokenized_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEF01CC63B6100096FC3 /* basic_tokenized_file.cpp */; };
+		0747FEFD1CC63B6100096FC3 /* checked_utf8_string.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEF21CC63B6100096FC3 /* checked_utf8_string.cpp */; };
+		0747FEFE1CC63B6100096FC3 /* clean_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEF51CC63B6100096FC3 /* clean_file.cpp */; };
+		0747FEFF1CC63B6100096FC3 /* cpp_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEF81CC63B6100096FC3 /* cpp_file.cpp */; };
+		0747FF001CC63B6100096FC3 /* logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEFA1CC63B6100096FC3 /* logging.cpp */; };
+		0747FF0D1CC63BAC00096FC3 /* generator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FF041CC63BAC00096FC3 /* generator.cpp */; };
+		0747FF0E1CC63BAC00096FC3 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FF061CC63BAC00096FC3 /* main.cpp */; };
+		0747FF0F1CC63BAC00096FC3 /* options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FF071CC63BAC00096FC3 /* options.cpp */; };
+		0747FF101CC63BAC00096FC3 /* parsed_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FF091CC63BAC00096FC3 /* parsed_file.cpp */; };
+		0747FF111CC63BAC00096FC3 /* processor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FF0B1CC63BAC00096FC3 /* processor.cpp */; };
+		0747FF141CC63BD800096FC3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FF131CC63BD800096FC3 /* CoreFoundation.framework */; };
+		0747FF161CC63D4500096FC3 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FF151CC63D4500096FC3 /* CoreServices.framework */; };
+		0747FF181CC63D4F00096FC3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FF171CC63D4F00096FC3 /* Cocoa.framework */; };
+		0747FF1A1CC63DA100096FC3 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FF191CC63DA100096FC3 /* CoreText.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		0747FEE41CC63AD900096FC3 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		0747FEE61CC63AD900096FC3 /* codegen_numbers */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = codegen_numbers; sourceTree = BUILT_PRODUCTS_DIR; };
+		0747FEF01CC63B6100096FC3 /* basic_tokenized_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = basic_tokenized_file.cpp; path = ../../../SourceFiles/codegen/common/basic_tokenized_file.cpp; sourceTree = "<group>"; };
+		0747FEF11CC63B6100096FC3 /* basic_tokenized_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = basic_tokenized_file.h; path = ../../../SourceFiles/codegen/common/basic_tokenized_file.h; sourceTree = "<group>"; };
+		0747FEF21CC63B6100096FC3 /* checked_utf8_string.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = checked_utf8_string.cpp; path = ../../../SourceFiles/codegen/common/checked_utf8_string.cpp; sourceTree = "<group>"; };
+		0747FEF31CC63B6100096FC3 /* checked_utf8_string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = checked_utf8_string.h; path = ../../../SourceFiles/codegen/common/checked_utf8_string.h; sourceTree = "<group>"; };
+		0747FEF41CC63B6100096FC3 /* clean_file_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = clean_file_reader.h; path = ../../../SourceFiles/codegen/common/clean_file_reader.h; sourceTree = "<group>"; };
+		0747FEF51CC63B6100096FC3 /* clean_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = clean_file.cpp; path = ../../../SourceFiles/codegen/common/clean_file.cpp; sourceTree = "<group>"; };
+		0747FEF61CC63B6100096FC3 /* clean_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = clean_file.h; path = ../../../SourceFiles/codegen/common/clean_file.h; sourceTree = "<group>"; };
+		0747FEF71CC63B6100096FC3 /* const_utf8_string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = const_utf8_string.h; path = ../../../SourceFiles/codegen/common/const_utf8_string.h; sourceTree = "<group>"; };
+		0747FEF81CC63B6100096FC3 /* cpp_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpp_file.cpp; path = ../../../SourceFiles/codegen/common/cpp_file.cpp; sourceTree = "<group>"; };
+		0747FEF91CC63B6100096FC3 /* cpp_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cpp_file.h; path = ../../../SourceFiles/codegen/common/cpp_file.h; sourceTree = "<group>"; };
+		0747FEFA1CC63B6100096FC3 /* logging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = logging.cpp; path = ../../../SourceFiles/codegen/common/logging.cpp; sourceTree = "<group>"; };
+		0747FEFB1CC63B6100096FC3 /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../../../SourceFiles/codegen/common/logging.h; sourceTree = "<group>"; };
+		0747FF041CC63BAC00096FC3 /* generator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = generator.cpp; path = ../../../SourceFiles/codegen/numbers/generator.cpp; sourceTree = "<group>"; };
+		0747FF051CC63BAC00096FC3 /* generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = generator.h; path = ../../../SourceFiles/codegen/numbers/generator.h; sourceTree = "<group>"; };
+		0747FF061CC63BAC00096FC3 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../../SourceFiles/codegen/numbers/main.cpp; sourceTree = "<group>"; };
+		0747FF071CC63BAC00096FC3 /* options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = options.cpp; path = ../../../SourceFiles/codegen/numbers/options.cpp; sourceTree = "<group>"; };
+		0747FF081CC63BAC00096FC3 /* options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = options.h; path = ../../../SourceFiles/codegen/numbers/options.h; sourceTree = "<group>"; };
+		0747FF091CC63BAC00096FC3 /* parsed_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parsed_file.cpp; path = ../../../SourceFiles/codegen/numbers/parsed_file.cpp; sourceTree = "<group>"; };
+		0747FF0A1CC63BAC00096FC3 /* parsed_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parsed_file.h; path = ../../../SourceFiles/codegen/numbers/parsed_file.h; sourceTree = "<group>"; };
+		0747FF0B1CC63BAC00096FC3 /* processor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = processor.cpp; path = ../../../SourceFiles/codegen/numbers/processor.cpp; sourceTree = "<group>"; };
+		0747FF0C1CC63BAC00096FC3 /* processor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = processor.h; path = ../../../SourceFiles/codegen/numbers/processor.h; sourceTree = "<group>"; };
+		0747FF131CC63BD800096FC3 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+		0747FF151CC63D4500096FC3 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
+		0747FF171CC63D4F00096FC3 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+		0747FF191CC63DA100096FC3 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		0747FEE31CC63AD900096FC3 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				0747FF1A1CC63DA100096FC3 /* CoreText.framework in Frameworks */,
+				0747FF181CC63D4F00096FC3 /* Cocoa.framework in Frameworks */,
+				0747FF161CC63D4500096FC3 /* CoreServices.framework in Frameworks */,
+				0747FF141CC63BD800096FC3 /* CoreFoundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		0747FEDD1CC63AD900096FC3 = {
+			isa = PBXGroup;
+			children = (
+				0747FF021CC63B7500096FC3 /* src */,
+				0747FF381CC63EFF00096FC3 /* Frameworks */,
+				0747FEE71CC63AD900096FC3 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		0747FEE71CC63AD900096FC3 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				0747FEE61CC63AD900096FC3 /* codegen_numbers */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0747FF021CC63B7500096FC3 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				0747FF031CC63B7E00096FC3 /* common */,
+				0747FF121CC63BB100096FC3 /* numbers */,
+			);
+			name = src;
+			sourceTree = "<group>";
+		};
+		0747FF031CC63B7E00096FC3 /* common */ = {
+			isa = PBXGroup;
+			children = (
+				0747FEF01CC63B6100096FC3 /* basic_tokenized_file.cpp */,
+				0747FEF11CC63B6100096FC3 /* basic_tokenized_file.h */,
+				0747FEF21CC63B6100096FC3 /* checked_utf8_string.cpp */,
+				0747FEF31CC63B6100096FC3 /* checked_utf8_string.h */,
+				0747FEF41CC63B6100096FC3 /* clean_file_reader.h */,
+				0747FEF51CC63B6100096FC3 /* clean_file.cpp */,
+				0747FEF61CC63B6100096FC3 /* clean_file.h */,
+				0747FEF71CC63B6100096FC3 /* const_utf8_string.h */,
+				0747FEF81CC63B6100096FC3 /* cpp_file.cpp */,
+				0747FEF91CC63B6100096FC3 /* cpp_file.h */,
+				0747FEFA1CC63B6100096FC3 /* logging.cpp */,
+				0747FEFB1CC63B6100096FC3 /* logging.h */,
+			);
+			name = common;
+			sourceTree = "<group>";
+		};
+		0747FF121CC63BB100096FC3 /* numbers */ = {
+			isa = PBXGroup;
+			children = (
+				0747FF041CC63BAC00096FC3 /* generator.cpp */,
+				0747FF051CC63BAC00096FC3 /* generator.h */,
+				0747FF061CC63BAC00096FC3 /* main.cpp */,
+				0747FF071CC63BAC00096FC3 /* options.cpp */,
+				0747FF081CC63BAC00096FC3 /* options.h */,
+				0747FF091CC63BAC00096FC3 /* parsed_file.cpp */,
+				0747FF0A1CC63BAC00096FC3 /* parsed_file.h */,
+				0747FF0B1CC63BAC00096FC3 /* processor.cpp */,
+				0747FF0C1CC63BAC00096FC3 /* processor.h */,
+			);
+			name = numbers;
+			sourceTree = "<group>";
+		};
+		0747FF381CC63EFF00096FC3 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				0747FF191CC63DA100096FC3 /* CoreText.framework */,
+				0747FF171CC63D4F00096FC3 /* Cocoa.framework */,
+				0747FF151CC63D4500096FC3 /* CoreServices.framework */,
+				0747FF131CC63BD800096FC3 /* CoreFoundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		0747FEE51CC63AD900096FC3 /* codegen_numbers */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 0747FEED1CC63AD900096FC3 /* Build configuration list for PBXNativeTarget "codegen_numbers" */;
+			buildPhases = (
+				0747FEE21CC63AD900096FC3 /* Sources */,
+				0747FEE31CC63AD900096FC3 /* Frameworks */,
+				0747FEE41CC63AD900096FC3 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = codegen_numbers;
+			productName = codegen_numbers;
+			productReference = 0747FEE61CC63AD900096FC3 /* codegen_numbers */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		0747FEDE1CC63AD900096FC3 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0730;
+				ORGANIZATIONNAME = "Telegram Desktop";
+				TargetAttributes = {
+					0747FEE51CC63AD900096FC3 = {
+						CreatedOnToolsVersion = 7.3;
+					};
+				};
+			};
+			buildConfigurationList = 0747FEE11CC63AD900096FC3 /* Build configuration list for PBXProject "codegen_numbers" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 0747FEDD1CC63AD900096FC3;
+			productRefGroup = 0747FEE71CC63AD900096FC3 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				0747FEE51CC63AD900096FC3 /* codegen_numbers */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		0747FEE21CC63AD900096FC3 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				0747FF101CC63BAC00096FC3 /* parsed_file.cpp in Sources */,
+				0747FF0F1CC63BAC00096FC3 /* options.cpp in Sources */,
+				0747FEFC1CC63B6100096FC3 /* basic_tokenized_file.cpp in Sources */,
+				0747FEFD1CC63B6100096FC3 /* checked_utf8_string.cpp in Sources */,
+				0747FF111CC63BAC00096FC3 /* processor.cpp in Sources */,
+				0747FF001CC63B6100096FC3 /* logging.cpp in Sources */,
+				0747FEFE1CC63B6100096FC3 /* clean_file.cpp in Sources */,
+				0747FF0E1CC63BAC00096FC3 /* main.cpp in Sources */,
+				0747FEFF1CC63B6100096FC3 /* cpp_file.cpp in Sources */,
+				0747FF0D1CC63BAC00096FC3 /* generator.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		0747FEEB1CC63AD900096FC3 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_LINK_WITH_DYNAMIC_LIBRARIES = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"/usr/local/Qt-5.5.1/include",
+					../../../SourceFiles,
+				);
+				LIBRARY_SEARCH_PATHS = "/usr/local/Qt-5.5.1/lib";
+				MACOSX_DEPLOYMENT_TARGET = 10.11;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				OBJROOT = "./../../../../Mac/obj/codegen_style/$(CONFIGURATION)";
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_LDFLAGS = (
+					"-lQt5Core_debug",
+					"-lqtpcre_debug",
+					"-lz",
+				);
+				SDKROOT = macosx;
+				SYMROOT = ./../../../../Mac/codegen/;
+			};
+			name = Debug;
+		};
+		0747FEEC1CC63AD900096FC3 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_LINK_WITH_DYNAMIC_LIBRARIES = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"/usr/local/Qt-5.5.1/include",
+					../../../SourceFiles,
+				);
+				LIBRARY_SEARCH_PATHS = "/usr/local/Qt-5.5.1/lib";
+				MACOSX_DEPLOYMENT_TARGET = 10.11;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OBJROOT = "./../../../../Mac/obj/codegen_style/$(CONFIGURATION)";
+				OTHER_LDFLAGS = (
+					"-lQt5Core",
+					"-lqtpcre",
+					"-lz",
+				);
+				SDKROOT = macosx;
+				SYMROOT = ./../../../../Mac/codegen/;
+			};
+			name = Release;
+		};
+		0747FEEE1CC63AD900096FC3 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		0747FEEF1CC63AD900096FC3 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		0747FEE11CC63AD900096FC3 /* Build configuration list for PBXProject "codegen_numbers" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				0747FEEB1CC63AD900096FC3 /* Debug */,
+				0747FEEC1CC63AD900096FC3 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		0747FEED1CC63AD900096FC3 /* Build configuration list for PBXNativeTarget "codegen_numbers" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				0747FEEE1CC63AD900096FC3 /* Debug */,
+				0747FEEF1CC63AD900096FC3 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 0747FEDE1CC63AD900096FC3 /* Project object */;
+}
diff --git a/Telegram/build/xcode/codegen_style/codegen_style.xcodeproj/project.pbxproj b/Telegram/build/xcode/codegen_style/codegen_style.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..88321863d
--- /dev/null
+++ b/Telegram/build/xcode/codegen_style/codegen_style.xcodeproj/project.pbxproj
@@ -0,0 +1,413 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		0747FEA01CC633AA00096FC3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FE9F1CC633AA00096FC3 /* CoreFoundation.framework */; };
+		0747FEA41CC6344000096FC3 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FEA31CC6344000096FC3 /* CoreServices.framework */; };
+		0747FEA61CC6345000096FC3 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FEA51CC6345000096FC3 /* OpenGL.framework */; };
+		0747FEA81CC6350000096FC3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FEA71CC6350000096FC3 /* CoreGraphics.framework */; };
+		0747FEAA1CC6351200096FC3 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FEA91CC6351200096FC3 /* CoreText.framework */; };
+		0747FEAD1CC6360700096FC3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0747FEAC1CC6360700096FC3 /* Cocoa.framework */; };
+		0747FEBE1CC63A1400096FC3 /* basic_tokenized_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEB21CC63A1400096FC3 /* basic_tokenized_file.cpp */; };
+		0747FEBF1CC63A1400096FC3 /* checked_utf8_string.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEB41CC63A1400096FC3 /* checked_utf8_string.cpp */; };
+		0747FEC01CC63A1400096FC3 /* clean_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEB71CC63A1400096FC3 /* clean_file.cpp */; };
+		0747FEC11CC63A1400096FC3 /* cpp_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEBA1CC63A1400096FC3 /* cpp_file.cpp */; };
+		0747FEC21CC63A1400096FC3 /* logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEBC1CC63A1400096FC3 /* logging.cpp */; };
+		0747FED41CC63A9800096FC3 /* generator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEC51CC63A9800096FC3 /* generator.cpp */; };
+		0747FED51CC63A9800096FC3 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEC71CC63A9800096FC3 /* main.cpp */; };
+		0747FED61CC63A9800096FC3 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FEC81CC63A9800096FC3 /* module.cpp */; };
+		0747FED71CC63A9800096FC3 /* options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FECA1CC63A9800096FC3 /* options.cpp */; };
+		0747FED81CC63A9800096FC3 /* parsed_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FECC1CC63A9800096FC3 /* parsed_file.cpp */; };
+		0747FED91CC63A9800096FC3 /* processor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FECE1CC63A9800096FC3 /* processor.cpp */; };
+		0747FEDA1CC63A9800096FC3 /* sprite_generator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FED01CC63A9800096FC3 /* sprite_generator.cpp */; };
+		0747FEDB1CC63A9800096FC3 /* structure_types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0747FED21CC63A9800096FC3 /* structure_types.cpp */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		0747FE581CC62B8500096FC3 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		0747FE5A1CC62B8500096FC3 /* codegen_style */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = codegen_style; sourceTree = BUILT_PRODUCTS_DIR; };
+		0747FE9F1CC633AA00096FC3 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+		0747FEA11CC633EE00096FC3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		0747FEA31CC6344000096FC3 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
+		0747FEA51CC6345000096FC3 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
+		0747FEA71CC6350000096FC3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		0747FEA91CC6351200096FC3 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+		0747FEAC1CC6360700096FC3 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+		0747FEB21CC63A1400096FC3 /* basic_tokenized_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = basic_tokenized_file.cpp; path = ../../../SourceFiles/codegen/common/basic_tokenized_file.cpp; sourceTree = "<group>"; };
+		0747FEB31CC63A1400096FC3 /* basic_tokenized_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = basic_tokenized_file.h; path = ../../../SourceFiles/codegen/common/basic_tokenized_file.h; sourceTree = "<group>"; };
+		0747FEB41CC63A1400096FC3 /* checked_utf8_string.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = checked_utf8_string.cpp; path = ../../../SourceFiles/codegen/common/checked_utf8_string.cpp; sourceTree = "<group>"; };
+		0747FEB51CC63A1400096FC3 /* checked_utf8_string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = checked_utf8_string.h; path = ../../../SourceFiles/codegen/common/checked_utf8_string.h; sourceTree = "<group>"; };
+		0747FEB61CC63A1400096FC3 /* clean_file_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = clean_file_reader.h; path = ../../../SourceFiles/codegen/common/clean_file_reader.h; sourceTree = "<group>"; };
+		0747FEB71CC63A1400096FC3 /* clean_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = clean_file.cpp; path = ../../../SourceFiles/codegen/common/clean_file.cpp; sourceTree = "<group>"; };
+		0747FEB81CC63A1400096FC3 /* clean_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = clean_file.h; path = ../../../SourceFiles/codegen/common/clean_file.h; sourceTree = "<group>"; };
+		0747FEB91CC63A1400096FC3 /* const_utf8_string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = const_utf8_string.h; path = ../../../SourceFiles/codegen/common/const_utf8_string.h; sourceTree = "<group>"; };
+		0747FEBA1CC63A1400096FC3 /* cpp_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpp_file.cpp; path = ../../../SourceFiles/codegen/common/cpp_file.cpp; sourceTree = "<group>"; };
+		0747FEBB1CC63A1400096FC3 /* cpp_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cpp_file.h; path = ../../../SourceFiles/codegen/common/cpp_file.h; sourceTree = "<group>"; };
+		0747FEBC1CC63A1400096FC3 /* logging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = logging.cpp; path = ../../../SourceFiles/codegen/common/logging.cpp; sourceTree = "<group>"; };
+		0747FEBD1CC63A1400096FC3 /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../../../SourceFiles/codegen/common/logging.h; sourceTree = "<group>"; };
+		0747FEC51CC63A9800096FC3 /* generator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = generator.cpp; path = ../../../SourceFiles/codegen/style/generator.cpp; sourceTree = "<group>"; };
+		0747FEC61CC63A9800096FC3 /* generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = generator.h; path = ../../../SourceFiles/codegen/style/generator.h; sourceTree = "<group>"; };
+		0747FEC71CC63A9800096FC3 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../../SourceFiles/codegen/style/main.cpp; sourceTree = "<group>"; };
+		0747FEC81CC63A9800096FC3 /* module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = module.cpp; path = ../../../SourceFiles/codegen/style/module.cpp; sourceTree = "<group>"; };
+		0747FEC91CC63A9800096FC3 /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = module.h; path = ../../../SourceFiles/codegen/style/module.h; sourceTree = "<group>"; };
+		0747FECA1CC63A9800096FC3 /* options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = options.cpp; path = ../../../SourceFiles/codegen/style/options.cpp; sourceTree = "<group>"; };
+		0747FECB1CC63A9800096FC3 /* options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = options.h; path = ../../../SourceFiles/codegen/style/options.h; sourceTree = "<group>"; };
+		0747FECC1CC63A9800096FC3 /* parsed_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parsed_file.cpp; path = ../../../SourceFiles/codegen/style/parsed_file.cpp; sourceTree = "<group>"; };
+		0747FECD1CC63A9800096FC3 /* parsed_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parsed_file.h; path = ../../../SourceFiles/codegen/style/parsed_file.h; sourceTree = "<group>"; };
+		0747FECE1CC63A9800096FC3 /* processor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = processor.cpp; path = ../../../SourceFiles/codegen/style/processor.cpp; sourceTree = "<group>"; };
+		0747FECF1CC63A9800096FC3 /* processor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = processor.h; path = ../../../SourceFiles/codegen/style/processor.h; sourceTree = "<group>"; };
+		0747FED01CC63A9800096FC3 /* sprite_generator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sprite_generator.cpp; path = ../../../SourceFiles/codegen/style/sprite_generator.cpp; sourceTree = "<group>"; };
+		0747FED11CC63A9800096FC3 /* sprite_generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sprite_generator.h; path = ../../../SourceFiles/codegen/style/sprite_generator.h; sourceTree = "<group>"; };
+		0747FED21CC63A9800096FC3 /* structure_types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = structure_types.cpp; path = ../../../SourceFiles/codegen/style/structure_types.cpp; sourceTree = "<group>"; };
+		0747FED31CC63A9800096FC3 /* structure_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = structure_types.h; path = ../../../SourceFiles/codegen/style/structure_types.h; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		0747FE571CC62B8500096FC3 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				0747FEAD1CC6360700096FC3 /* Cocoa.framework in Frameworks */,
+				0747FEAA1CC6351200096FC3 /* CoreText.framework in Frameworks */,
+				0747FEA81CC6350000096FC3 /* CoreGraphics.framework in Frameworks */,
+				0747FEA61CC6345000096FC3 /* OpenGL.framework in Frameworks */,
+				0747FEA41CC6344000096FC3 /* CoreServices.framework in Frameworks */,
+				0747FEA01CC633AA00096FC3 /* CoreFoundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		0747FE511CC62B8500096FC3 = {
+			isa = PBXGroup;
+			children = (
+				0747FEC31CC63A5100096FC3 /* src */,
+				0747FEAB1CC6353900096FC3 /* Frameworks */,
+				0747FE5B1CC62B8500096FC3 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		0747FE5B1CC62B8500096FC3 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				0747FE5A1CC62B8500096FC3 /* codegen_style */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0747FEAB1CC6353900096FC3 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				0747FEAC1CC6360700096FC3 /* Cocoa.framework */,
+				0747FEA91CC6351200096FC3 /* CoreText.framework */,
+				0747FEA71CC6350000096FC3 /* CoreGraphics.framework */,
+				0747FEA51CC6345000096FC3 /* OpenGL.framework */,
+				0747FEA31CC6344000096FC3 /* CoreServices.framework */,
+				0747FEA11CC633EE00096FC3 /* Foundation.framework */,
+				0747FE9F1CC633AA00096FC3 /* CoreFoundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		0747FEC31CC63A5100096FC3 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				0747FEC41CC63A6300096FC3 /* common */,
+				0747FEDC1CC63AA700096FC3 /* style */,
+			);
+			name = src;
+			sourceTree = "<group>";
+		};
+		0747FEC41CC63A6300096FC3 /* common */ = {
+			isa = PBXGroup;
+			children = (
+				0747FEB21CC63A1400096FC3 /* basic_tokenized_file.cpp */,
+				0747FEB31CC63A1400096FC3 /* basic_tokenized_file.h */,
+				0747FEB41CC63A1400096FC3 /* checked_utf8_string.cpp */,
+				0747FEB51CC63A1400096FC3 /* checked_utf8_string.h */,
+				0747FEB61CC63A1400096FC3 /* clean_file_reader.h */,
+				0747FEB71CC63A1400096FC3 /* clean_file.cpp */,
+				0747FEB81CC63A1400096FC3 /* clean_file.h */,
+				0747FEB91CC63A1400096FC3 /* const_utf8_string.h */,
+				0747FEBA1CC63A1400096FC3 /* cpp_file.cpp */,
+				0747FEBB1CC63A1400096FC3 /* cpp_file.h */,
+				0747FEBC1CC63A1400096FC3 /* logging.cpp */,
+				0747FEBD1CC63A1400096FC3 /* logging.h */,
+			);
+			name = common;
+			sourceTree = "<group>";
+		};
+		0747FEDC1CC63AA700096FC3 /* style */ = {
+			isa = PBXGroup;
+			children = (
+				0747FEC51CC63A9800096FC3 /* generator.cpp */,
+				0747FEC61CC63A9800096FC3 /* generator.h */,
+				0747FEC71CC63A9800096FC3 /* main.cpp */,
+				0747FEC81CC63A9800096FC3 /* module.cpp */,
+				0747FEC91CC63A9800096FC3 /* module.h */,
+				0747FECA1CC63A9800096FC3 /* options.cpp */,
+				0747FECB1CC63A9800096FC3 /* options.h */,
+				0747FECC1CC63A9800096FC3 /* parsed_file.cpp */,
+				0747FECD1CC63A9800096FC3 /* parsed_file.h */,
+				0747FECE1CC63A9800096FC3 /* processor.cpp */,
+				0747FECF1CC63A9800096FC3 /* processor.h */,
+				0747FED01CC63A9800096FC3 /* sprite_generator.cpp */,
+				0747FED11CC63A9800096FC3 /* sprite_generator.h */,
+				0747FED21CC63A9800096FC3 /* structure_types.cpp */,
+				0747FED31CC63A9800096FC3 /* structure_types.h */,
+			);
+			name = style;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		0747FE591CC62B8500096FC3 /* codegen_style */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 0747FE611CC62B8500096FC3 /* Build configuration list for PBXNativeTarget "codegen_style" */;
+			buildPhases = (
+				0747FE561CC62B8500096FC3 /* Sources */,
+				0747FE571CC62B8500096FC3 /* Frameworks */,
+				0747FE581CC62B8500096FC3 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = codegen_style;
+			productName = codegen_style;
+			productReference = 0747FE5A1CC62B8500096FC3 /* codegen_style */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		0747FE521CC62B8500096FC3 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0730;
+				ORGANIZATIONNAME = "Telegram Desktop";
+				TargetAttributes = {
+					0747FE591CC62B8500096FC3 = {
+						CreatedOnToolsVersion = 7.3;
+					};
+				};
+			};
+			buildConfigurationList = 0747FE551CC62B8500096FC3 /* Build configuration list for PBXProject "codegen_style" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 0747FE511CC62B8500096FC3;
+			productRefGroup = 0747FE5B1CC62B8500096FC3 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				0747FE591CC62B8500096FC3 /* codegen_style */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		0747FE561CC62B8500096FC3 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				0747FEBF1CC63A1400096FC3 /* checked_utf8_string.cpp in Sources */,
+				0747FED61CC63A9800096FC3 /* module.cpp in Sources */,
+				0747FEDA1CC63A9800096FC3 /* sprite_generator.cpp in Sources */,
+				0747FED71CC63A9800096FC3 /* options.cpp in Sources */,
+				0747FEC01CC63A1400096FC3 /* clean_file.cpp in Sources */,
+				0747FEDB1CC63A9800096FC3 /* structure_types.cpp in Sources */,
+				0747FED81CC63A9800096FC3 /* parsed_file.cpp in Sources */,
+				0747FEC11CC63A1400096FC3 /* cpp_file.cpp in Sources */,
+				0747FEBE1CC63A1400096FC3 /* basic_tokenized_file.cpp in Sources */,
+				0747FED51CC63A9800096FC3 /* main.cpp in Sources */,
+				0747FED91CC63A9800096FC3 /* processor.cpp in Sources */,
+				0747FEC21CC63A1400096FC3 /* logging.cpp in Sources */,
+				0747FED41CC63A9800096FC3 /* generator.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		0747FE5F1CC62B8500096FC3 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_LINK_WITH_DYNAMIC_LIBRARIES = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"/usr/local/Qt-5.5.1/include",
+					../../../SourceFiles,
+				);
+				LIBRARY_SEARCH_PATHS = "/usr/local/Qt-5.5.1/lib";
+				MACOSX_DEPLOYMENT_TARGET = 10.11;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				OBJROOT = "./../../../../Mac/obj/codegen_style/$(CONFIGURATION)";
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_CFLAGS = (
+					"-Wall",
+					"-DQT_GUI_LIB",
+					"-DQT_CORE_LIB",
+				);
+				OTHER_LDFLAGS = (
+					"-lQt5Core_debug",
+					"-lQt5Gui_debug",
+					"-lqtpcre_debug",
+					"-lqtharfbuzzng_debug",
+					"-lz",
+				);
+				SDKROOT = macosx;
+				SYMROOT = ./../../../../Mac/codegen/;
+			};
+			name = Debug;
+		};
+		0747FE601CC62B8500096FC3 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_LINK_WITH_DYNAMIC_LIBRARIES = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"/usr/local/Qt-5.5.1/include",
+					../../../SourceFiles,
+				);
+				LIBRARY_SEARCH_PATHS = "/usr/local/Qt-5.5.1/lib";
+				MACOSX_DEPLOYMENT_TARGET = 10.11;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OBJROOT = "./../../../../Mac/obj/codegen_style/$(CONFIGURATION)";
+				OTHER_CFLAGS = (
+					"-Wall",
+					"-DQT_GUI_LIB",
+					"-DQT_CORE_LIB",
+				);
+				OTHER_LDFLAGS = (
+					"-lQt5Core",
+					"-lQt5Gui",
+					"-lqtharfbuzzng",
+					"-lqtpcre",
+					"-lz",
+				);
+				SDKROOT = macosx;
+				SYMROOT = ./../../../../Mac/codegen/;
+			};
+			name = Release;
+		};
+		0747FE621CC62B8500096FC3 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		0747FE631CC62B8500096FC3 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		0747FE551CC62B8500096FC3 /* Build configuration list for PBXProject "codegen_style" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				0747FE5F1CC62B8500096FC3 /* Debug */,
+				0747FE601CC62B8500096FC3 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		0747FE611CC62B8500096FC3 /* Build configuration list for PBXNativeTarget "codegen_style" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				0747FE621CC62B8500096FC3 /* Debug */,
+				0747FE631CC62B8500096FC3 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 0747FE521CC62B8500096FC3 /* Project object */;
+}

From 0501633c75070c21abb3fcc7ebf4ba4f4bb194ae Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 19 Apr 2016 15:06:52 +0300
Subject: [PATCH 08/12] Added codegen_style/numbers QtCreator projects.
 Telegram.pro still broken.

---
 .gitignore                                    |  1 +
 .../SourceFiles/codegen/style/generator.cpp   |  5 +-
 .../inline_bots/inline_bot_result.h           |  2 +-
 .../qmake/codegen_numbers/codegen_numbers.pro | 45 ++++++++++++++++
 .../qmake/codegen_style/codegen_style.pro     | 51 +++++++++++++++++++
 5 files changed, 101 insertions(+), 3 deletions(-)
 create mode 100644 Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
 create mode 100644 Telegram/build/qmake/codegen_style/codegen_style.pro

diff --git a/.gitignore b/.gitignore
index fd44deed6..1aa7e98b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,7 @@ project.xcworkspace
 xcuserdata
 
 /Telegram/*.user.*
+*.pro.user
 /Linux/
 /Telegram/Makefile
 *.*~
diff --git a/Telegram/SourceFiles/codegen/style/generator.cpp b/Telegram/SourceFiles/codegen/style/generator.cpp
index 6609ef572..7db0d1993 100644
--- a/Telegram/SourceFiles/codegen/style/generator.cpp
+++ b/Telegram/SourceFiles/codegen/style/generator.cpp
@@ -20,9 +20,10 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 #include "codegen/style/generator.h"
 
+#include <memory>
+#include <functional>
 #include <QtCore/QDir>
 #include <QtCore/QSet>
-#include <functional>
 #include "codegen/style/parsed_file.h"
 
 using Module = codegen::style::structure::Module;
@@ -54,7 +55,7 @@ char hexFirstChar(char ch) {
 QString stringToEncodedString(const std::string &str) {
 	QString result;
 	result.reserve(str.size() * 4);
-	for (auto ch : str) {
+	for (uchar ch : str) {
 		if (ch == '\n') {
 			result.append("\\n");
 		} else if (ch == '\t') {
diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_result.h b/Telegram/SourceFiles/inline_bots/inline_bot_result.h
index cf98a37ff..5da9808fa 100644
--- a/Telegram/SourceFiles/inline_bots/inline_bot_result.h
+++ b/Telegram/SourceFiles/inline_bots/inline_bot_result.h
@@ -43,7 +43,7 @@ private:
 
 public:
 
-	// Constructor is public only for std::make_unique<>() to work.
+	// Constructor is public only for std_::make_unique<>() to work.
 	// You should use create() static method instead.
 	explicit Result(const Creator &creator);
 	static std_::unique_ptr<Result> create(uint64 queryId, const MTPBotInlineResult &mtpData);
diff --git a/Telegram/build/qmake/codegen_numbers/codegen_numbers.pro b/Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
new file mode 100644
index 000000000..c7da68a13
--- /dev/null
+++ b/Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
@@ -0,0 +1,45 @@
+QT += core gui
+
+TARGET = codegen_numbers
+CONFIG += console static c++14
+CONFIG -= app_bundle
+
+CONFIG(debug, debug|release) {
+    OBJECTS_DIR = ./
+    DESTDIR = ./../../../codegen/Debug
+}
+CONFIG(release, debug|release) {
+    OBJECTS_DIR = ./
+    DESTDIR = ./../../../codegen/Release
+}
+
+INCLUDEPATH += ./../../../SourceFiles
+
+QMAKE_CFLAGS_WARN_ON += -Wno-missing-field-initializers
+QMAKE_CXXFLAGS_WARN_ON += -Wno-missing-field-initializers
+
+TEMPLATE = app
+
+SOURCES += \
+./../../../SourceFiles/codegen/common/basic_tokenized_file.cpp\
+./../../../SourceFiles/codegen/common/checked_utf8_string.cpp\
+./../../../SourceFiles/codegen/common/clean_file.cpp\
+./../../../SourceFiles/codegen/common/cpp_file.cpp\
+./../../../SourceFiles/codegen/common/logging.cpp\
+./../../../SourceFiles/codegen/numbers/generator.cpp\
+./../../../SourceFiles/codegen/numbers/main.cpp\
+./../../../SourceFiles/codegen/numbers/options.cpp\
+./../../../SourceFiles/codegen/numbers/parsed_file.cpp\
+./../../../SourceFiles/codegen/numbers/processor.cpp
+
+HEADERS += \
+./../../../SourceFiles/codegen/common/basic_tokenized_file.h\
+./../../../SourceFiles/codegen/common/checked_utf8_string.h\
+./../../../SourceFiles/codegen/common/clean_file.h\
+./../../../SourceFiles/codegen/common/clean_file_reader.h\
+./../../../SourceFiles/codegen/common/cpp_file.h\
+./../../../SourceFiles/codegen/common/logging.h\
+./../../../SourceFiles/codegen/numbers/generator.h\
+./../../../SourceFiles/codegen/numbers/options.h\
+./../../../SourceFiles/codegen/numbers/parsed_file.h\
+./../../../SourceFiles/codegen/numbers/processor.h
diff --git a/Telegram/build/qmake/codegen_style/codegen_style.pro b/Telegram/build/qmake/codegen_style/codegen_style.pro
new file mode 100644
index 000000000..ebfdd1ebe
--- /dev/null
+++ b/Telegram/build/qmake/codegen_style/codegen_style.pro
@@ -0,0 +1,51 @@
+QT += core gui
+
+TARGET = codegen_style
+CONFIG += console static c++14
+CONFIG -= app_bundle
+
+CONFIG(debug, debug|release) {
+    OBJECTS_DIR = ./
+    DESTDIR = ./../../../codegen/Debug
+}
+CONFIG(release, debug|release) {
+    OBJECTS_DIR = ./
+    DESTDIR = ./../../../codegen/Release
+}
+
+INCLUDEPATH += ./../../../SourceFiles
+
+QMAKE_CFLAGS_WARN_ON += -Wno-missing-field-initializers
+QMAKE_CXXFLAGS_WARN_ON += -Wno-missing-field-initializers
+
+TEMPLATE = app
+
+SOURCES += \
+./../../../SourceFiles/codegen/common/basic_tokenized_file.cpp\
+./../../../SourceFiles/codegen/common/checked_utf8_string.cpp\
+./../../../SourceFiles/codegen/common/clean_file.cpp\
+./../../../SourceFiles/codegen/common/cpp_file.cpp\
+./../../../SourceFiles/codegen/common/logging.cpp\
+./../../../SourceFiles/codegen/style/generator.cpp\
+./../../../SourceFiles/codegen/style/main.cpp\
+./../../../SourceFiles/codegen/style/module.cpp\
+./../../../SourceFiles/codegen/style/options.cpp\
+./../../../SourceFiles/codegen/style/parsed_file.cpp\
+./../../../SourceFiles/codegen/style/processor.cpp\
+./../../../SourceFiles/codegen/style/sprite_generator.cpp\
+./../../../SourceFiles/codegen/style/structure_types.cpp
+
+HEADERS += \
+./../../../SourceFiles/codegen/common/basic_tokenized_file.h\
+./../../../SourceFiles/codegen/common/checked_utf8_string.h\
+./../../../SourceFiles/codegen/common/clean_file.h\
+./../../../SourceFiles/codegen/common/clean_file_reader.h\
+./../../../SourceFiles/codegen/common/cpp_file.h\
+./../../../SourceFiles/codegen/common/logging.h\
+./../../../SourceFiles/codegen/style/generator.h\
+./../../../SourceFiles/codegen/style/module.h\
+./../../../SourceFiles/codegen/style/options.h\
+./../../../SourceFiles/codegen/style/parsed_file.h\
+./../../../SourceFiles/codegen/style/processor.h\
+./../../../SourceFiles/codegen/style/sprite_generator.h\
+./../../../SourceFiles/codegen/style/structure_types.h

From 18d86663120ff61fa1e1b09d95bf91c77a0929f8 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 19 Apr 2016 16:52:51 +0300
Subject: [PATCH 09/12] Moved to g++ 4.9, fixed some warnings, codegen used for
 Linux build.

---
 Telegram/SourceFiles/core/basic_types.cpp     | 62 +++++--------------
 .../inline_bots/inline_bot_result.cpp         | 28 ---------
 .../inline_bots/inline_bot_result.h           |  1 -
 Telegram/SourceFiles/localstorage.cpp         | 25 --------
 Telegram/SourceFiles/ui/text/text.cpp         |  2 +-
 Telegram/Telegram.pro                         | 55 ++++++++--------
 .../qmake/codegen_numbers/codegen_numbers.pro | 36 +++++------
 .../qmake/codegen_style/codegen_style.pro     | 48 +++++++-------
 8 files changed, 88 insertions(+), 169 deletions(-)

diff --git a/Telegram/SourceFiles/core/basic_types.cpp b/Telegram/SourceFiles/core/basic_types.cpp
index 5d1bc6874..79851ca37 100644
--- a/Telegram/SourceFiles/core/basic_types.cpp
+++ b/Telegram/SourceFiles/core/basic_types.cpp
@@ -45,52 +45,22 @@ uint64 _SharedMemoryLocation[4] = { 0x00, 0x01, 0x02, 0x03 };
 
 // Base types compile-time check
 
-#ifdef TDESKTOP_CUSTOM_NULLPTR
-NullPointerClass nullptr;
-#endif
-
-namespace {
-	template <typename T, int N>
-	class _TypeSizeCheckerHelper {
-	public:
-		_TypeSizeCheckerHelper() {
-            int _BadTypeSize[N ? -1 : 1];
-            (void)sizeof(_BadTypeSize);
-		}
-	};
-
-	template <typename T>
-	class _TypeSizeCheckerHelper<T, 0> {
-	public:
-		_TypeSizeCheckerHelper() {
-		}
-	};
-
-	template <typename T, int N>
-	class _TypeSizeChecker {
-		_TypeSizeCheckerHelper<T, N - sizeof(T)> checker;
-	};
-
-	void _typesCheck() {
-        _TypeSizeChecker<char, 1>();
-		_TypeSizeChecker<uchar, 1>();
-        _TypeSizeChecker<int16, 2>();
-		_TypeSizeChecker<uint16, 2>();
-        _TypeSizeChecker<int32, 4>();
-		_TypeSizeChecker<uint32, 4>();
-        _TypeSizeChecker<int64, 8>();
-		_TypeSizeChecker<uint64, 8>();
-		_TypeSizeChecker<float32, 4>();
-        _TypeSizeChecker<float64, 8>();
-
-        _TypeSizeChecker<mtpPrime, 4>();
-		_TypeSizeChecker<MTPint, 4>();
-		_TypeSizeChecker<MTPlong, 8>();
-		_TypeSizeChecker<MTPint128, 16>();
-		_TypeSizeChecker<MTPint256, 32>();
-        _TypeSizeChecker<MTPdouble, 8>();
-	}
-}
+static_assert(sizeof(char) == 1, "Basic types size check failed");
+static_assert(sizeof(uchar) == 1, "Basic types size check failed");
+static_assert(sizeof(int16) == 2, "Basic types size check failed");
+static_assert(sizeof(uint16) == 2, "Basic types size check failed");
+static_assert(sizeof(int32) == 4, "Basic types size check failed");
+static_assert(sizeof(uint32) == 4, "Basic types size check failed");
+static_assert(sizeof(int64) == 8, "Basic types size check failed");
+static_assert(sizeof(uint64) == 8, "Basic types size check failed");
+static_assert(sizeof(float32) == 4, "Basic types size check failed");
+static_assert(sizeof(float64) == 8, "Basic types size check failed");
+static_assert(sizeof(mtpPrime) == 4, "Basic types size check failed");
+static_assert(sizeof(MTPint) == 4, "Basic types size check failed");
+static_assert(sizeof(MTPlong) == 8, "Basic types size check failed");
+static_assert(sizeof(MTPint128) == 16, "Basic types size check failed");
+static_assert(sizeof(MTPint256) == 32, "Basic types size check failed");
+static_assert(sizeof(MTPdouble) == 8, "Basic types size check failed");
 
 // Unixtime functions
 
diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp b/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp
index eb735f586..4afa92309 100644
--- a/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp
+++ b/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp
@@ -29,34 +29,6 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 namespace InlineBots {
 
-namespace {
-
-using ResultsByLoaderMap = QMap<FileLoader*, Result*>;
-NeverFreedPointer<ResultsByLoaderMap> ResultsByLoader;
-
-void regLoader(FileLoader *loader, Result *result) {
-	ResultsByLoader.createIfNull([]() -> ResultsByLoaderMap* {
-		return new ResultsByLoaderMap();
-	});
-	ResultsByLoader->insert(loader, result);
-}
-
-void unregLoader(FileLoader *loader) {
-	if (!ResultsByLoader) {
-		return;
-	}
-	ResultsByLoader->remove(loader);
-}
-
-} // namespace
-
-Result *getResultFromLoader(FileLoader *loader) {
-	if (!ResultsByLoader) {
-		return nullptr;
-	}
-	return ResultsByLoader->value(loader, nullptr);
-}
-
 Result::Result(const Creator &creator) : _queryId(creator.queryId), _type(creator.type) {
 }
 
diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_result.h b/Telegram/SourceFiles/inline_bots/inline_bot_result.h
index 5da9808fa..105b50b46 100644
--- a/Telegram/SourceFiles/inline_bots/inline_bot_result.h
+++ b/Telegram/SourceFiles/inline_bots/inline_bot_result.h
@@ -120,6 +120,5 @@ private:
 	std_::unique_ptr<internal::SendData> sendData;
 
 };
-Result *getResultFromLoader(FileLoader *loader);
 
 } // namespace InlineBots
diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp
index dc5a34e39..8fde7156c 100644
--- a/Telegram/SourceFiles/localstorage.cpp
+++ b/Telegram/SourceFiles/localstorage.cpp
@@ -48,27 +48,6 @@ namespace {
 		return result;
 	}
 
-	FileKey fromFilePart(const QString &val) {
-		FileKey result = 0;
-		int32 i = val.size();
-		if (i != 0x10) return 0;
-
-		while (i > 0) {
-			--i;
-			result <<= 4;
-
-			uint16 ch = val.at(i).unicode();
-			if (ch >= 'A' && ch <= 'F') {
-				result |= (ch - 'A') + 0x0A;
-			} else if (ch >= '0' && ch <= '9') {
-				result |= (ch - '0');
-			} else {
-				return 0;
-			}
-		}
-		return result;
-	}
-
 	QString _basePath, _userBasePath;
 
 	bool _started = false;
@@ -360,10 +339,6 @@ namespace {
 		return false;
 	}
 
-	bool fileExists(const FileKey &fkey, int options = UserPath | SafePath) {
-		return fileExists(toFilePart(fkey), options);
-	}
-
 	bool readFile(FileReadDescriptor &result, const QString &name, int options = UserPath | SafePath) {
 		if (options & UserPath) {
 			if (!_userWorking()) return false;
diff --git a/Telegram/SourceFiles/ui/text/text.cpp b/Telegram/SourceFiles/ui/text/text.cpp
index 3df18ee76..3d0c46d37 100644
--- a/Telegram/SourceFiles/ui/text/text.cpp
+++ b/Telegram/SourceFiles/ui/text/text.cpp
@@ -1591,7 +1591,7 @@ public:
 				if (_wLeft < si.width) {
 					lineText = lineText.mid(0, currentBlock->from() - _localFrom) + _Elide;
 					lineLength = currentBlock->from() + _Elide.size() - _lineStart;
-					_selection.to = _selection.to = qMin(_selection.to, currentBlock->from());
+					_selection.to = qMin(_selection.to, currentBlock->from());
 					setElideBidi(currentBlock->from(), _Elide.size());
 					elideSaveBlock(blockIndex - 1, _endBlock, currentBlock->from(), elideWidth);
 					return;
diff --git a/Telegram/Telegram.pro b/Telegram/Telegram.pro
index 7b69fedb8..00a280f2c 100644
--- a/Telegram/Telegram.pro
+++ b/Telegram/Telegram.pro
@@ -29,25 +29,20 @@ linux {
     HEADERS += ./SourceFiles/pspecific_linux.h
 }
 
-style_auto_cpp.target = ./GeneratedFiles/style_auto.cpp
-style_auto_cpp.depends = FORCE
-style_auto_cpp.commands = mkdir -p ./../../Telegram/GeneratedFiles && ./../DebugStyle/MetaStyle -classes_in ./../../Telegram/Resources/style_classes.txt -classes_out ./../../Telegram/GeneratedFiles/style_classes.h -styles_in ./../../Telegram/Resources/style.txt -styles_out ./../../Telegram/GeneratedFiles/style_auto.h -path_to_sprites ./../../Telegram/Resources/art/
-style_auto_cpp.depends = ./../../Telegram/Resources/style.txt
+codegen_style.target = ./GeneratedFiles/styles/style_basic_types.h
+codegen_style.depends = FORCE
 
-style_auto_h.target = ./GeneratedFiles/style_auto.h
-style_auto_h.depends = FORCE
-style_auto_h.commands = mkdir -p ./../../Telegram/GeneratedFiles && ./../DebugStyle/MetaStyle -classes_in ./../../Telegram/Resources/style_classes.txt -classes_out ./../../Telegram/GeneratedFiles/style_classes.h -styles_in ./../../Telegram/Resources/style.txt -styles_out ./../../Telegram/GeneratedFiles/style_auto.h -path_to_sprites ./../../Telegram/Resources/art/
-style_auto_h.depends = ./../../Telegram/Resources/style.txt
+codegen_numbers.target = ./GeneratedFiles/numbers.cpp
+codegen_numbers.depends = ./../../Telegram/Resources/numbers.txt
 
-style_classes_h.target = ./GeneratedFiles/style_classes.h
-style_classes_h.depends = FORCE
-style_classes_h.commands = mkdir -p ./../../Telegram/GeneratedFiles && ./../DebugStyle/MetaStyle -classes_in ./../../Telegram/Resources/style_classes.txt -classes_out ./../../Telegram/GeneratedFiles/style_classes.h -styles_in ./../../Telegram/Resources/style.txt -styles_out ./../../Telegram/GeneratedFiles/style_auto.h -path_to_sprites ./../../Telegram/Resources/art/
-style_classes_h.depends = ./../../Telegram/Resources/style_classes.txt
-
-numbers_cpp.target = ./GeneratedFiles/numbers.cpp
-numbers_cpp.depends = FORCE
-numbers_cpp.commands = mkdir -p ./../../Telegram/GeneratedFiles && ./../DebugStyle/MetaStyle -classes_in ./../../Telegram/Resources/style_classes.txt -classes_out ./../../Telegram/GeneratedFiles/style_classes.h -styles_in ./../../Telegram/Resources/style.txt -styles_out ./../../Telegram/GeneratedFiles/style_auto.h -path_to_sprites ./../../Telegram/Resources/art/
-numbers_cpp.depends = ./../../Telegram/Resources/numbers.txt
+CONFIG(debug, debug|release) {
+codegen_style.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_style "-I./SourceFiles" "-o./GeneratedFiles/styles" "./Resources/all_files.style" --rebuild && cd ../Linux/DebugIntermediate
+codegen_numbers.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_numbers "-o./GeneratedFiles" "./Resources/numbers.txt" && cd ../Linux/DebugIntermediate
+}
+CONFIG(release, debug|release) {
+codegen_style.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_style "-I./SourceFiles" "-o./GeneratedFiles/styles" "./Resources/all_files.style" --rebuild && cd ../Linux/ReleaseIntermediate
+codegen_numbers.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_numbers "-o./GeneratedFiles" "./Resources/numbers.txt" && cd ../Linux/ReleaseIntermediate
+}
 
 lang_auto_cpp.target = ./GeneratedFiles/lang_auto.cpp
 lang_auto_cpp.depends = FORCE
@@ -59,13 +54,19 @@ lang_auto_h.depends = FORCE
 lang_auto_h.commands = mkdir -p ./../../Telegram/GeneratedFiles && ./../DebugLang/MetaLang -lang_in ./../../Telegram/Resources/lang.strings -lang_out ./../../Telegram/GeneratedFiles/lang_auto
 lang_auto_h.depends = ./../../Telegram/Resources/lang.strings
 
-hook.depends = style_auto_cpp style_auto_h style_classes_h numbers_cpp lang_auto_cpp lang_auto_h
+#hook.depends = style_auto_cpp style_auto_h style_classes_h numbers_cpp lang_auto_cpp lang_auto_h
+hook.depends = codegen_style codegen_numbers lang_auto_cpp lang_auto_h
 CONFIG(debug,debug|release):hook.target = Makefile.Debug
 CONFIG(release,debug|release):hook.target = Makefile.Release
 
-QMAKE_EXTRA_TARGETS += style_auto_cpp style_auto_h style_classes_h numbers_cpp lang_auto_cpp lang_auto_h hook
+#QMAKE_EXTRA_TARGETS += style_auto_cpp style_auto_h style_classes_h numbers_cpp lang_auto_cpp lang_auto_h hook
+QMAKE_EXTRA_TARGETS += codegen_style codegen_numbers lang_auto_cpp lang_auto_h hook
 
-PRE_TARGETDEPS += ./GeneratedFiles/style_auto.cpp ./GeneratedFiles/style_auto.h ./GeneratedFiles/style_classes.h ./GeneratedFiles/numbers.cpp ./GeneratedFiles/lang_auto.h ./GeneratedFiles/lang_auto.cpp
+#PRE_TARGETDEPS += ./GeneratedFiles/style_auto.cpp ./GeneratedFiles/style_auto.h ./GeneratedFiles/style_classes.h ./GeneratedFiles/numbers.cpp ./GeneratedFiles/lang_auto.h ./GeneratedFiles/lang_auto.cpp
+PRE_TARGETDEPS += \
+./GeneratedFiles/styles/style_basic_types.h \
+./GeneratedFiles/lang_auto.h \
+./GeneratedFiles/lang_auto.cpp
 
 unix {
     linux-g++:QMAKE_TARGET.arch = $$QMAKE_HOST.arch
@@ -81,8 +82,9 @@ unix {
 
 SOURCES += \
     ./GeneratedFiles/lang_auto.cpp \
-    ./GeneratedFiles/style_auto.cpp \
     ./GeneratedFiles/numbers.cpp \
+    ./GeneratedFiles/styles/style_basic.cpp \
+    ./GeneratedFiles/styles/style_basic_types.cpp \
     ./SourceFiles/main.cpp \
     ./SourceFiles/stdafx.cpp \
     ./SourceFiles/apiwrap.cpp \
@@ -193,8 +195,9 @@ SOURCES += \
 
 HEADERS += \
     ./GeneratedFiles/lang_auto.h \
-    ./GeneratedFiles/style_auto.h \
-    ./GeneratedFiles/style_classes.h \
+    ./GeneratedFiles/numbers.h \
+    ./GeneratedFiles/styles/style_basic.h \
+    ./GeneratedFiles/styles/style_basic_types.h \
     ./SourceFiles/stdafx.h \
     ./SourceFiles/apiwrap.h \
     ./SourceFiles/app.h \
@@ -214,7 +217,6 @@ HEADERS += \
     ./SourceFiles/layerwidget.h \
     ./SourceFiles/layout.h \
     ./SourceFiles/mediaview.h \
-    ./SourceFiles/numbers.h \
     ./SourceFiles/overviewwidget.h \
     ./SourceFiles/passcodewidget.h \
     ./SourceFiles/profilewidget.h \
@@ -400,8 +402,9 @@ RESOURCES += \
     ./Resources/telegram_emojis.qrc
 
 OTHER_FILES += \
-    ./Resources/style_classes.txt \
-    ./Resources/style.txt \
+    ./Resources/basic_types.style \
+    ./Resources/basic.style \
+    ./Resources/all_files.style \
     ./Resources/lang.strings \
     ./Resources/langs/lang_it.strings \
     ./Resources/langs/lang_es.strings \
diff --git a/Telegram/build/qmake/codegen_numbers/codegen_numbers.pro b/Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
index c7da68a13..a3927f5a6 100644
--- a/Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
+++ b/Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
@@ -21,25 +21,25 @@ QMAKE_CXXFLAGS_WARN_ON += -Wno-missing-field-initializers
 TEMPLATE = app
 
 SOURCES += \
-./../../../SourceFiles/codegen/common/basic_tokenized_file.cpp\
-./../../../SourceFiles/codegen/common/checked_utf8_string.cpp\
-./../../../SourceFiles/codegen/common/clean_file.cpp\
-./../../../SourceFiles/codegen/common/cpp_file.cpp\
-./../../../SourceFiles/codegen/common/logging.cpp\
-./../../../SourceFiles/codegen/numbers/generator.cpp\
-./../../../SourceFiles/codegen/numbers/main.cpp\
-./../../../SourceFiles/codegen/numbers/options.cpp\
-./../../../SourceFiles/codegen/numbers/parsed_file.cpp\
+./../../../SourceFiles/codegen/common/basic_tokenized_file.cpp \
+./../../../SourceFiles/codegen/common/checked_utf8_string.cpp \
+./../../../SourceFiles/codegen/common/clean_file.cpp \
+./../../../SourceFiles/codegen/common/cpp_file.cpp \
+./../../../SourceFiles/codegen/common/logging.cpp \
+./../../../SourceFiles/codegen/numbers/generator.cpp \
+./../../../SourceFiles/codegen/numbers/main.cpp \
+./../../../SourceFiles/codegen/numbers/options.cpp \
+./../../../SourceFiles/codegen/numbers/parsed_file.cpp \
 ./../../../SourceFiles/codegen/numbers/processor.cpp
 
 HEADERS += \
-./../../../SourceFiles/codegen/common/basic_tokenized_file.h\
-./../../../SourceFiles/codegen/common/checked_utf8_string.h\
-./../../../SourceFiles/codegen/common/clean_file.h\
-./../../../SourceFiles/codegen/common/clean_file_reader.h\
-./../../../SourceFiles/codegen/common/cpp_file.h\
-./../../../SourceFiles/codegen/common/logging.h\
-./../../../SourceFiles/codegen/numbers/generator.h\
-./../../../SourceFiles/codegen/numbers/options.h\
-./../../../SourceFiles/codegen/numbers/parsed_file.h\
+./../../../SourceFiles/codegen/common/basic_tokenized_file.h \
+./../../../SourceFiles/codegen/common/checked_utf8_string.h \
+./../../../SourceFiles/codegen/common/clean_file.h \
+./../../../SourceFiles/codegen/common/clean_file_reader.h \
+./../../../SourceFiles/codegen/common/cpp_file.h \
+./../../../SourceFiles/codegen/common/logging.h \
+./../../../SourceFiles/codegen/numbers/generator.h \
+./../../../SourceFiles/codegen/numbers/options.h \
+./../../../SourceFiles/codegen/numbers/parsed_file.h \
 ./../../../SourceFiles/codegen/numbers/processor.h
diff --git a/Telegram/build/qmake/codegen_style/codegen_style.pro b/Telegram/build/qmake/codegen_style/codegen_style.pro
index ebfdd1ebe..9b5f4405d 100644
--- a/Telegram/build/qmake/codegen_style/codegen_style.pro
+++ b/Telegram/build/qmake/codegen_style/codegen_style.pro
@@ -21,31 +21,31 @@ QMAKE_CXXFLAGS_WARN_ON += -Wno-missing-field-initializers
 TEMPLATE = app
 
 SOURCES += \
-./../../../SourceFiles/codegen/common/basic_tokenized_file.cpp\
-./../../../SourceFiles/codegen/common/checked_utf8_string.cpp\
-./../../../SourceFiles/codegen/common/clean_file.cpp\
-./../../../SourceFiles/codegen/common/cpp_file.cpp\
-./../../../SourceFiles/codegen/common/logging.cpp\
-./../../../SourceFiles/codegen/style/generator.cpp\
-./../../../SourceFiles/codegen/style/main.cpp\
-./../../../SourceFiles/codegen/style/module.cpp\
-./../../../SourceFiles/codegen/style/options.cpp\
-./../../../SourceFiles/codegen/style/parsed_file.cpp\
-./../../../SourceFiles/codegen/style/processor.cpp\
-./../../../SourceFiles/codegen/style/sprite_generator.cpp\
+./../../../SourceFiles/codegen/common/basic_tokenized_file.cpp \
+./../../../SourceFiles/codegen/common/checked_utf8_string.cpp \
+./../../../SourceFiles/codegen/common/clean_file.cpp \
+./../../../SourceFiles/codegen/common/cpp_file.cpp \
+./../../../SourceFiles/codegen/common/logging.cpp \
+./../../../SourceFiles/codegen/style/generator.cpp \
+./../../../SourceFiles/codegen/style/main.cpp \
+./../../../SourceFiles/codegen/style/module.cpp \
+./../../../SourceFiles/codegen/style/options.cpp \
+./../../../SourceFiles/codegen/style/parsed_file.cpp \
+./../../../SourceFiles/codegen/style/processor.cpp \
+./../../../SourceFiles/codegen/style/sprite_generator.cpp \
 ./../../../SourceFiles/codegen/style/structure_types.cpp
 
 HEADERS += \
-./../../../SourceFiles/codegen/common/basic_tokenized_file.h\
-./../../../SourceFiles/codegen/common/checked_utf8_string.h\
-./../../../SourceFiles/codegen/common/clean_file.h\
-./../../../SourceFiles/codegen/common/clean_file_reader.h\
-./../../../SourceFiles/codegen/common/cpp_file.h\
-./../../../SourceFiles/codegen/common/logging.h\
-./../../../SourceFiles/codegen/style/generator.h\
-./../../../SourceFiles/codegen/style/module.h\
-./../../../SourceFiles/codegen/style/options.h\
-./../../../SourceFiles/codegen/style/parsed_file.h\
-./../../../SourceFiles/codegen/style/processor.h\
-./../../../SourceFiles/codegen/style/sprite_generator.h\
+./../../../SourceFiles/codegen/common/basic_tokenized_file.h \
+./../../../SourceFiles/codegen/common/checked_utf8_string.h \
+./../../../SourceFiles/codegen/common/clean_file.h \
+./../../../SourceFiles/codegen/common/clean_file_reader.h \
+./../../../SourceFiles/codegen/common/cpp_file.h \
+./../../../SourceFiles/codegen/common/logging.h \
+./../../../SourceFiles/codegen/style/generator.h \
+./../../../SourceFiles/codegen/style/module.h \
+./../../../SourceFiles/codegen/style/options.h \
+./../../../SourceFiles/codegen/style/parsed_file.h \
+./../../../SourceFiles/codegen/style/processor.h \
+./../../../SourceFiles/codegen/style/sprite_generator.h \
 ./../../../SourceFiles/codegen/style/structure_types.h

From ec40b5a9d9ee24138ec40a3ff9d6eb85189a0c83 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 19 Apr 2016 17:01:32 +0300
Subject: [PATCH 10/12] Include directories unified.

---
 Telegram/Telegram.vcxproj                     | 432 +++++++++---------
 Telegram/Telegram.vcxproj.filters             |   6 -
 .../codegen_numbers/codegen_numbers.vcxproj   |   4 +-
 .../vc/codegen_style/codegen_style.vcxproj    |   4 +-
 4 files changed, 220 insertions(+), 226 deletions(-)

diff --git a/Telegram/Telegram.vcxproj b/Telegram/Telegram.vcxproj
index 6bf9744be..6b7d7bc3d 100644
--- a/Telegram/Telegram.vcxproj
+++ b/Telegram/Telegram.vcxproj
@@ -69,7 +69,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <PreprocessorDefinitions>AL_LIBTYPE_STATIC;UNICODE;WIN32;WIN64;HAVE_STDINT_H;ZLIB_WINAPI;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>.\..\..\Libraries\lzma\C;.\..\..\Libraries\libexif-0.6.20;.\..\..\Libraries\zlib-1.2.8;.\..\..\Libraries\openssl_debug\Debug\include;.\..\..\Libraries\ffmpeg;.\..\..\Libraries\openal-soft\include;.\..\..\Libraries\breakpad\src;.\ThirdParty\minizip;.\SourceFiles;.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore;.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.\SourceFiles;.\GeneratedFiles;.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore;.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui;.\..\..\Libraries\breakpad\src;.\..\..\Libraries\lzma\C;.\..\..\Libraries\libexif-0.6.20;.\..\..\Libraries\zlib-1.2.8;.\..\..\Libraries\ffmpeg;.\..\..\Libraries\openal-soft\include;.\ThirdParty\minizip;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\Libraries\openssl_debug\Debug\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
       <PrecompiledHeader>Use</PrecompiledHeader>
@@ -99,7 +99,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <PreprocessorDefinitions>AL_LIBTYPE_STATIC;UNICODE;WIN32;WIN64;HAVE_STDINT_H;ZLIB_WINAPI;QT_NO_DEBUG;NDEBUG;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>.\..\..\Libraries\lzma\C;.\..\..\Libraries\libexif-0.6.20;.\..\..\Libraries\zlib-1.2.8;.\..\..\Libraries\openssl\Release\include;.\..\..\Libraries\ffmpeg;.\..\..\Libraries\openal-soft\include;.\SourceFiles;.\GeneratedFiles;.\..\..\Libraries\breakpad\src;.\ThirdParty\minizip;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore;.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.\SourceFiles;.\GeneratedFiles;.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore;.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui;.\..\..\Libraries\breakpad\src;.\..\..\Libraries\lzma\C;.\..\..\Libraries\libexif-0.6.20;.\..\..\Libraries\zlib-1.2.8;.\..\..\Libraries\ffmpeg;.\..\..\Libraries\openal-soft\include;.\ThirdParty\minizip;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\Libraries\openssl\Release\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
@@ -132,7 +132,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">
     <ClCompile>
       <PreprocessorDefinitions>AL_LIBTYPE_STATIC;CUSTOM_API_ID;UNICODE;WIN32;WIN64;HAVE_STDINT_H;ZLIB_WINAPI;QT_NO_DEBUG;NDEBUG;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>.\..\..\Libraries\lzma\C;.\..\..\Libraries\libexif-0.6.20;.\..\..\Libraries\zlib-1.2.8;.\..\..\Libraries\openssl\Release\include;.\..\..\Libraries\ffmpeg;.\..\..\Libraries\openal-soft\include;.\SourceFiles;.\GeneratedFiles;.\..\..\Libraries\breakpad\src;.\ThirdParty\minizip;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore;.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.\SourceFiles;.\GeneratedFiles;.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore;.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui;.\..\..\Libraries\breakpad\src;.\..\..\Libraries\lzma\C;.\..\..\Libraries\libexif-0.6.20;.\..\..\Libraries\zlib-1.2.8;.\..\..\Libraries\ffmpeg;.\..\..\Libraries\openal-soft\include;.\ThirdParty\minizip;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\Libraries\openssl\Release\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
@@ -1191,15 +1191,15 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing pspecific_winrt.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/pspecific_winrt.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_winrt.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing pspecific_winrt.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_winrt.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/pspecific_winrt.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing pspecific_winrt.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/pspecific_winrt.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_winrt.h"</Command>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
@@ -1208,43 +1208,43 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing connection_http.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_http.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_http.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing connection_http.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_http.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_http.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing connection_http.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_http.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_http.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\mtproto\connection_tcp.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing connection_tcp.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_tcp.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_tcp.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing connection_tcp.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_tcp.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_tcp.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing connection_tcp.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_tcp.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_tcp.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\core\basic_types.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing basic_types.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing basic_types.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing basic_types.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h"</Command>
     </CustomBuild>
     <ClInclude Include="GeneratedFiles\numbers.h" />
     <ClInclude Include="GeneratedFiles\styles\style_basic.h" />
@@ -1266,69 +1266,69 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing connection.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing connection.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/connection.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing connection.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\mtproto\connection_abstract.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing connection_abstract.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_abstract.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_abstract.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing connection_abstract.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_abstract.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_abstract.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing connection_abstract.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_abstract.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_abstract.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\mtproto\connection_auto.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing connection_auto.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_auto.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_auto.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing connection_auto.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_auto.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_auto.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing connection_auto.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_auto.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_auto.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\mtproto\core_types.h" />
     <CustomBuild Include="SourceFiles\mtproto\dcenter.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing dcenter.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/dcenter.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/dcenter.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing dcenter.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/dcenter.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/dcenter.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing dcenter.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/dcenter.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/dcenter.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\mtproto\facade.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing facade.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/facade.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/facade.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing facade.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/facade.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/facade.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing facade.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/facade.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/facade.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1337,15 +1337,15 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing file_download.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/file_download.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/file_download.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing file_download.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/file_download.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/file_download.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing file_download.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/file_download.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/file_download.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\mtproto\rpc_sender.h" />
     <ClInclude Include="SourceFiles\mtproto\rsa_public_key.h" />
@@ -1354,15 +1354,15 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing session.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/session.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/session.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing session.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/session.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mtproto/session.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing session.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/session.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mtproto/session.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\overview\overview_layout.h" />
     <ClInclude Include="SourceFiles\serialize\serialize_common.h" />
@@ -1372,44 +1372,44 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing animation.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/animation.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/animation.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing animation.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/animation.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/animation.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing animation.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/animation.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/animation.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\ui\boxshadow.h" />
     <CustomBuild Include="SourceFiles\ui\button.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing button.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/button.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/button.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing button.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/button.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/button.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing button.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/button.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/button.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\ui\countryinput.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing countryinput.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/countryinput.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/countryinput.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing countryinput.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/countryinput.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/countryinput.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing countryinput.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/countryinput.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/countryinput.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\ui\buttons\peer_avatar_button.h" />
     <ClInclude Include="SourceFiles\ui\emoji_config.h" />
@@ -1418,100 +1418,100 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing flatbutton.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatbutton.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatbutton.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing flatbutton.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatbutton.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/flatbutton.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing flatbutton.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatbutton.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatbutton.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\ui\flatcheckbox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing flatcheckbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatcheckbox.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatcheckbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing flatcheckbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatcheckbox.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/flatcheckbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing flatcheckbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatcheckbox.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatcheckbox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\ui\flatinput.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing flatinput.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatinput.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatinput.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing flatinput.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatinput.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/flatinput.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing flatinput.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatinput.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatinput.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\ui\flatlabel.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing flatlabel.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatlabel.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatlabel.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing flatlabel.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatlabel.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/flatlabel.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing flatlabel.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flatlabel.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flatlabel.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\ui\flattextarea.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing flattextarea.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flattextarea.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flattextarea.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing flattextarea.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flattextarea.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/flattextarea.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing flattextarea.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/flattextarea.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/flattextarea.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\ui\images.h" />
     <CustomBuild Include="SourceFiles\ui\popupmenu.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing popupmenu.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/popupmenu.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/popupmenu.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing popupmenu.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/popupmenu.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/popupmenu.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing popupmenu.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/popupmenu.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/popupmenu.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\ui\scrollarea.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing scrollarea.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/scrollarea.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/scrollarea.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing scrollarea.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/scrollarea.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/scrollarea.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing scrollarea.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/scrollarea.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/scrollarea.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\ui\style.h" />
     <ClInclude Include="SourceFiles\ui\style_core.h" />
@@ -1519,15 +1519,15 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing twidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/twidget.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/twidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing twidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/twidget.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/twidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing twidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/twidget.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/twidget.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\ui\text\text.h" />
     <ClInclude Include="SourceFiles\ui\text\text_block.h" />
@@ -1537,30 +1537,30 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing toast_manager.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/toast/toast_manager.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/toast/toast_manager.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing toast_manager.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/toast/toast_manager.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/ui/toast/toast_manager.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing toast_manager.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/toast/toast_manager.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/ui/toast/toast_manager.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\ui\toast\toast_widget.h" />
     <CustomBuild Include="SourceFiles\window\top_bar_widget.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing top_bar_widget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing top_bar_widget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing top_bar_widget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h"</Command>
     </CustomBuild>
     <ClInclude Include="ThirdParty\minizip\crypt.h" />
     <ClInclude Include="ThirdParty\minizip\ioapi.h" />
@@ -1568,13 +1568,13 @@
     <CustomBuild Include="SourceFiles\mainwindow.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing mainwindow.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mainwindow.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing mainwindow.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing mainwindow.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1592,13 +1592,13 @@
     <CustomBuild Include="SourceFiles\application.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing application.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/application.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/application.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing application.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing application.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/application.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/application.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/application.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/application.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1609,27 +1609,27 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing apiwrap.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/apiwrap.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/apiwrap.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing apiwrap.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/apiwrap.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/apiwrap.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing apiwrap.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/apiwrap.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/apiwrap.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\app.h" />
     <CustomBuild Include="SourceFiles\boxes\aboutbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing aboutbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/aboutbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/aboutbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing aboutbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing aboutbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/aboutbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/aboutbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/aboutbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/aboutbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1637,13 +1637,13 @@
     <CustomBuild Include="SourceFiles\boxes\addcontactbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing addcontactbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/addcontactbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/addcontactbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing addcontactbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing addcontactbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/addcontactbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/addcontactbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/addcontactbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/addcontactbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1651,13 +1651,13 @@
     <CustomBuild Include="SourceFiles\boxes\confirmbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing confirmbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/confirmbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/confirmbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing confirmbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing confirmbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/confirmbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/confirmbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/confirmbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/confirmbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1665,13 +1665,13 @@
     <CustomBuild Include="SourceFiles\boxes\connectionbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing connectionbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/connectionbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/connectionbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing connectionbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing connectionbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/connectionbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/connectionbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/connectionbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/connectionbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1679,13 +1679,13 @@
     <CustomBuild Include="SourceFiles\boxes\contactsbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing contactsbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/contactsbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/contactsbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing contactsbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing contactsbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/contactsbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/contactsbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/contactsbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/contactsbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1693,13 +1693,13 @@
     <CustomBuild Include="SourceFiles\boxes\photocropbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing photocropbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/photocropbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/photocropbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing photocropbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing photocropbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/photocropbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/photocropbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/photocropbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/photocropbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1707,13 +1707,13 @@
     <CustomBuild Include="SourceFiles\boxes\photosendbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing photosendbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/photosendbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/photosendbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing photosendbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing photosendbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/photosendbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/photosendbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/photosendbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/photosendbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1721,13 +1721,13 @@
     <CustomBuild Include="SourceFiles\boxes\emojibox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing emojibox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/emojibox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/emojibox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing emojibox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing emojibox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/emojibox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/emojibox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/emojibox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/emojibox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1735,13 +1735,13 @@
     <CustomBuild Include="SourceFiles\boxes\downloadpathbox.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing downloadpathbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/downloadpathbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/downloadpathbox.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing downloadpathbox.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing downloadpathbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/downloadpathbox.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/downloadpathbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/downloadpathbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/downloadpathbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1750,154 +1750,154 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing audio.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/audio.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/audio.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing audio.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/audio.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/audio.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing audio.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/audio.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/audio.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\usernamebox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing usernamebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/usernamebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/usernamebox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing usernamebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/usernamebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/usernamebox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing usernamebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/usernamebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/usernamebox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\languagebox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing languagebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/languagebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/languagebox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing languagebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/languagebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/languagebox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing languagebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/languagebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/languagebox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\backgroundbox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing backgroundbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/backgroundbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/backgroundbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing backgroundbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/backgroundbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/backgroundbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing backgroundbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/backgroundbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/backgroundbox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\autolockbox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing autolockbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/autolockbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/autolockbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing autolockbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/autolockbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/autolockbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing autolockbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/autolockbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/autolockbox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\passcodebox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing passcodebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/passcodebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/passcodebox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing passcodebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/passcodebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/passcodebox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing passcodebox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/passcodebox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/passcodebox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\sessionsbox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing sessionsbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/sessionsbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/sessionsbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing sessionsbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/sessionsbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/sessionsbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing sessionsbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/sessionsbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/sessionsbox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\abstractbox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing abstractbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/abstractbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/abstractbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing abstractbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/abstractbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/abstractbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing abstractbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/abstractbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/abstractbox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\boxes\stickersetbox.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing stickersetbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/stickersetbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/stickersetbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing stickersetbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/stickersetbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/boxes/stickersetbox.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing stickersetbox.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/boxes/stickersetbox.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/boxes/stickersetbox.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\autoupdater.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing autoupdater.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/autoupdater.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/autoupdater.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing autoupdater.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/autoupdater.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/autoupdater.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing autoupdater.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/autoupdater.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/autoupdater.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\config.h" />
     <ClInclude Include="SourceFiles\countries.h" />
     <CustomBuild Include="SourceFiles\dialogswidget.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing dialogswidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/dialogswidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/dialogswidget.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing dialogswidget.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing dialogswidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/dialogswidget.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/dialogswidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/dialogswidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/dialogswidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1905,13 +1905,13 @@
     <CustomBuild Include="SourceFiles\fileuploader.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing fileuploader.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/fileuploader.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/fileuploader.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing fileuploader.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing fileuploader.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/fileuploader.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/fileuploader.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/fileuploader.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/fileuploader.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1919,13 +1919,13 @@
     <CustomBuild Include="SourceFiles\dropdown.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing dropdown.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/dropdown.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/dropdown.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing dropdown.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing dropdown.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/dropdown.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/dropdown.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/dropdown.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/dropdown.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1934,13 +1934,13 @@
     <CustomBuild Include="SourceFiles\history.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing history.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing history.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing history.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/history.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1948,13 +1948,13 @@
     <CustomBuild Include="SourceFiles\historywidget.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing historywidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/historywidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/historywidget.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing historywidget.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing historywidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/historywidget.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/historywidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/historywidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/historywidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1962,13 +1962,13 @@
     <CustomBuild Include="SourceFiles\intro\introwidget.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing introwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/intro/introwidget.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing introwidget.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing introwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/intro/introwidget.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/intro/introwidget.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introwidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1976,13 +1976,13 @@
     <CustomBuild Include="SourceFiles\intro\introcode.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing introcode.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introcode.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/intro/introcode.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing introcode.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing introcode.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introcode.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introcode.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introcode.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introcode.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -1990,13 +1990,13 @@
     <CustomBuild Include="SourceFiles\intro\introphone.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing introphone.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introphone.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/intro/introphone.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing introphone.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing introphone.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introphone.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introphone.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introphone.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introphone.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2004,13 +2004,13 @@
     <CustomBuild Include="SourceFiles\intro\introsignup.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing introsignup.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introsignup.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/intro/introsignup.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing introsignup.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing introsignup.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introsignup.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/introsignup.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introsignup.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/introsignup.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2019,27 +2019,27 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing intropwdcheck.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/intropwdcheck.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/intropwdcheck.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing intropwdcheck.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/intropwdcheck.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/intro/intropwdcheck.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing intropwdcheck.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/intro/intropwdcheck.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/intro/intropwdcheck.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\intro\introstart.h" />
     <CustomBuild Include="SourceFiles\layerwidget.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing layerwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/layerwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/layerwidget.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing layerwidget.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing layerwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/layerwidget.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/layerwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/layerwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/layerwidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2047,13 +2047,13 @@
     <CustomBuild Include="SourceFiles\localimageloader.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing localimageloader.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/localimageloader.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/localimageloader.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing localimageloader.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing localimageloader.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/localimageloader.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/localimageloader.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/localimageloader.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/localimageloader.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2064,15 +2064,15 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing localstorage.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/localstorage.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/localstorage.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing localstorage.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/localstorage.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/localstorage.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing localstorage.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/localstorage.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/localstorage.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\layout.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">
@@ -2098,13 +2098,13 @@
     <CustomBuild Include="SourceFiles\mainwidget.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing mainwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/mainwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mainwidget.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing mainwidget.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing mainwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/mainwidget.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/mainwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mainwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mainwidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2113,26 +2113,26 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing mediaview.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/mediaview.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mediaview.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing mediaview.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/mediaview.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/mediaview.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing mediaview.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/mediaview.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/mediaview.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\settingswidget.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing settingswidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/settingswidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/settingswidget.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing settingswidget.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing settingswidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/settingswidget.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/settingswidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/settingswidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/settingswidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2140,13 +2140,13 @@
     <CustomBuild Include="SourceFiles\profilewidget.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing profilewidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/profilewidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/profilewidget.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing profilewidget.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing profilewidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/profilewidget.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/profilewidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/profilewidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/profilewidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2154,13 +2154,13 @@
     <CustomBuild Include="SourceFiles\pspecific_win.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing pspecific_win.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_win.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/pspecific_win.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing pspecific_win.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing pspecific_win.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/pspecific_win.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/pspecific_win.h"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_win.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_win.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2169,58 +2169,58 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing overviewwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/overviewwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/overviewwidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing overviewwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/overviewwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/overviewwidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing overviewwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/overviewwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/overviewwidget.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\passcodewidget.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing passcodewidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/passcodewidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/passcodewidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing passcodewidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/passcodewidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/passcodewidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing passcodewidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/passcodewidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/passcodewidget.h"</Command>
     </CustomBuild>
     <CustomBuild Include="SourceFiles\playerwidget.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing playerwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing playerwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing playerwidget.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
     </CustomBuild>
     <ClInclude Include="SourceFiles\pspecific.h" />
     <CustomBuild Include="SourceFiles\pspecific_linux.h">
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing pspecific_linux.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_linux.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_linux.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing pspecific_linux.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_linux.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/pspecific_linux.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing pspecific_linux.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_linux.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_linux.h"</Command>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
@@ -2229,15 +2229,15 @@
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing pspecific_mac.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_mac.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_mac.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing pspecific_mac.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_mac.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/pspecific_mac.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing pspecific_mac.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/pspecific_mac.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/pspecific_mac.h"</Command>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
@@ -2271,13 +2271,13 @@
     <CustomBuild Include="SourceFiles\sysbuttons.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing sysbuttons.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/sysbuttons.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/sysbuttons.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing sysbuttons.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing sysbuttons.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/sysbuttons.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/sysbuttons.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/sysbuttons.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/sysbuttons.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@@ -2285,13 +2285,13 @@
     <CustomBuild Include="SourceFiles\title.h">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing title.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/title.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-fstdafx.h" "-f../../SourceFiles/title.h"</Command>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing title.h...</Message>
       <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing title.h...</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/title.h"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/title.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/title.h"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS  "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\openssl\Release\include" "-fstdafx.h" "-f../../SourceFiles/title.h"</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
diff --git a/Telegram/Telegram.vcxproj.filters b/Telegram/Telegram.vcxproj.filters
index 2a5b14af6..f1ee2db64 100644
--- a/Telegram/Telegram.vcxproj.filters
+++ b/Telegram/Telegram.vcxproj.filters
@@ -1381,12 +1381,6 @@
     <CustomBuild Include="Resources\numbers.txt">
       <Filter>Resources</Filter>
     </CustomBuild>
-    <CustomBuild Include="Resources\style.txt">
-      <Filter>Resources</Filter>
-    </CustomBuild>
-    <CustomBuild Include="Resources\style_classes.txt">
-      <Filter>Resources</Filter>
-    </CustomBuild>
     <CustomBuild Include="Resources\telegram.qrc">
       <Filter>Resources</Filter>
     </CustomBuild>
diff --git a/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj b/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj
index 9e5a0eee3..0825b51f7 100644
--- a/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj
+++ b/Telegram/build/vc/codegen_numbers/codegen_numbers.vcxproj
@@ -76,7 +76,7 @@
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(QTDIR)\include;.\..\..\..\SourceFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
       <WarningLevel>Level4</WarningLevel>
       <TreatWarningAsError>true</TreatWarningAsError>
@@ -95,7 +95,7 @@
       <PreprocessorDefinitions>UNICODE;WIN32;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <DebugInformationFormat />
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(QTDIR)\include;.\..\..\..\SourceFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
       <WarningLevel>Level4</WarningLevel>
       <TreatWarningAsError>true</TreatWarningAsError>
diff --git a/Telegram/build/vc/codegen_style/codegen_style.vcxproj b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
index 15a73d76a..143842fa8 100644
--- a/Telegram/build/vc/codegen_style/codegen_style.vcxproj
+++ b/Telegram/build/vc/codegen_style/codegen_style.vcxproj
@@ -82,7 +82,7 @@
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(QTDIR)\include;.\..\..\..\SourceFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
       <WarningLevel>Level4</WarningLevel>
       <TreatWarningAsError>true</TreatWarningAsError>
@@ -101,7 +101,7 @@
       <PreprocessorDefinitions>UNICODE;WIN32;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <DebugInformationFormat />
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(QTDIR)\include;.\..\..\..\SourceFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
       <WarningLevel>Level4</WarningLevel>
       <TreatWarningAsError>true</TreatWarningAsError>

From ed3281d0f500c29963a3e8f653ff6f94654da442 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Wed, 20 Apr 2016 15:59:25 +0300
Subject: [PATCH 11/12] Improved QtCreator projects for codegen, include dirs
 used in codegen.

---
 Telegram/Resources/all_files.style            |  4 +-
 Telegram/Resources/basic.style                |  2 +-
 .../codegen/common/basic_tokenized_file.cpp   |  2 +
 .../SourceFiles/codegen/style/parsed_file.cpp | 18 +++++--
 .../SourceFiles/codegen/style/parsed_file.h   |  1 +
 Telegram/SourceFiles/localstorage.cpp         | 35 --------------
 Telegram/Telegram.pro                         | 47 +++++++------------
 7 files changed, 37 insertions(+), 72 deletions(-)

diff --git a/Telegram/Resources/all_files.style b/Telegram/Resources/all_files.style
index 8737bca36..a73664bed 100644
--- a/Telegram/Resources/all_files.style
+++ b/Telegram/Resources/all_files.style
@@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
 
 // Legacy styles
-using "Resources/basic_types.style";
-using "Resources/basic.style";
+using "./basic_types.style";
+using "./basic.style";
 
 //using "overview/overview.style";
diff --git a/Telegram/Resources/basic.style b/Telegram/Resources/basic.style
index 92ed45667..aa5f85dff 100644
--- a/Telegram/Resources/basic.style
+++ b/Telegram/Resources/basic.style
@@ -18,7 +18,7 @@ to link the code of portions of this program with the OpenSSL library.
 Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 */
-using "Resources/basic_types.style";
+using "./basic_types.style";
 
 semibold: "Open Sans Semibold";
 
diff --git a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
index 7713897dd..201c1d412 100644
--- a/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
+++ b/Telegram/SourceFiles/codegen/common/basic_tokenized_file.cpp
@@ -52,6 +52,8 @@ Token invalidToken() {
 	return { Type::Invalid, QString(), ConstUtf8String(nullptr, 0), false };
 }
 
+
+
 } // namespace
 
 BasicTokenizedFile::BasicTokenizedFile(const QString &filepath) : reader_(filepath) {
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.cpp b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
index 037b7732a..91a5f6077 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.cpp
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.cpp
@@ -44,6 +44,16 @@ constexpr int kErrorIdentifierNotFound = 804;
 constexpr int kErrorAlreadyDefined     = 805;
 constexpr int kErrorBadString          = 806;
 
+QString findInputFile(const Options &options) {
+	for (const auto &dir : options.includePaths) {
+		QString tryPath = QDir(dir).absolutePath() + '/' + options.inputPath;
+		if (QFileInfo(tryPath).exists()) {
+			return tryPath;
+		}
+	}
+	return options.inputPath;
+}
+
 QString tokenValue(const BasicToken &token) {
 	if (token.type == BasicType::String) {
 		return token.value;
@@ -144,7 +154,8 @@ bool validateAlignString(const QString &value) {
 } // namespace
 
 ParsedFile::ParsedFile(const Options &options)
-: file_(options.inputPath)
+: filePath_(findInputFile(options))
+, file_(filePath_)
 , options_(options) {
 }
 
@@ -153,8 +164,8 @@ bool ParsedFile::read() {
 		return false;
 	}
 
-	auto filepath = QFileInfo(options_.inputPath).absoluteFilePath();
-	module_ = std::make_unique<structure::Module>(filepath);
+	auto absolutePath = QFileInfo(filePath_).absoluteFilePath();
+	module_ = std::make_unique<structure::Module>(absolutePath);
 	do {
 		if (auto startToken = file_.getToken(BasicType::Name)) {
 			if (tokenValue(startToken) == "using") {
@@ -739,6 +750,7 @@ BasicToken ParsedFile::assertNextToken(BasicToken::Type type) {
 Options ParsedFile::includedOptions(const QString &filepath) {
 	auto result = options_;
 	result.inputPath = filepath;
+	result.includePaths[0] = QFileInfo(filePath_).dir().absolutePath();
 	return result;
 }
 
diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.h b/Telegram/SourceFiles/codegen/style/parsed_file.h
index f98b41c7c..c8cdcd1ed 100644
--- a/Telegram/SourceFiles/codegen/style/parsed_file.h
+++ b/Telegram/SourceFiles/codegen/style/parsed_file.h
@@ -107,6 +107,7 @@ private:
 	// Compose context-dependent full name.
 	structure::FullName composeFullName(const QString &name);
 
+	QString filePath_;
 	common::BasicTokenizedFile file_;
 	Options options_;
 	bool failed_ = false;
diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp
index 8fde7156c..1aee7a285 100644
--- a/Telegram/SourceFiles/localstorage.cpp
+++ b/Telegram/SourceFiles/localstorage.cpp
@@ -304,41 +304,6 @@ namespace {
 		}
 	};
 
-	bool fileExists(const QString &name, int options = UserPath | SafePath) {
-		if (options & UserPath) {
-			if (!_userWorking()) return false;
-		} else {
-			if (!_working()) return false;
-		}
-
-		// detect order of read attempts
-		QString toTry[2];
-		toTry[0] = ((options & UserPath) ? _userBasePath : _basePath) + name + '0';
-		if (options & SafePath) {
-			QFileInfo toTry0(toTry[0]);
-			if (toTry0.exists()) {
-				toTry[1] = ((options & UserPath) ? _userBasePath : _basePath) + name + '1';
-				QFileInfo toTry1(toTry[1]);
-				if (toTry1.exists()) {
-					QDateTime mod0 = toTry0.lastModified(), mod1 = toTry1.lastModified();
-					if (mod0 < mod1) {
-						qSwap(toTry[0], toTry[1]);
-					}
-				} else {
-					toTry[1] = QString();
-				}
-			} else {
-				toTry[0][toTry[0].size() - 1] = '1';
-			}
-		}
-		for (int32 i = 0; i < 2; ++i) {
-			QString fname(toTry[i]);
-			if (fname.isEmpty()) break;
-			if (QFileInfo(fname).exists()) return true;
-		}
-		return false;
-	}
-
 	bool readFile(FileReadDescriptor &result, const QString &name, int options = UserPath | SafePath) {
 		if (options & UserPath) {
 			if (!_userWorking()) return false;
diff --git a/Telegram/Telegram.pro b/Telegram/Telegram.pro
index 00a280f2c..8e9fd055d 100644
--- a/Telegram/Telegram.pro
+++ b/Telegram/Telegram.pro
@@ -5,15 +5,15 @@ CONFIG += plugin static c++11
 CONFIG(debug, debug|release) {
     DEFINES += _DEBUG
     OBJECTS_DIR = ./../DebugIntermediate
-    MOC_DIR = ./GenFiles/Debug
-    RCC_DIR = ./GenFiles
+    MOC_DIR = ./GeneratedFiles/Debug
+    RCC_DIR = ./GeneratedFiles
     DESTDIR = ./../Debug
 }
 CONFIG(release, debug|release) {
     DEFINES += CUSTOM_API_ID
     OBJECTS_DIR = ./../ReleaseIntermediate
-    MOC_DIR = ./GenFiles/Release
-    RCC_DIR = ./GenFiles
+    MOC_DIR = ./GeneratedFiles/Release
+    RCC_DIR = ./GeneratedFiles
     DESTDIR = ./../Release
 }
 
@@ -29,44 +29,29 @@ linux {
     HEADERS += ./SourceFiles/pspecific_linux.h
 }
 
-codegen_style.target = ./GeneratedFiles/styles/style_basic_types.h
+codegen_style.target = style_target
 codegen_style.depends = FORCE
+codegen_style.commands = ./../codegen/Debug/codegen_style "-I./../../Telegram/SourceFiles" "-o./GeneratedFiles/styles" "./../../Telegram/Resources/all_files.style" --rebuild
 
-codegen_numbers.target = ./GeneratedFiles/numbers.cpp
+codegen_numbers.target = numbers_target
 codegen_numbers.depends = ./../../Telegram/Resources/numbers.txt
 
 CONFIG(debug, debug|release) {
-codegen_style.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_style "-I./SourceFiles" "-o./GeneratedFiles/styles" "./Resources/all_files.style" --rebuild && cd ../Linux/DebugIntermediate
-codegen_numbers.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_numbers "-o./GeneratedFiles" "./Resources/numbers.txt" && cd ../Linux/DebugIntermediate
+#codegen_style.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_style "-I./SourceFiles" "-o./../Linux/DebugIntermediate/GeneratedFiles/styles" "./Resources/all_files.style" --rebuild && cd ../Linux/DebugIntermediate
+codegen_numbers.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_numbers "-o./../Linux/DebugIntermediate/GeneratedFiles" "./Resources/numbers.txt" && cd ../Linux/DebugIntermediate
 }
 CONFIG(release, debug|release) {
-codegen_style.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_style "-I./SourceFiles" "-o./GeneratedFiles/styles" "./Resources/all_files.style" --rebuild && cd ../Linux/ReleaseIntermediate
-codegen_numbers.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_numbers "-o./GeneratedFiles" "./Resources/numbers.txt" && cd ../Linux/ReleaseIntermediate
+#codegen_style.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_style "-I./SourceFiles" "-o./../Linux/ReleaseIntermediate/GeneratedFiles/styles" "./Resources/all_files.style" --rebuild && cd ../Linux/ReleaseIntermediate
+codegen_numbers.commands = cd ../../Telegram && ./../Linux/codegen/Debug/codegen_numbers "-o./../Linux/ReleaseIntermediate/GeneratedFiles" "./Resources/numbers.txt" && cd ../Linux/ReleaseIntermediate
 }
 
-lang_auto_cpp.target = ./GeneratedFiles/lang_auto.cpp
-lang_auto_cpp.depends = FORCE
-lang_auto_cpp.commands = mkdir -p ./../../Telegram/GeneratedFiles && ./../DebugLang/MetaLang -lang_in ./../../Telegram/Resources/lang.strings -lang_out ./../../Telegram/GeneratedFiles/lang_auto
-lang_auto_cpp.depends = ./../../Telegram/Resources/lang.strings
+codegen_lang.target = lang_target
+codegen_lang.depends = ./../../Telegram/Resources/lang.strings
+codegen_lang.commands = mkdir -p ./GeneratedFiles && ./../DebugLang/MetaLang -lang_in ./../../Telegram/Resources/lang.strings -lang_out ./GeneratedFiles/lang_auto
 
-lang_auto_h.target = ./GeneratedFiles/lang_auto.h
-lang_auto_h.depends = FORCE
-lang_auto_h.commands = mkdir -p ./../../Telegram/GeneratedFiles && ./../DebugLang/MetaLang -lang_in ./../../Telegram/Resources/lang.strings -lang_out ./../../Telegram/GeneratedFiles/lang_auto
-lang_auto_h.depends = ./../../Telegram/Resources/lang.strings
+QMAKE_EXTRA_TARGETS += codegen_style codegen_numbers codegen_lang
 
-#hook.depends = style_auto_cpp style_auto_h style_classes_h numbers_cpp lang_auto_cpp lang_auto_h
-hook.depends = codegen_style codegen_numbers lang_auto_cpp lang_auto_h
-CONFIG(debug,debug|release):hook.target = Makefile.Debug
-CONFIG(release,debug|release):hook.target = Makefile.Release
-
-#QMAKE_EXTRA_TARGETS += style_auto_cpp style_auto_h style_classes_h numbers_cpp lang_auto_cpp lang_auto_h hook
-QMAKE_EXTRA_TARGETS += codegen_style codegen_numbers lang_auto_cpp lang_auto_h hook
-
-#PRE_TARGETDEPS += ./GeneratedFiles/style_auto.cpp ./GeneratedFiles/style_auto.h ./GeneratedFiles/style_classes.h ./GeneratedFiles/numbers.cpp ./GeneratedFiles/lang_auto.h ./GeneratedFiles/lang_auto.cpp
-PRE_TARGETDEPS += \
-./GeneratedFiles/styles/style_basic_types.h \
-./GeneratedFiles/lang_auto.h \
-./GeneratedFiles/lang_auto.cpp
+PRE_TARGETDEPS += style_target numbers_target lang_target
 
 unix {
     linux-g++:QMAKE_TARGET.arch = $$QMAKE_HOST.arch

From 6838465de2c79136c176e8dd75c8cd001152b06b Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Wed, 20 Apr 2016 16:01:04 +0300
Subject: [PATCH 12/12] Fixed paths in codegen_numbers Xcode project.

---
 .../codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj b/Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj
index cde163d15..b68ad9076 100644
--- a/Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj
+++ b/Telegram/build/xcode/codegen_numbers/codegen_numbers.xcodeproj/project.pbxproj
@@ -268,7 +268,7 @@
 				LIBRARY_SEARCH_PATHS = "/usr/local/Qt-5.5.1/lib";
 				MACOSX_DEPLOYMENT_TARGET = 10.11;
 				MTL_ENABLE_DEBUG_INFO = YES;
-				OBJROOT = "./../../../../Mac/obj/codegen_style/$(CONFIGURATION)";
+				OBJROOT = "./../../../../Mac/obj/codegen_numbers/$(CONFIGURATION)";
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_LDFLAGS = (
 					"-lQt5Core_debug",
@@ -319,7 +319,7 @@
 				LIBRARY_SEARCH_PATHS = "/usr/local/Qt-5.5.1/lib";
 				MACOSX_DEPLOYMENT_TARGET = 10.11;
 				MTL_ENABLE_DEBUG_INFO = NO;
-				OBJROOT = "./../../../../Mac/obj/codegen_style/$(CONFIGURATION)";
+				OBJROOT = "./../../../../Mac/obj/codegen_numbers/$(CONFIGURATION)";
 				OTHER_LDFLAGS = (
 					"-lQt5Core",
 					"-lqtpcre",