diff --git a/.travis/build.sh b/.travis/build.sh
index 7deae1f95..157739889 100755
--- a/.travis/build.sh
+++ b/.travis/build.sh
@@ -114,12 +114,19 @@ build() {
 	./configure
 	make --silent
 
-	info_msg "Build MetaStyle"
-	# Build MetaStyle
-	mkdir -p "$srcdir/tdesktop/Linux/DebugIntermediateStyle"
-	cd "$srcdir/tdesktop/Linux/DebugIntermediateStyle"
-	qmake CONFIG+=debug "../../Telegram/MetaStyle.pro"
-	make --silent
+        info_msg "Build codegen_style"
+        # Build codegen_style
+        mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
+        cd "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
+        qmake CONFIG+=debug "../../../../Telegram/build/qmake/codegen_style/codegen_style.pro"
+        make --silent
+
+        info_msg "Build codegen_numbers"
+        # Build codegen_numbers
+        mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
+        cd "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
+        qmake CONFIG+=debug "../../../../Telegram/build/qmake/codegen_numbers/codegen_numbers.pro"
+        make --silent
 
 	info_msg "Build MetaLang"
 	# Build MetaLang
diff --git a/README.md b/README.md
index 32398eb24..fd3541051 100644
--- a/README.md
+++ b/README.md
@@ -32,8 +32,8 @@ The source code is published under GPLv3 with OpenSSL exception, the license is
 ## Build instructions
 
 * [Visual Studio 2015][msvc]
-* [XCode 7][xcode]
-* [XCode 7 for OS X 10.6 and 10.7][xcode_old]
+* [Xcode 7][xcode]
+* [Xcode 7 for OS X 10.6 and 10.7][xcode_old]
 * [Qt Creator 3.5.1 Ubuntu][qtcreator]
 * [Using qmake on GNU/Linux][qmake]
 
@@ -61,24 +61,10 @@ The source code is published under GPLv3 with OpenSSL exception, the license is
   * SourceFiles/art/emoji_250x.png
   * SourceFiles/gui/emoji_config.cpp
 
-* ### MetaStyle
+* ### codegen_style
+* ### codegen_numbers
 
-  From two files and two sprites
-  * Resources/style_classes.txt
-  * Resources/style.txt
-  * SourceFiles/art/sprite.png
-  * SourceFiles/art/sprite_200x.png
-
-  Creates two other sprites, four sprite grids and style constants code
-  * SourceFiles/art/sprite_125x.png
-  * SourceFiles/art/sprite_150x.png
-  * SourceFiles/art/grid.png
-  * SourceFiles/art/grid_125x.png
-  * SourceFiles/art/grid_150x.png
-  * SourceFiles/art/grid_200x.png
-  * GeneratedFiles/style_classes.h
-  * GeneratedFiles/style_auto.h
-  * GeneratedFiles/style_auto.cpp
+  Helper code generating console utilities.
 
 * ### MetaLang
 
diff --git a/Telegram/MetaStyle.pro b/Telegram/MetaStyle.pro
deleted file mode 100644
index a68a44385..000000000
--- a/Telegram/MetaStyle.pro
+++ /dev/null
@@ -1,33 +0,0 @@
-QT += core 
-
-CONFIG(debug, debug|release) {
-    DEFINES += _DEBUG
-    OBJECTS_DIR = ./../DebugIntermediateStyle
-    MOC_DIR = ./GeneratedFiles/Debug
-    DESTDIR = ./../DebugStyle
-}
-CONFIG(release, debug|release) {
-    OBJECTS_DIR = ./../ReleaseIntermediateStyle
-    MOC_DIR = ./GeneratedFiles/Release
-    DESTDIR = ./../ReleaseStyle
-}
-
-CONFIG += plugin static c++11
-
-macx {
-    QMAKE_INFO_PLIST = ./SourceFiles/_other/Style.plist
-    QMAKE_LFLAGS += -framework Cocoa
-}
-
-SOURCES += \
-    ./SourceFiles/_other/msmain.cpp \
-    ./SourceFiles/_other/genstyles.cpp \
-
-HEADERS += \
-    ./SourceFiles/_other/msmain.h \
-    ./SourceFiles/_other/genstyles.h \
-
-INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.1/QtGui\
-               ./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.1/QtCore\
-               ./../../Libraries/QtStatic/qtbase/include\
-
diff --git a/Telegram/MetaStyle.vcxproj b/Telegram/MetaStyle.vcxproj
deleted file mode 100644
index d0562882d..000000000
--- a/Telegram/MetaStyle.vcxproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.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="Deploy|Win32">
-      <Configuration>Deploy</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\Telegram\SourceFiles\_other\genstyles.cpp" />
-    <ClCompile Include="GeneratedFiles\Debug\moc_genstyles.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="GeneratedFiles\Deploy\moc_genstyles.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="GeneratedFiles\Release\moc_genstyles.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="SourceFiles\_other\msmain.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="SourceFiles\_other\msmain.h">
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </Message>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </Command>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </Message>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">
-      </Message>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">
-      </Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">
-      </Command>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\Telegram\SourceFiles\_other\genstyles.h">
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing genstyles.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"  -DUNICODE -DWIN32 -DWIN64 "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing genstyles.h...</Message>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing genstyles.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"  -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</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>
-    </CustomBuild>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}</ProjectGuid>
-    <Keyword>Qt4VSv1.0</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</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>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Deploy|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>11.0.60610.1</_ProjectFileVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)IntermediateStyle\</IntDir>
-    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)Style\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)Style\</OutDir>
-    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)IntermediateStyle\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">
-    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)Style\</OutDir>
-    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)IntermediateStyle\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>UNICODE;WIN32;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization>Disabled</Optimization>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Qt5Cored.lib;Qt5Guid.lib;qtharfbuzzngd.lib;qtpcred.lib;qtfreetyped.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <ProfileGuidedDatabase>$(IntDir)$(TargetName).pgd</ProfileGuidedDatabase>
-    </Link>
-    <ProjectReference />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>UNICODE;WIN32;WIN64;QT_NO_DEBUG;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <DebugInformationFormat />
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>UNICODE;WIN32;WIN64;QT_NO_DEBUG;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <DebugInformationFormat>
-      </DebugInformationFormat>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="1" lupdateOptions="" lreleaseOptions="" Qt5Version_x0020_Win32="$(DefaultQtVersion)" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/Telegram/MetaStyle.vcxproj.filters b/Telegram/MetaStyle.vcxproj.filters
deleted file mode 100644
index 4484e382c..000000000
--- a/Telegram/MetaStyle.vcxproj.filters
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <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>
-    <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>
-    <Filter Include="Generated Files\Debug">
-      <UniqueIdentifier>{1ace0630-c46a-4299-a4c3-d155a4cb04bb}</UniqueIdentifier>
-      <Extensions>cpp;moc</Extensions>
-      <SourceControlFiles>False</SourceControlFiles>
-    </Filter>
-    <Filter Include="Generated Files\Release">
-      <UniqueIdentifier>{2473bf06-b2ba-4f68-9bfe-72a58da61f94}</UniqueIdentifier>
-      <Extensions>cpp;moc</Extensions>
-      <SourceControlFiles>False</SourceControlFiles>
-    </Filter>
-    <Filter Include="Generated Files\Deploy">
-      <UniqueIdentifier>{5366361d-c2b2-4ae4-929f-05d2d9f43860}</UniqueIdentifier>
-      <Extensions>cpp;moc</Extensions>
-      <SourceControlFiles>False</SourceControlFiles>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\Telegram\SourceFiles\_other\genstyles.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="SourceFiles\_other\msmain.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="GeneratedFiles\Deploy\moc_genstyles.cpp">
-      <Filter>Generated Files\Deploy</Filter>
-    </ClCompile>
-    <ClCompile Include="GeneratedFiles\Debug\moc_genstyles.cpp">
-      <Filter>Generated Files\Debug</Filter>
-    </ClCompile>
-    <ClCompile Include="GeneratedFiles\Release\moc_genstyles.cpp">
-      <Filter>Generated Files\Release</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\Telegram\SourceFiles\_other\genstyles.h">
-      <Filter>Header Files</Filter>
-    </CustomBuild>
-    <CustomBuild Include="SourceFiles\_other\msmain.h">
-      <Filter>Header Files</Filter>
-    </CustomBuild>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/Telegram/MetaStyle.xcodeproj/project.pbxproj b/Telegram/MetaStyle.xcodeproj/project.pbxproj
deleted file mode 100644
index 6d7546ca2..000000000
--- a/Telegram/MetaStyle.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,848 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 46;
-	objects = {
-
-/* Begin PBXAggregateTarget section */
-		5E275BA59C8BA5B561E14CF4 /* Preprocess */ = {
-			isa = PBXAggregateTarget;
-			buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaStyle" */;
-			buildPhases = (
-				07C3AF43194CCD0F0016CFF1 /* ShellScript */,
-				7EF0942E79C014DCEC8976BC /* Qt Preprocessors */,
-			);
-			dependencies = (
-			);
-			name = Preprocess;
-			productName = "Qt Preprocess";
-		};
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
-		07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 07D795491B5544B200DE9598 /* qtpcre */; };
-		1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DBF506D10449BFABD45B82DA /* Qt5PrintSupport */; };
-		1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */; };
-		328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DFD7912080BC557230093752 /* ApplicationServices.framework */; };
-		3D6772E35214B81E50791089 /* genstyles.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = F8BC976260B6D624F23C32D6 /* genstyles.cpp */; settings = {ATTRIBUTES = (); }; };
-		496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8F500B5166907B6D9A7C3E3D /* qico */; };
-		59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F0681BC551FC8A2B132FC646 /* qjp2 */; };
-		668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9742F24EE18EA44D52824F1E /* CoreServices.framework */; };
-		728CDDB7D7F2B9FF141651AD /* msmain.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = EF5243ECB3132AF2796F09DF /* msmain.cpp */; settings = {ATTRIBUTES = (); }; };
-		7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 31120EDB269DFF13E1D49847 /* qicns */; };
-		7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DCEFD9167C239650120B0145 /* qtga */; };
-		8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D4B32C2222F82AC56BADEB21 /* OpenGL.framework */; };
-		8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = A1A67BEAA744704B29168D39 /* IOKit.framework */; };
-		8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D6193B79CECC9DD0142D1200 /* qtharfbuzzng */; };
-		9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 04391BE7A8B9D811E255100A /* Qt5Gui */; };
-		A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8CF51323544B886B8F4A2232 /* qwbmp */; };
-		A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D3D1BE0BEA3AEE0551AD39AC /* qdds */; };
-		B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 5A80A1907B6CFFB524C1E57D /* Qt5Core */; };
-		BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */; };
-		C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F2453BA07315EB9F34F1CD57 /* qtiff */; };
-		CBF24309A148222794F28401 /* moc_genstyles.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 861D2151FB56504EB72BDB6E /* moc_genstyles.cpp */; settings = {ATTRIBUTES = (); }; };
-		D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D53D8E6A188E05078A114294 /* qcocoa */; };
-		D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */; };
-		E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */; };
-		F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = FCC237CA5AD60B9BA4447615 /* Foundation.framework */; };
-		F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = ADC6308023253CEA51F86E21 /* qwebp */; };
-		F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */; };
-		F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9DFF62A901D70814B8A323D4 /* Carbon.framework */; };
-		FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 83D37373949868693FB7816D /* qmng */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
-		0746FEAC193D006900F5C3FD /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 6DB9C3763D02B1415CD9D565 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 5E275BA59C8BA5B561E14CF4;
-			remoteInfo = "Qt Preprocess";
-		};
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
-		04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.5.1/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		060A694B42A4555240009936 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
-		075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
-		07D795491B5544B200DE9598 /* qtpcre */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtpcre; path = "usr/local/Qt-5.5.1/lib/libqtpcre$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<group>"; };
-		0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.1/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
-		10F719DFC6D0B05605ED1C16 /* MetaStyle.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = MetaStyle.pro; sourceTree = "<absolute>"; };
-		111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
-		16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
-		1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
-		23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
-		2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
-		247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
-		24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
-		28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
-		293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
-		2CBD32689B153445ED220FAE /* MetaStyle.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetaStyle.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
-		2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
-		311004331A04F3D69C98643C /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
-		31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
-		346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
-		360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
-		3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
-		382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
-		3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
-		45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.1/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
-		45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
-		4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.5.1/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
-		4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
-		4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
-		5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
-		5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.5.1/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
-		5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
-		5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
-		6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
-		63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.1/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
-		669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.1/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
-		69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
-		6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
-		6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.1/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
-		6FF81CB4A724CE1990CEE99A /* msmain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = msmain.h; path = SourceFiles/_other/msmain.h; sourceTree = "<absolute>"; };
-		74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
-		77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
-		7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
-		7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
-		7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
-		7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
-		7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
-		817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.1/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
-		82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
-		83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		85061B1DA49D125991117950 /* /usr/local/Qt-5.5.1/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
-		85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
-		861D2151FB56504EB72BDB6E /* moc_genstyles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_genstyles.cpp; path = GeneratedFiles/Debug/moc_genstyles.cpp; sourceTree = "<absolute>"; };
-		87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
-		87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
-		8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
-		892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
-		89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
-		8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
-		8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
-		8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
-		8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.1/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
-		8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
-		8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
-		8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
-		8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
-		8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
-		946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
-		9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
-		9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
-		9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
-		A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
-		A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
-		A35D133D7C0EFB42FA85D194 /* genstyles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = genstyles.h; path = SourceFiles/_other/genstyles.h; sourceTree = "<absolute>"; };
-		A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
-		A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
-		A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
-		A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.1/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
-		AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
-		AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
-		AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = "<absolute>"; };
-		ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
-		ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
-		ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
-		AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-		AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
-		B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
-		B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
-		B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
-		B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
-		B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
-		B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
-		B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
-		B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
-		B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
-		BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
-		BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
-		BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
-		BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
-		C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
-		C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
-		C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
-		CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
-		CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
-		CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
-		CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
-		CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
-		D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
-		D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
-		D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
-		D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
-		D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.1/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
-		D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
-		D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.5.1/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.5.1/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
-		D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
-		D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
-		DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
-		DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.5.1/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
-		DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
-		E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
-		E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
-		E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
-		E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
-		E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
-		E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.5.1/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
-		EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
-		EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
-		EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
-		EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.1/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
-		EF5243ECB3132AF2796F09DF /* msmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = msmain.cpp; path = SourceFiles/_other/msmain.cpp; sourceTree = "<absolute>"; };
-		F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
-		F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
-		F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
-		F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.1/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
-		F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
-		F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
-		F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
-		F8BC976260B6D624F23C32D6 /* genstyles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = genstyles.cpp; path = SourceFiles/_other/genstyles.cpp; sourceTree = "<absolute>"; };
-		F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
-		FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
-		FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		D1C883685E82D5676953459A /* Link Binary With Libraries */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */,
-				328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */,
-				668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */,
-				F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */,
-				F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */,
-				8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */,
-				E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */,
-				D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */,
-				F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */,
-				8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */,
-				1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */,
-				D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */,
-				BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */,
-				A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */,
-				7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */,
-				496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */,
-				59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */,
-				FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */,
-				7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */,
-				C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */,
-				A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */,
-				F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */,
-				9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */,
-				8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */,
-				07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */,
-				B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */,
-			);
-			name = "Link Binary With Libraries";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		25B08E2869634E9BCBA333A2 /* Generated Sources */ = {
-			isa = PBXGroup;
-			children = (
-				D0B536A85E53302E4F66CE23 /* GeneratedFiles */,
-			);
-			name = "Generated Sources";
-			sourceTree = "<Group>";
-		};
-		2EB56BE3C2D93CDAB0C52E67 /* Sources */ = {
-			isa = PBXGroup;
-			children = (
-				73F2E45FDEB381A085D37A49 /* SourceFiles */,
-			);
-			name = Sources;
-			sourceTree = "<Group>";
-		};
-		31562E815E3DF5B1A777D3EF /* _other */ = {
-			isa = PBXGroup;
-			children = (
-				EF5243ECB3132AF2796F09DF /* msmain.cpp */,
-				F8BC976260B6D624F23C32D6 /* genstyles.cpp */,
-				6FF81CB4A724CE1990CEE99A /* msmain.h */,
-				A35D133D7C0EFB42FA85D194 /* genstyles.h */,
-			);
-			name = _other;
-			sourceTree = "<Group>";
-		};
-		73F2E45FDEB381A085D37A49 /* SourceFiles */ = {
-			isa = PBXGroup;
-			children = (
-				31562E815E3DF5B1A777D3EF /* _other */,
-			);
-			name = SourceFiles;
-			sourceTree = "<Group>";
-		};
-		74B182DB50CB5611B5C1C297 /* Supporting Files */ = {
-			isa = PBXGroup;
-			children = (
-				10F719DFC6D0B05605ED1C16 /* MetaStyle.pro */,
-				6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.1/mkspecs/qdevice.pri */,
-				669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.1/mkspecs/common/shell-unix.conf */,
-				0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.1/mkspecs/common/unix.conf */,
-				EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.1/mkspecs/common/mac.conf */,
-				817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.1/mkspecs/common/macx.conf */,
-				45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.1/mkspecs/common/gcc-base.conf */,
-				A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.1/mkspecs/common/gcc-base-mac.conf */,
-				8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.1/mkspecs/common/clang.conf */,
-				F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.1/mkspecs/common/clang-mac.conf */,
-				D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.1/mkspecs/qconfig.pri */,
-				ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth.pri */,
-				2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth_private.pri */,
-				BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bootstrap_private.pri */,
-				CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_clucene_private.pri */,
-				77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent.pri */,
-				7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent_private.pri */,
-				7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_core.pri */,
-				5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_core_private.pri */,
-				7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_declarative.pri */,
-				89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_declarative_private.pri */,
-				F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer.pri */,
-				7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer_private.pri */,
-				69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designercomponents_private.pri */,
-				360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_enginio.pri */,
-				4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_enginio_private.pri */,
-				23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_gui.pri */,
-				D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_gui_private.pri */,
-				FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_help.pri */,
-				D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_help_private.pri */,
-				A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_macextras.pri */,
-				33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_macextras_private.pri */,
-				D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimedia.pri */,
-				E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimedia_private.pri */,
-				28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimediawidgets.pri */,
-				D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
-				293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_network.pri */,
-				382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_network_private.pri */,
-				8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_nfc.pri */,
-				B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_nfc_private.pri */,
-				5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_opengl.pri */,
-				E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_opengl_private.pri */,
-				E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_openglextensions.pri */,
-				5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_openglextensions_private.pri */,
-				8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_platformsupport_private.pri */,
-				F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_positioning.pri */,
-				E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_positioning_private.pri */,
-				6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport.pri */,
-				D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport_private.pri */,
-				B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qml.pri */,
-				6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qml_private.pri */,
-				4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
-				DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmltest.pri */,
-				ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qmltest_private.pri */,
-				5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
-				16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quick.pri */,
-				8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quick_private.pri */,
-				82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickparticles_private.pri */,
-				D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickwidgets.pri */,
-				B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
-				CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_script.pri */,
-				C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_script_private.pri */,
-				CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_scripttools.pri */,
-				A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_scripttools_private.pri */,
-				85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sensors.pri */,
-				BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sensors_private.pri */,
-				BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport.pri */,
-				311004331A04F3D69C98643C /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport_private.pri */,
-				7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql.pri */,
-				075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql_private.pri */,
-				ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_svg.pri */,
-				8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_svg_private.pri */,
-				DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_testlib.pri */,
-				8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_testlib_private.pri */,
-				E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_uitools.pri */,
-				B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_uitools_private.pri */,
-				8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_websockets.pri */,
-				87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_websockets_private.pri */,
-				A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_widgets.pri */,
-				8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_widgets_private.pri */,
-				AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xml.pri */,
-				E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xml_private.pri */,
-				2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns.pri */,
-				F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
-				D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
-				1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfcamera.pri */,
-				F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
-				AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qcocoa.pri */,
-				EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
-				111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qdds.pri */,
-				3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
-				2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
-				EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qicns.pri */,
-				C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qico.pri */,
-				45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qjp2.pri */,
-				B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qminimal.pri */,
-				F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
-				B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
-				EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
-				3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
-				946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qmng.pri */,
-				CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qoffscreen.pri */,
-				9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qqt7engine.pri */,
-				B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsqlite.pri */,
-				F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsvg.pri */,
-				CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qsvgicon.pri */,
-				247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
-				87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
-				24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
-				060A694B42A4555240009936 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtga.pri */,
-				BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtiff.pri */,
-				B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
-				74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
-				C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
-				AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
-				8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
-				892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
-				A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
-				346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qwbmp.pri */,
-				B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qwebp.pri */,
-				63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.1/mkspecs/macx-clang/qmake.conf */,
-				85061B1DA49D125991117950 /* /usr/local/Qt-5.5.1/mkspecs/macx-xcode/qmake.conf */,
-				AB745978DF0F41D1801ABDA6 /* .qmake.stash */,
-			);
-			name = "Supporting Files";
-			sourceTree = "<Group>";
-		};
-		801973D3334D0FCA849CF485 /* Debug */ = {
-			isa = PBXGroup;
-			children = (
-				861D2151FB56504EB72BDB6E /* moc_genstyles.cpp */,
-			);
-			name = Debug;
-			sourceTree = "<Group>";
-		};
-		AF39DD055C3EF8226FBE929D /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				07D795491B5544B200DE9598 /* qtpcre */,
-				AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */,
-				DFD7912080BC557230093752 /* ApplicationServices.framework */,
-				9742F24EE18EA44D52824F1E /* CoreServices.framework */,
-				4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */,
-				FCC237CA5AD60B9BA4447615 /* Foundation.framework */,
-				D4B32C2222F82AC56BADEB21 /* OpenGL.framework */,
-				8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */,
-				D53D8E6A188E05078A114294 /* qcocoa */,
-				9DFF62A901D70814B8A323D4 /* Carbon.framework */,
-				A1A67BEAA744704B29168D39 /* IOKit.framework */,
-				DBF506D10449BFABD45B82DA /* Qt5PrintSupport */,
-				E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */,
-				4689C06178B60B84E7F3A3B7 /* Qt5Widgets */,
-				D3D1BE0BEA3AEE0551AD39AC /* qdds */,
-				31120EDB269DFF13E1D49847 /* qicns */,
-				8F500B5166907B6D9A7C3E3D /* qico */,
-				F0681BC551FC8A2B132FC646 /* qjp2 */,
-				83D37373949868693FB7816D /* qmng */,
-				DCEFD9167C239650120B0145 /* qtga */,
-				F2453BA07315EB9F34F1CD57 /* qtiff */,
-				8CF51323544B886B8F4A2232 /* qwbmp */,
-				ADC6308023253CEA51F86E21 /* qwebp */,
-				04391BE7A8B9D811E255100A /* Qt5Gui */,
-				D6193B79CECC9DD0142D1200 /* qtharfbuzzng */,
-				5A80A1907B6CFFB524C1E57D /* Qt5Core */,
-			);
-			name = Frameworks;
-			sourceTree = "<Group>";
-		};
-		D0B536A85E53302E4F66CE23 /* GeneratedFiles */ = {
-			isa = PBXGroup;
-			children = (
-				801973D3334D0FCA849CF485 /* Debug */,
-			);
-			name = GeneratedFiles;
-			sourceTree = "<Group>";
-		};
-		E8C543AB96796ECAA2E65C57 /* MetaStyle */ = {
-			isa = PBXGroup;
-			children = (
-				2EB56BE3C2D93CDAB0C52E67 /* Sources */,
-				25B08E2869634E9BCBA333A2 /* Generated Sources */,
-				74B182DB50CB5611B5C1C297 /* Supporting Files */,
-				AF39DD055C3EF8226FBE929D /* Frameworks */,
-				FE0A091FDBFB3E9C31B7A1BD /* Products */,
-			);
-			name = MetaStyle;
-			sourceTree = "<Group>";
-		};
-		FE0A091FDBFB3E9C31B7A1BD /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				2CBD32689B153445ED220FAE /* MetaStyle.app */,
-			);
-			name = Products;
-			sourceTree = "<Group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		4F0CF954E7A00B07204FA0B2 /* MetaStyle */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaStyle" */;
-			buildPhases = (
-				F7E50F631C51CD5B5DC0BC43 /* Compile Sources */,
-				D1C883685E82D5676953459A /* Link Binary With Libraries */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				CCEE60BFA9DEFDFF202AFD47 /* PBXTargetDependency */,
-			);
-			name = MetaStyle;
-			productInstallPath = ../Mac/DebugStyle/;
-			productName = MetaStyle;
-			productReference = 2CBD32689B153445ED220FAE /* MetaStyle.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		6DB9C3763D02B1415CD9D565 /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 0700;
-			};
-			buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaStyle" */;
-			compatibilityVersion = "Xcode 3.2";
-			developmentRegion = English;
-			hasScannedForEncodings = 1;
-			knownRegions = (
-				en,
-			);
-			mainGroup = E8C543AB96796ECAA2E65C57 /* MetaStyle */;
-			productRefGroup = FE0A091FDBFB3E9C31B7A1BD /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				4F0CF954E7A00B07204FA0B2 /* MetaStyle */,
-				5E275BA59C8BA5B561E14CF4 /* Preprocess */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXShellScriptBuildPhase section */
-		07C3AF43194CCD0F0016CFF1 /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "mkdir -p ./GeneratedFiles/Debug";
-		};
-		7EF0942E79C014DCEC8976BC /* Qt Preprocessors */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			name = "Qt Preprocessors";
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "make -C . -f MetaStyle.xcodeproj/qt_preprocess.mak";
-		};
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		F7E50F631C51CD5B5DC0BC43 /* Compile Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				728CDDB7D7F2B9FF141651AD /* msmain.cpp in Compile Sources */,
-				3D6772E35214B81E50791089 /* genstyles.cpp in Compile Sources */,
-				CBF24309A148222794F28401 /* moc_genstyles.cpp in Compile Sources */,
-			);
-			name = "Compile Sources";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
-		CCEE60BFA9DEFDFF202AFD47 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 5E275BA59C8BA5B561E14CF4 /* Preprocess */;
-			targetProxy = 0746FEAC193D006900F5C3FD /* PBXContainerItemProxy */;
-		};
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
-		339EE1B2CC4FC24589A0EA95 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)";
-				COPY_PHASE_STRIP = YES;
-				DYLIB_COMPATIBILITY_VERSION = 1.0;
-				DYLIB_CURRENT_VERSION = 1.0.0;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				FRAMEWORK_SEARCH_PATHS = "";
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					../../Libraries/QtStatic/qtbase/include/QtGui/5.5.1/QtGui,
-					../../Libraries/QtStatic/qtbase/include/QtCore/5.5.1/QtCore,
-					../../Libraries/QtStatic/qtbase/include,
-					"/usr/local/Qt-5.5.1/include",
-					"/usr/local/Qt-5.5.1/include/QtGui",
-					"/usr/local/Qt-5.5.1/include/QtCore",
-					GeneratedFiles/Debug,
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
-					"/usr/local/Qt-5.5.1/mkspecs/macx-clang",
-				);
-				INFOPLIST_FILE = Style.plist;
-				INSTALL_DIR = ../Mac/ReleaseStyle/;
-				LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
-				LIBRARY_SEARCH_PATHS = (
-					/System/Library/Frameworks/,
-					"/usr/local/Qt-5.5.1/lib",
-					"/usr/local/Qt-5.5.1/plugins/platforms",
-					"/usr/local/Qt-5.5.1/plugins/imageformats",
-				);
-				MACOSX_DEPLOYMENT_TARGET = 10.8;
-				OBJROOT = ./../Mac/ReleaseIntermediateStyle;
-				OTHER_CFLAGS = (
-					"-pipe",
-					"-g",
-					"-Wall",
-					"-W",
-					"-fPIE",
-					"-D_DEBUG",
-					"-DQT_GUI_LIB",
-					"-DQT_CORE_LIB",
-				);
-				OTHER_CPLUSPLUSFLAGS = (
-					"-pipe",
-					"-g",
-					"-std=c++11",
-					"-stdlib=libc++",
-					"-Wall",
-					"-W",
-					"-fPIE",
-					"-D_DEBUG",
-					"-DQT_GUI_LIB",
-					"-DQT_CORE_LIB",
-				);
-				OTHER_LDFLAGS = (
-					"-headerpad_max_install_names",
-					"-stdlib=libc++",
-					"-L/usr/local/Qt-5.5.1/lib",
-					"-L/usr/local/Qt-5.5.1/plugins/platforms",
-					"-lcups",
-					"-L/usr/local/Qt-5.5.1/plugins/imageformats",
-					"-lz",
-					"-lm",
-				);
-				PRODUCT_NAME = MetaStyle;
-				QT_LIBRARY_SUFFIX = "";
-				SDKROOT = macosx;
-				SYMROOT = ./../Mac;
-			};
-			name = Release;
-		};
-		3AA6C32AC930069E80220CF1 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)";
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				DYLIB_COMPATIBILITY_VERSION = 1.0;
-				DYLIB_CURRENT_VERSION = 1.0.0;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_TESTABILITY = YES;
-				FRAMEWORK_SEARCH_PATHS = "";
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				HEADER_SEARCH_PATHS = (
-					../../Libraries/QtStatic/qtbase/include/QtGui/5.5.1/QtGui,
-					../../Libraries/QtStatic/qtbase/include/QtCore/5.5.1/QtCore,
-					../../Libraries/QtStatic/qtbase/include,
-					"/usr/local/Qt-5.5.1/include",
-					"/usr/local/Qt-5.5.1/include/QtGui",
-					"/usr/local/Qt-5.5.1/include/QtCore",
-					GeneratedFiles/Debug,
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
-					"/usr/local/Qt-5.5.1/mkspecs/macx-clang",
-				);
-				INFOPLIST_FILE = Style.plist;
-				INSTALL_DIR = ../Mac/DebugStyle/;
-				LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
-				LIBRARY_SEARCH_PATHS = (
-					/System/Library/Frameworks/,
-					"/usr/local/Qt-5.5.1/lib",
-					"/usr/local/Qt-5.5.1/plugins/platforms",
-					"/usr/local/Qt-5.5.1/plugins/imageformats",
-				);
-				MACOSX_DEPLOYMENT_TARGET = 10.8;
-				OBJROOT = ./../Mac/DebugIntermediateStyle;
-				ONLY_ACTIVE_ARCH = YES;
-				OTHER_CFLAGS = (
-					"-pipe",
-					"-g",
-					"-Wall",
-					"-W",
-					"-fPIE",
-					"-D_DEBUG",
-					"-DQT_GUI_LIB",
-					"-DQT_CORE_LIB",
-				);
-				OTHER_CPLUSPLUSFLAGS = (
-					"-pipe",
-					"-g",
-					"-std=c++11",
-					"-stdlib=libc++",
-					"-Wall",
-					"-W",
-					"-fPIE",
-					"-D_DEBUG",
-					"-DQT_GUI_LIB",
-					"-DQT_CORE_LIB",
-				);
-				OTHER_LDFLAGS = (
-					"-headerpad_max_install_names",
-					"-stdlib=libc++",
-					"-L/usr/local/Qt-5.5.1/lib",
-					"-L/usr/local/Qt-5.5.1/plugins/platforms",
-					"-lcups",
-					"-L/usr/local/Qt-5.5.1/plugins/imageformats",
-					"-lz",
-					"-lm",
-				);
-				PRODUCT_NAME = MetaStyle;
-				QT_LIBRARY_SUFFIX = _debug;
-				SDKROOT = macosx;
-				SYMROOT = ./../Mac;
-			};
-			name = Debug;
-		};
-		6666AA5E688052234F6758D8 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COMBINE_HIDPI_IMAGES = YES;
-				COPY_PHASE_STRIP = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				HEADER_SEARCH_PATHS = (
-					./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.1/QtGui,
-					./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.1/QtCore,
-					./../../Libraries/QtStatic/qtbase/include,
-					"/usr/local/Qt-5.5.1/include",
-					"/usr/local/Qt-5.5.1/include/QtGui",
-					"/usr/local/Qt-5.5.1/include/QtCore",
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
-					"/usr/local/Qt-5.5.1/mkspecs/macx-clang",
-				);
-				INSTALL_DIR = ./../Mac/ReleaseStyle/;
-				PRODUCT_BUNDLE_IDENTIFIER = "com.tdesktop.${PRODUCT_NAME:rfc1034identifier}";
-				PRODUCT_NAME = MetaStyle;
-				QT_LIBRARY_SUFFIX = "";
-				SDKROOT = macosx;
-			};
-			name = Release;
-		};
-		77418F46922677BB04ED38DD /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COMBINE_HIDPI_IMAGES = YES;
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				HEADER_SEARCH_PATHS = (
-					./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.1/QtGui,
-					./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.1/QtCore,
-					./../../Libraries/QtStatic/qtbase/include,
-					"/usr/local/Qt-5.5.1/include",
-					"/usr/local/Qt-5.5.1/include/QtGui",
-					"/usr/local/Qt-5.5.1/include/QtCore",
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
-					/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
-					"/usr/local/Qt-5.5.1/mkspecs/macx-clang",
-				);
-				INSTALL_DIR = ./../Mac/DebugStyle/;
-				PRODUCT_BUNDLE_IDENTIFIER = "com.tdesktop.${PRODUCT_NAME:rfc1034identifier}";
-				PRODUCT_NAME = MetaStyle;
-				QT_LIBRARY_SUFFIX = _debug;
-				SDKROOT = macosx;
-			};
-			name = Debug;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaStyle" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				77418F46922677BB04ED38DD /* Debug */,
-				6666AA5E688052234F6758D8 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
-		};
-		DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaStyle" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				3AA6C32AC930069E80220CF1 /* Debug */,
-				339EE1B2CC4FC24589A0EA95 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 6DB9C3763D02B1415CD9D565 /* Project object */;
-}
diff --git a/Telegram/MetaStyle.xcodeproj/qt_preprocess.mak b/Telegram/MetaStyle.xcodeproj/qt_preprocess.mak
deleted file mode 100644
index c1bc48d11..000000000
--- a/Telegram/MetaStyle.xcodeproj/qt_preprocess.mak
+++ /dev/null
@@ -1,67 +0,0 @@
-#############################################################################
-# Makefile for building: ../Mac/DebugStyle/MetaStyle.app/Contents/MacOS/MetaStyle
-# Generated by qmake (3.0) (Qt 5.5.1)
-# Project:  MetaStyle.pro
-# Template: app
-# Command: /usr/local/Qt-5.5.1/bin/qmake -spec macx-xcode -o MetaStyle.xcodeproj/project.pbxproj MetaStyle.pro
-#############################################################################
-
-MAKEFILE      = project.pbxproj
-
-MOC       = /usr/local/Qt-5.5.1/bin/moc
-UIC       =
-LEX       = flex
-LEXFLAGS  =
-YACC      = yacc
-YACCFLAGS = -d
-DEFINES       = -D_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
-INCPATH       = -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.5.1/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.5.1/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
-DEL_FILE  = rm -f
-MOVE      = mv -f
-
-IMAGES =
-PARSERS =
-preprocess: $(PARSERS) compilers
-clean preprocess_clean: parser_clean compiler_clean
-
-parser_clean:
-mocclean: compiler_moc_header_clean compiler_moc_source_clean
-
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all
-
-check: first
-
-compilers: GeneratedFiles/Debug/moc_genstyles.cpp
-compiler_objective_c_make_all:
-compiler_objective_c_clean:
-compiler_rcc_make_all:
-compiler_rcc_clean:
-compiler_moc_header_make_all: GeneratedFiles/Debug/moc_genstyles.cpp
-compiler_moc_header_clean:
-	-$(DEL_FILE) GeneratedFiles/Debug/moc_genstyles.cpp
-GeneratedFiles/Debug/moc_genstyles.cpp: ../../Libraries/QtStatic/qtbase/include/QtCore/QMap \
-		../../Libraries/QtStatic/qtbase/include/QtCore/QVector \
-		../../Libraries/QtStatic/qtbase/include/QtGui/QBitmap \
-		../../Libraries/QtStatic/qtbase/include/QtCore/QBuffer \
-		../../Libraries/QtStatic/qtbase/include/QtCore/QFileInfo \
-		../../Libraries/QtStatic/qtbase/include/QtCore/QFile \
-		../../Libraries/QtStatic/qtbase/include/QtCore/QTextStream \
-		../../Libraries/QtStatic/qtbase/include/QtCore/QString \
-		../../Libraries/QtStatic/qtbase/include/QtCore/QCoreApplication \
-		../../Libraries/QtStatic/qtbase/include/QtGui/QGuiApplication \
-		../../Libraries/QtStatic/qtbase/include/QtGui/QPainter \
-		SourceFiles/_other/genstyles.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/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/_other/genstyles.h -o GeneratedFiles/Debug/moc_genstyles.cpp
-
-compiler_moc_source_make_all:
-compiler_moc_source_clean:
-compiler_rez_source_make_all:
-compiler_rez_source_clean:
-compiler_yacc_decl_make_all:
-compiler_yacc_decl_clean:
-compiler_yacc_impl_make_all:
-compiler_yacc_impl_clean:
-compiler_lex_make_all:
-compiler_lex_clean:
-compiler_clean: compiler_moc_header_clean
-
diff --git a/Telegram/SourceFiles/_other/genstyles.cpp b/Telegram/SourceFiles/_other/genstyles.cpp
deleted file mode 100644
index 1a16cdd62..000000000
--- a/Telegram/SourceFiles/_other/genstyles.cpp
+++ /dev/null
@@ -1,2015 +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 "genstyles.h"
-
-#include <QtCore/QtPlugin>
-#include <QtCore/QRegularExpression>
-
-#ifdef Q_OS_WIN
-Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
-#endif
-
-#ifdef Q_OS_MAC
-Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)
-Q_IMPORT_PLUGIN(QDDSPlugin)
-Q_IMPORT_PLUGIN(QICNSPlugin)
-Q_IMPORT_PLUGIN(QICOPlugin)
-Q_IMPORT_PLUGIN(QJp2Plugin)
-Q_IMPORT_PLUGIN(QMngPlugin)
-Q_IMPORT_PLUGIN(QTgaPlugin)
-Q_IMPORT_PLUGIN(QTiffPlugin)
-Q_IMPORT_PLUGIN(QWbmpPlugin)
-Q_IMPORT_PLUGIN(QWebpPlugin)
-#endif
-
-enum ScalarType {
-	scNumber,
-	scString,
-	scColor,
-	scPoint,
-	scRect,
-	scSprite,
-	scSize,
-	scTransition,
-	scCursor,
-	scAlign,
-	scMargins,
-	scFont,
-
-	scTypesCount,
-};
-
-string scalarTypeNames[] = {
-	"number",
-	"string",
-	"color",
-	"point",
-	"rect",
-	"sprite",
-	"size",
-	"transition",
-	"cursor",
-	"align",
-	"margins",
-	"font",
-};
-
-string outputTypeNames[] = {
-	"number",
-	"string",
-	"color",
-	"point",
-	"rect",
-	"sprite",
-	"size",
-	"transition",
-	"cursor",
-	"align",
-	"margins",
-	"font",
-};
-
-enum ClassGenTokenType {
-	csName, // [a-zA-Z_][a-zA-Z0-9_]*
-	csDelimeter, // ':'
-	csFieldFinish, // ';'
-	csClassStart, // '{'
-	csClassFinish, // '}'
-};
-
-bool skipWhitespaces(const char *&from, const char *end) {
-	while (from < end && (*from == ' ' || *from == '\n' || *from == '\t' || *from == '\r')) {
-		++from;
-	}
-	return (from < end);
-}
-
-bool skipComment(const char *&from, const char *end) {
-	if (from >= end) return false;
-	if (*from == '/') {
-		if (from + 1 >= end) return true;
-		if (*(from + 1) == '*') {
-			from += 2;
-			while (from + 1 < end && (*from != '*' || *(from + 1) != '/')) {
-				++from;
-			}
-			from += 2;
-			return (from < end);
-		} else if (*(from + 1) == '/') {
-			from += 2;
-			while (from < end && *from != '\n' && *from != '\r') {
-				++from;
-			}
-			++from;
-			return (from < end);
-		} else {
-			return true;
-		}
-	}
-	return true;
-}
-
-void readName(const char *&from, const char *end, string &token) {
-	if (from >= end) throw Exception("Unexpected end of file!");
-
-	const char *start = from;
-	char ch = *from;
-	if (!((ch >= 'a' && ch <= 'z') || ((ch >= 'A') && (ch <= 'Z')))) {
-		throw Exception("Unknown error :(");
-	}
-	while (++from < end) {
-		ch = *from;
-		if (!((ch >= 'a' && ch <= 'z') || ((ch >= 'A') && (ch <= 'Z')) || ((ch >= '0') && (ch <= '9')) || ch == '_')) break;
-	}
-	token = string(start, from);
-}
-
-void readString(const char *&from, const char *end, string &token) {
-	if (from + 1 >= end) throw Exception("Unexpected end of file!");
-
-	token = "";
-	char border = *from;
-	if (border != '"' && border != '\'') {
-		throw Exception("Unknown error :(");
-	}
-
-	bool spec = false;
-	for (++from; spec || (*from != border); ) {
-		if (*from == '\\') {
-			spec = true;
-		} else if (spec) {
-			if (*from == 'n') {
-				token += '\n';
-			} else if (*from == 't') {
-				token += '\t';
-			} else if (*from == '\\' || *from == '"' || *from == '\'') {
-				token += *from;
-			} else {
-				throw Exception(QString("Unexpected escaped character in string: %1").arg(*from));
-			}
-			spec = false;
-		} else {
-			token += *from;
-		}
-		if (++from >= end) throw Exception("Unexpected end of file!");
-	}
-	++from;
-}
-
-char hexChar(char ch) {
-	if (ch >= 'a' && ch <= 'f') {
-		return ch + ('A' - 'a');
-	}
-	return ch;
-}
-
-void readColor(const char *&from, const char *end, string &token) {
-	if (from + 3 >= end) throw Exception("Unexpected end of file!");
-
-	token.resize(8);
-
-	int len = 0;
-	for (const char *ch = from + 1; ch < end; ++ch) {
-		if ((*ch >= '0' && *ch <= '9') || (*ch >= 'A' && *ch <= 'F') || (*ch >= 'a' && *ch <= 'f')) {
-			++len;
-		} else {
-			break;
-		}
-	}
-	if (len != 3 && len != 4 && len != 6 && len != 8) {
-		throw Exception("Bad color token");
-	}
-	if (len == 3 || len == 4) {
-		token[0] = token[1] = hexChar(*(++from));
-		token[2] = token[3] = hexChar(*(++from));
-		token[4] = token[5] = hexChar(*(++from));
-		if (len == 3) {
-			token[6] = token[7] = 'F';
-		} else {
-			token[6] = token[7] = hexChar(*(++from));
-		}
-	} else {
-		token[0] = hexChar(*(++from));
-		token[1] = hexChar(*(++from));
-		token[2] = hexChar(*(++from));
-		token[3] = hexChar(*(++from));
-		token[4] = hexChar(*(++from));
-		token[5] = hexChar(*(++from));
-		if (len == 6) {
-			token[6] = token[7] = 'F';
-		} else {
-			token[6] = hexChar(*(++from));
-			token[7] = hexChar(*(++from));
-		}
-	}
-	++from;
-}
-
-void readNumber(const char *&from, const char *end, string &token) {
-	if (from >= end) throw Exception("Unexpected end of file!");
-
-	bool neg = false;
-	if (*from == '-') {
-		neg = true;
-		if (++from >= end) throw Exception("Unexpected end of file!");
-	}
-
-	if (*from == '0' && from < end && *(from + 1) >= '0' && *(from + 1) <= '9') throw Exception("Bad number token!");
-
-	token = neg ? "-" : "";
-	for (bool wasDot = false; from < end; ++from) {
-		if (*from == '.') {
-			if (wasDot) throw Exception("Unexpected dot in number!");
-			wasDot = true;
-		} else if (*from < '0' || *from > '9') {
-			break;
-		}
-		token += *from;
-	}
-}
-
-void readClassGenToken(const char *&from, const char *end, ClassGenTokenType &tokenType, string &token) {
-	const char *start;
-	do {
-		start = from;
-		if (!skipWhitespaces(from, end)) throw Exception("Unexpected end of file!");
-		if (!skipComment(from, end)) throw Exception("Unexpected end of comment!");
-	} while (start != from);
-
-	if ((*from >= 'a' && *from <= 'z') || ((*from >= 'A') && (*from <= 'Z'))) {
-		tokenType = csName;
-		return readName(from, end, token);
-	} else if (*from == ':') {
-		tokenType = csDelimeter;
-	} else if (*from == ';') {
-		tokenType = csFieldFinish;
-	} else if (*from == '{') {
-		tokenType = csClassStart;
-	} else if (*from == '}') {
-		tokenType = csClassFinish;
-	} else {
-		throw Exception("Could not parse token!");
-	}
-	++from;
-	return;
-}
-
-typedef QMap<string, ScalarType> FieldTypesMap;
-struct ClassData {
-	string name;
-	FieldTypesMap fields;
-};
-
-typedef QMap<string, ClassData> Classes;
-Classes classes;
-
-typedef QMap<string, int> ByName;
-
-bool genClasses(const QString &classes_in, const QString &classes_out) {
-	QFile f(classes_in);
-	if (!f.open(QIODevice::ReadOnly)) {
-		cout << "Could not open style classes input file '" << classes_in.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-
-	QByteArray blob = f.readAll();
-	const char *text = blob.constData(), *end = blob.constData() + blob.size();
-	ByName byName;
-	QVector<ClassData> byIndex;
-	string token;
-	ClassGenTokenType type;
-	try {
-		while (true) {
-			try {
-				readClassGenToken(text, end, type, token);
-			} catch (exception &e) {
-				if (e.what() != string("Unexpected end of file!")) {
-					throw;
-				}
-				break;
-			}
-			if (type != csName) {
-				throw Exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str()));
-			}
-
-			byIndex.push_back(ClassData());
-			ClassData &cls(byIndex.back());
-			cls.name = token;
-			readClassGenToken(text, end, type, token);
-			if (type == csDelimeter) {
-				readClassGenToken(text, end, type, token);
-				if (type != csName) throw Exception(QString("Unexpected token after '%1:', type %2").arg(cls.name.c_str()).arg(type));
-
-				QMap<string, int>::const_iterator i = byName.constFind(token);
-				if (i == byName.cend()) throw Exception(QString("Parent class '%1' not found for class '%2'").arg(token.c_str()).arg(cls.name.c_str()));
-				cls.fields = byIndex[i.value()].fields;
-				readClassGenToken(text, end, type, token);
-			}
-			if (type != csClassStart) throw Exception(QString("Unexpected token after '%1:%2', type %3").arg(cls.name.c_str()).arg(token.c_str()).arg(type));
-
-			do {
-				string fname, ftype;
-				readClassGenToken(text, end, type, fname);
-				if (type == csClassFinish) {
-					byName.insert(cls.name, byIndex.size() - 1);
-					break;
-				}
-				if (type != csName) throw Exception(QString("Unexpected token %1 while reading class '%2'").arg(type).arg(cls.name.c_str()));
-				readClassGenToken(text, end, type, token);
-				if (type != csDelimeter) throw Exception(QString("Unexpected token %1 while reading field '%2' in class '%3'").arg(type).arg(fname.c_str()).arg(cls.name.c_str()));
-				readClassGenToken(text, end, type, ftype);
-				if (type != csName) throw Exception(QString("Unexpected token %1 while reading field '%2' in class '%3'").arg(type).arg(fname.c_str()).arg(cls.name.c_str()));
-				readClassGenToken(text, end, type, token);
-				if (type != csFieldFinish) throw Exception(QString("Unexpected token %1 while reading field '%2:%3' in class '%4'").arg(type).arg(fname.c_str()).arg(ftype.c_str()).arg(cls.name.c_str()));
-
-				ScalarType typeIndex = scTypesCount;
-				for (int t = 0; t < scTypesCount; ++t) {
-					if (ftype == scalarTypeNames[t]) {
-						typeIndex = ScalarType(t);
-						break;
-					}
-				}
-				if (typeIndex == scTypesCount) throw Exception(QString("Unknown field type %1 while reading field '%2' in class '%3'").arg(ftype.c_str()).arg(fname.c_str()).arg(cls.name.c_str()));
-				FieldTypesMap::const_iterator alr = cls.fields.find(fname);
-				if (alr != cls.fields.cend()) throw Exception(QString("Redeclaration of field '%1' in class '%2'").arg(fname.c_str()).arg(cls.name.c_str()));
-				cls.fields.insert(fname, typeIndex);
-			} while(true);
-		}
-
-		QByteArray outText;
-		{
-			QTextStream tout(&outText);
-			tout << "\
-/*\n\
-Created from \'/Resources/style_classes.txt\' by \'/MetaStyle\' project\n\
-\n\
-WARNING! All changes made in this file will be lost!\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";
-			tout << "#pragma once\n\n#include \"ui/style_core.h\"\n\nnamespace style {\n";
-			for (int i = 0, l = byIndex.size(); i < l; ++i) {
-				ClassData &cls(byIndex[i]);
-				classes.insert(cls.name, cls);
-				tout << "\n\tclass " << cls.name.c_str() << " {\n\tpublic:\n\t\t" << cls.name.c_str() << "(";
-				for (FieldTypesMap::const_iterator j = cls.fields.cbegin(), e = cls.fields.cend(); j != e;) {
-					tout << "const style::" << outputTypeNames[j.value()].c_str() << " &_" << j.key().c_str();
-					if (++j != e) {
-						tout << ", ";
-					}
-				}
-				tout << ", Qt::Initialization = Qt::Uninitialized)";
-				if (!cls.fields.isEmpty()) {
-					tout << " : ";
-				}
-				for (FieldTypesMap::const_iterator j = cls.fields.cbegin(), e = cls.fields.cend(); j != e;) {
-					tout << j.key().c_str() << "(_" << j.key().c_str() << ")";
-					if (++j != e) {
-						tout << ", ";
-					}
-				}
-				tout << " {\n\t\t}\n\n";
-				for (FieldTypesMap::const_iterator j = cls.fields.cbegin(), e = cls.fields.cend(); j != e;) {
-					tout << "\t\tstyle::" << outputTypeNames[j.value()].c_str() << " " << j.key().c_str() << ";\n";
-					++j;
-				}
-				tout << "\t};\n";
-			}
-			tout << "\n};\n";
-		}
-		QFile out(classes_out);
-		if (out.open(QIODevice::ReadOnly)) {
-			QByteArray wasOut = out.readAll();
-			if (wasOut.size() == outText.size()) {
-				if (!memcmp(wasOut.constData(), outText.constData(), outText.size())) {
-					return true;
-				}
-			}
-			out.close();
-		}
-		cout << "Style classes compiled, writing " << byIndex.size() << " classes.\n";
-		if (!out.open(QIODevice::WriteOnly)) throw Exception("Could not open style_classes.h for writing!");
-		if (out.write(outText) != outText.size()) throw Exception("Could not open style_classes.h for writing!");
-	} catch (exception &e) {
-		cout << e.what() << "\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-	return true;
-}
-
-enum StyleGenTokenType {
-	stName, // [a-zA-Z_][a-zA-Z0-9_]*
-	stDelimeter, // ':'
-	stFieldFinish, // ';'
-	stObjectStart, // '{'
-	stObjectFinish, // '}'
-	stConsStart, // '('
-	stConsFinish, // ')'
-	stComma, // ','
-	stVariant, // '/'
-	stString, // "text" or 'text'
-	stColor, // #rgb or #rrggbb
-	stNumber, // -?([1-9][0-9]+(\.[0-9]+)?|\.[0-9]+)
-};
-
-static const int variants[] = { 0, 2, 3, 4 }, variantsCount = sizeof(variants) / sizeof(variants[0]);
-static const char *variantNames[] = { "dbisOne", "dbisOneAndQuarter", "dbisOneAndHalf", "dbisTwo" };
-
-static const char *variantPostfixes[] = { "", "_125x", "_150x", "_200x" };
-QImage *variantSprites = 0;
-int *spriteWidths = 0;
-QImage *variantGrids = 0;
-
-void readStyleGenToken(const char *&from, const char *end, StyleGenTokenType &tokenType, string &token) {
-	const char *start;
-	do {
-		start = from;
-		if (!skipWhitespaces(from, end)) throw Exception("Unexpected end of file!");
-		if (!skipComment(from, end)) throw Exception("Unexpected end of comment!");
-	} while (start != from);
-
-	if ((*from >= 'a' && *from <= 'z') || ((*from >= 'A') && (*from <= 'Z'))) {
-		tokenType = stName;
-		return readName(from, end, token);
-	} else if (*from == '"' || *from == '\'') {
-		tokenType = stString;
-		return readString(from, end, token);
-	} else if (*from == '#') {
-		tokenType = stColor;
-		return readColor(from, end, token);
-	} else if (*from == '.' || (*from >= '0' && *from <= '9') || *from == '-') {
-		tokenType = stNumber;
-		return readNumber(from, end, token);
-	} else if (*from == ':') {
-		tokenType = stDelimeter;
-	} else if (*from == ';') {
-		tokenType = stFieldFinish;
-	} else if (*from == '{') {
-		tokenType = stObjectStart;
-	} else if (*from == '}') {
-		tokenType = stObjectFinish;
-	} else if (*from == '(') {
-		tokenType = stConsStart;
-	} else if (*from == ')') {
-		tokenType = stConsFinish;
-	} else if (*from == ',') {
-		tokenType = stComma;
-	} else if (*from == '/') {
-		tokenType = stVariant;
-	} else {
-		throw Exception("Could not parse token!");
-	}
-	++from;
-	return;
-}
-
-bool readPxAfterNumber(const char *&from, const char *end) {
-	if (from + 2 <= end && *from == 'p' && *(from + 1) == 'x') {
-		from += 2;
-		return true;
-	}
-	return false;
-}
-
-typedef QMap<int, string> ScalarValue;
-typedef QPair<ScalarType, ScalarValue> ScalarData;
-typedef QPair<string, ScalarData> Scalar;
-typedef QMap<string, ScalarData> Fields;
-typedef QPair<string, Fields> ObjectData;
-typedef QPair<string, ObjectData> Object;
-typedef QVector<Object> Objects;
-typedef QVector<Scalar> Scalars;
-
-string findScalarVariant(const ScalarValue &value, int variant) {
-	ScalarValue::const_iterator i = value.constFind(variant);
-	if (i != value.cend()) return i.value();
-
-	return value[0];
-	//string result;
-	//for (ScalarValue::const_iterator i = value.cbegin(), e = value.cend(); i != e; ++i) {
-	//	if (i.key() > variant) {
-	//		break;
-	//	}
-	//	result = i.value();
-	//}
-	//return result;
-}
-
-Objects objects;
-Scalars scalars;
-
-ByName objectsMap;
-ByName scalarsMap;
-
-ScalarValue fillPrepareResult(int variant, const string &result) {
-	ScalarValue r;
-	r[variant] = result;
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			r[variants[i]] = result;
-		}
-	}
-	return r;
-}
-
-int adjustPx(int variant, int number, bool ispx) {
-	if (!ispx || !variant) return number;
-
-	switch (variant) {
-	case 2: return qRound(number * 1.25 + (number > 0 ? -0.01 : 0.01));
-	case 3: return qRound(number * 1.5 + (number > 0 ? -0.01 : 0.01));
-	case 4: return number * 2;
-	}
-	return number;
-}
-
-string adjustPx(int variant, const string &number, bool ispx) {
-	if (!variant || !ispx) return number;
-	return QString::number(adjustPx(variant, QString(number.c_str()).toInt(), ispx)).toUtf8().constData();
-}
-
-ScalarValue prepareString(int variant, const string &token) {
-	string result;
-	result.reserve(token.length() * 2);
-	result += "(qsl(\"";
-	for (quint64 i = 0, l = token.length(); i < l; ++i) {
-		if (token[i] == '\n') {
-			result += "\\n";
-		} else if (token[i] == '\r') {
-			result += "\\r";
-		} else if (token[i] == '\t') {
-			result += "\\t";
-		} else {
-			if (token[i] == '\\' || token[i] == '"') {
-				result += '\\';
-			}
-			result += token[i];
-		}
-	}
-	result += "\"))";
-	return fillPrepareResult(variant, result);
-
-}
-
-int hexDec(char a, char b) {
-	int da = (a >= '0' && a <= '9') ? (a - '0') : (10 + a - 'A');
-	int db = (b >= '0' && b <= '9') ? (b - '0') : (10 + b - 'A');
-	return da * 16 + db;
-}
-
-typedef QMap<string, QPair<ScalarType, string> > Named;
-QMap<int, Named> named;
-
-struct Color {
-	string color;
-};
-
-typedef QMap<string, Color> Colors;
-QMap<int, Colors> colors;
-
-ScalarValue prepareColor(int variant, const string &name, const string &token) {
-	QString result;
-	result.reserve(20);
-
-	int r = hexDec(token[0], token[1]), g = hexDec(token[2], token[3]), b = hexDec(token[4], token[5]), a = hexDec(token[6], token[7]);
-
-	Color c;
-	c.color = QString("%1, %2, %3, %4").arg(r).arg(g).arg(b).arg(a).toUtf8().constData();
-	colors[variant][name] = c;
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			colors[variants[i]][name] = c;
-		}
-	}
-	return fillPrepareResult(variant, "(Qt::Uninitialized)");
-}
-
-ScalarValue prepareNumber(int variant, const string &token, const char *&text, const char *end) {
-	bool ispx = readPxAfterNumber(text, end);
-	ScalarValue r;
-	r[variant] = '(' + token + ')';
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			r[variants[i]] = '(' + adjustPx(variants[i], token, ispx) + ')';
-		}
-	}
-	return r;
-}
-
-ScalarValue prepareColorRGB(int variant, const string &name, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type));
-	string r = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type));
-	string g = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type));
-	string b = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type));
-
-	Color c;
-	c.color = QString("%1, %2, %3, 255").arg(r.c_str()).arg(g.c_str()).arg(b.c_str()).toUtf8().constData();
-	colors[variant][name] = c;
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			colors[variants[i]][name] = c;
-		}
-	}
-	return fillPrepareResult(variant, "(Qt::Uninitialized)");
-}
-
-ScalarValue prepareColorRGBA(int variant, const string &name, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-	string r = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-	string g = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-	string b = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-	string a = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type));
-
-	Color c;
-	c.color = QString("%1, %2, %3, %4").arg(r.c_str()).arg(g.c_str()).arg(b.c_str()).arg(a.c_str()).toUtf8().constData();
-	colors[variant][name] = c;
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			colors[variants[i]][name] = c;
-		}
-	}
-	return fillPrepareResult(variant, "(Qt::Uninitialized)");
-}
-
-ScalarValue prepareRect(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-	string x = token;
-	bool xpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-	string y = token;
-	bool ypx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-	string w = token;
-	bool wpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-	string h = token;
-	bool hpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type));
-
-	ScalarValue r;
-	r[variant] = QString("(%1, %2, %3, %4)").arg(x.c_str()).arg(y.c_str()).arg(w.c_str()).arg(h.c_str()).toUtf8().constData();
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			r[variants[i]] = QString("(%1, %2, %3, %4)").arg(adjustPx(variants[i], x, xpx).c_str()).arg(adjustPx(variants[i], y, ypx).c_str()).arg(adjustPx(variants[i], w, wpx).c_str()).arg(adjustPx(variants[i], h, hpx).c_str()).toUtf8().constData();
-		}
-	}
-	return r;
-}
-
-typedef QVector<QPair<QRect, QString> > SpriteRects;
-SpriteRects sprites;
-
-ScalarValue prepareSprite(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	if (variant) throw Exception(QString("Unexpected variant in sprite rectangle!"));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-	string x = token;
-	if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!"));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-	string y = token;
-	if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!"));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-	string w = token;
-	if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!"));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-	string h = token;
-	if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!"));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type));
-
-	ScalarValue r;
-	r[variant] = QString("(%1, %2, %3, %4)").arg(x.c_str()).arg(y.c_str()).arg(w.c_str()).arg(h.c_str()).toUtf8().constData();
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			r[variants[i]] = QString("(%1, %2, %3, %4)").arg(adjustPx(variants[i], x, true).c_str()).arg(adjustPx(variants[i], y, true).c_str()).arg(adjustPx(variants[i], w, true).c_str()).arg(adjustPx(variants[i], h, true).c_str()).toUtf8().constData();
-		}
-	}
-
-	bool found = false;
-	QRect sprite(QString(x.c_str()).toInt(), QString(y.c_str()).toInt(), QString(w.c_str()).toInt(), QString(h.c_str()).toInt());
-	for (SpriteRects::const_iterator i = sprites.cbegin(), e = sprites.cend(); i != e; ++i) {
-		if (i->first == sprite) {
-			found = true;
-			break;
-		}
-		if (i->first.intersects(sprite)) {
-			cout << QString("Sprites intersection, %1 intersects with %2").arg(i->second).arg(r[variant].c_str()).toUtf8().constData() << "\n";
-//			throw Exception(QString("Sprites intersection, %1 intersects with %2").arg(i->second).arg(r[variant].c_str()));
-		}
-	}
-	if (!found) {
-		sprites.push_back(QPair<QRect, QString>(sprite, QString(r[variant].c_str())));
-
-		if (sprite.x() < 0 || sprite.y() < 0 || sprite.x() + sprite.width() > variantSprites[0].width() || sprite.y() + sprite.height() > variantSprites[0].height()) {
-			throw Exception(QString("Bad sprite size %1").arg(r[variant].c_str()));
-		}
-
-		int varLast = variants[variantsCount - 1];
-		QImage lastCopy = variantSprites[variantsCount - 1].copy(adjustPx(varLast, sprite.x(), true), adjustPx(varLast, sprite.y(), true), adjustPx(varLast, sprite.width(), true), adjustPx(varLast, sprite.height(), true));
-		for (int i = 1; i < variantsCount - 1; ++i) {
-			QPainter p(&variantSprites[i]);
-			p.drawImage(QPoint(adjustPx(variants[i], sprite.x(), true), adjustPx(variants[i], sprite.y(), true)), lastCopy.scaled(adjustPx(variants[i], sprite.width(), true), adjustPx(variants[i], sprite.height(), true), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
-		}
-
-		for (int i = 0; i < variantsCount; ++i) {
-			QPainter p(&variantGrids[i]);
-			p.setBrush(Qt::NoBrush);
-			p.setPen(QColor(0, 255, 255));
-			p.drawRect(QRect(adjustPx(variants[i], sprite.x(), true), adjustPx(variants[i], sprite.y(), true), adjustPx(variants[i], sprite.width(), true) - 1, adjustPx(variants[i], sprite.height(), true) - 1));
-		}
-	}
-
-	return r;
-}
-
-ScalarValue preparePoint(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type));
-	string x = token;
-	bool xpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type));
-	string y = token;
-	bool ypx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type));
-
-	ScalarValue r;
-	r[variant] = QString("(%1, %2)").arg(x.c_str()).arg(y.c_str()).toUtf8().constData();
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			r[variants[i]] = QString("(%1, %2)").arg(adjustPx(variants[i], x, xpx).c_str()).arg(adjustPx(variants[i], y, ypx).c_str()).toUtf8().constData();
-		}
-	}
-	return r;
-}
-
-ScalarValue prepareSize(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type));
-	string x = token;
-	bool xpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type));
-	string y = token;
-	bool ypx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type));
-
-	ScalarValue r;
-	r[variant] = QString("(%1, %2)").arg(x.c_str()).arg(y.c_str()).toUtf8().constData();
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			r[variants[i]] = QString("(%1, %2)").arg(adjustPx(variants[i], x, xpx).c_str()).arg(adjustPx(variants[i], y, ypx).c_str()).toUtf8().constData();
-		}
-	}
-	return r;
-}
-
-ScalarValue prepareTransition(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading transition() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stName) throw Exception(QString("Unexpected token %1 while reading transition() cons!").arg(type));
-	string func = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading transition() cons!").arg(type));
-
-	return fillPrepareResult(variant, QString("(anim::%1)").arg(func.c_str()).toUtf8().constData());
-}
-
-ScalarValue prepareCursor(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stName) throw Exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type));
-	string func = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type));
-
-	return fillPrepareResult(variant, QString("(style::cur_%1)").arg(func.c_str()).toUtf8().constData());
-}
-
-ScalarValue prepareAlign(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading align() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stName) throw Exception(QString("Unexpected token %1 while reading align() cons!").arg(type));
-	string func = token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading align() cons!").arg(type));
-
-	return fillPrepareResult(variant, QString("(style::al_%1)").arg(func.c_str()).toUtf8().constData());
-}
-
-ScalarValue prepareMargins(int variant, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-	string x = token;
-	bool xpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-	string y = token;
-	bool ypx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-	string w = token;
-	bool wpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stComma) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-	string h = token;
-	bool hpx = readPxAfterNumber(text, end);
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type));
-
-	ScalarValue r;
-	r[variant] = QString("(%1, %2, %3, %4)").arg(x.c_str()).arg(y.c_str()).arg(w.c_str()).arg(h.c_str()).toUtf8().constData();
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			r[variants[i]] = QString("(%1, %2, %3, %4)").arg(adjustPx(variants[i], x, xpx).c_str()).arg(adjustPx(variants[i], y, ypx).c_str()).arg(adjustPx(variants[i], w, wpx).c_str()).arg(adjustPx(variants[i], h, hpx).c_str()).toUtf8().constData();
-		}
-	}
-	return r;
-}
-
-enum FontFlagBits {
-	FontBoldBit,
-	FontItalicBit,
-	FontUnderlineBit,
-
-	FontFlagsBits
-};
-
-enum FontFlags {
-	FontBold = (1 << FontBoldBit),
-	FontItalic = (1 << FontItalicBit),
-	FontUnderline = (1 << FontUnderlineBit),
-
-	FontDifferentFlags = (1 << FontFlagsBits)
-};
-
-struct Font {
-	string family, size;
-	int flags;
-};
-
-typedef QMap<string, Font> Fonts;
-QMap<int, Fonts> fonts;
-
-ScalarValue prepareFont(int variant, const string &name, const char *&text, const char *end) {
-	StyleGenTokenType type;
-	string token;
-
-	ScalarValue sizeScalar, familyScalar;
-
-	string size, family;
-	int flags = 0;
-	bool sizepx = false;
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stConsStart) throw Exception(QString("Unexpected token %1 (%2) while reading font() cons!").arg(type).arg(token.c_str()));
-
-	do {
-		readStyleGenToken(text, end, type, token);
-		if (type == stNumber) {
-			if (size.empty() && sizeScalar.isEmpty()) {
-				size = token;
-				sizepx = readPxAfterNumber(text, end);
-			} else {
-				throw Exception(QString("Unexpected second number %1 while reading font() cons!").arg(token.c_str()));
-			}
-		} else if (type == stName) {
-			int bit = 0;
-			if (token == "bold") {
-				bit = FontBold;
-			} else if (token == "italic") {
-				bit = FontItalic;
-			} else if (token == "underline") {
-				bit = FontUnderline;
-			} else {
-				ByName::const_iterator j = scalarsMap.constFind(token);
-				if (j != scalarsMap.cend()) {
-					if (scalars[j.value()].second.first == scNumber) {
-						if (size.empty() && sizeScalar.isEmpty()) {
-							sizeScalar = scalars[j.value()].second.second;
-//							size = findScalarVariant(scalars[j.value()].second.second, variant);
-						} else {
-							throw Exception(QString("Unexpected second number %1 while reading font() cons!").arg(token.c_str()));
-						}
-					} else if (scalars[j.value()].second.first == scString) {
-						if (scalars[j.value()].second.second.empty()) {
-							throw Exception(QString("Unexpected empty string %1 while reading font() cons!").arg(token.c_str()));
-						} else if (!family.empty() || !familyScalar.empty()) {
-							throw Exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str()));
-						}
-						familyScalar = scalars[j.value()].second.second;
-//						family = findScalarVariant(scalars[j.value()].second.second, variant);
-					} else {
-						throw Exception(QString("Unexpected name token %1 type %2 while reading font() cons!").arg(token.c_str()).arg(scalars[j.value()].second.first));
-					}
-				} else {
-					throw Exception(QString("Unexpected name token %1 while reading font() cons!").arg(token.c_str()));
-				}
-			}
-			if (flags & bit) {
-				throw Exception(QString("Unexpected second time token %1 while reading font() cons!").arg(token.c_str()));
-			}
-			flags |= bit;
-		} else if (type == stString) {
-			if (token.empty()) {
-				throw Exception(QString("Unexpected empty string while reading font() cons!"));
-			} else if (!family.empty() || !familyScalar.empty()) {
-				throw Exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str()));
-			}
-			family = token;
-		} else if (type == stConsFinish) {
-			break;
-		} else {
-			throw Exception(QString("Unexpected token %1 while reading font() cons!").arg(type));
-		}
-	} while (true);
-
-	if (family.empty() && familyScalar.isEmpty()) {
-		ByName::const_iterator j = scalarsMap.constFind("defaultFontFamily");
-		if (j != scalarsMap.cend()) {
-			if (scalars[j.value()].second.first == scString) {
-				if (scalars[j.value()].second.second.empty()) {
-					throw Exception(QString("Unexpected empty string %1 while reading font() cons!").arg(token.c_str()));
-				} else if (!family.empty() || !familyScalar.isEmpty()) {
-					throw Exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str()));
-				}
-//				family = findScalarVariant(scalars[j.value()].second.second, variant);
-				familyScalar = scalars[j.value()].second.second;
-			} else {
-				throw Exception(QString("Font family not found while reading font() cons!"));
-			}
-		} else {
-			throw Exception(QString("Font family not found while reading font() cons!"));
-		}
-	}
-	if (size.empty() && sizeScalar.isEmpty()) throw Exception(QString("Font size not found while reading font() cons!"));
-
-	Font font;
-	font.family = familyScalar.empty() ? family : findScalarVariant(familyScalar, variant);
-	font.size = sizeScalar.empty() ? size : findScalarVariant(sizeScalar, variant);
-	font.flags = flags;
-	fonts[variant][name] = font;
-	if (!variant) {
-		for (int i = 1; i < variantsCount; ++i) {
-			Font varFont = font;
-			if (!familyScalar.empty()) varFont.family = findScalarVariant(familyScalar, variants[i]);
-			varFont.size = sizeScalar.empty() ? adjustPx(variants[i], size, sizepx) : findScalarVariant(sizeScalar, variants[i]);
-			fonts[variants[i]][name] = varFont;
-		}
-	}
-
-	return fillPrepareResult(variant, "(Qt::Uninitialized)");
-}
-
-ScalarData readScalarElement(string name, const char *&text, const char *end, string objName, const Fields *objFields, int variant) {
-	string fullName = objFields ? (objName + '.' + name) : name;
-	ScalarData result;
-	StyleGenTokenType type;
-	string token;
-	readStyleGenToken(text, end, type, token);
-	if (type == stString) {
-		result.first = scString;
-		result.second = prepareString(variant, token);
-	} else if (type == stNumber) {
-		result.first = scNumber;
-		result.second = prepareNumber(variant, token, text, end);
-	} else if (type == stColor) {
-		result.first = scColor;
-		result.second = prepareColor(variant, fullName, token);
-	} else if (type == stName) {
-		if (token == "rgb") {
-			result.first = scColor;
-			result.second = prepareColorRGB(variant, fullName, text, end);
-		} else if (token == "rgba") {
-			result.first = scColor;
-			result.second = prepareColorRGBA(variant, fullName, text, end);
-		} else if (token == "rect") {
-			result.first = scRect;
-			result.second = prepareRect(variant, text, end);
-		} else if (token == "sprite") {
-			result.first = scSprite;
-			result.second = prepareSprite(variant, text, end);
-		} else if (token == "point") {
-			result.first = scPoint;
-			result.second = preparePoint(variant, text, end);
-		} else if (token == "size") {
-			result.first = scSize;
-			result.second = preparePoint(variant, text, end);
-		} else if (token == "transition") {
-			result.first = scTransition;
-			result.second = prepareTransition(variant, text, end);
-		} else if (token == "cursor") {
-			result.first = scCursor;
-			result.second = prepareCursor(variant, text, end);
-		} else if (token == "align") {
-			result.first = scAlign;
-			result.second = prepareAlign(variant, text, end);
-		} else if (token == "margins") {
-			result.first = scMargins;
-			result.second = prepareMargins(variant, text, end);
-		} else if (token == "font") {
-			result.first = scFont;
-			result.second = prepareFont(variant, fullName, text, end);
-		} else {
-			bool found = false;
-			if (objFields) {
-				//Fields::const_iterator j = objFields->constFind(token);
-				//if (j != objFields->cend()) {
-				//	found = true;
-				//	result.second = j.value();
-				//}
-			}
-			if (!found) {
-				ByName::const_iterator j = scalarsMap.constFind(token);
-				if (j != scalarsMap.cend()) {
-					found = true;
-					result.first = scalars[j.value()].second.first;
-					result.second = scalars[j.value()].second.second;
-					if (result.first == scFont) {
-						named[variant][fullName] = QPair<ScalarType, string>(result.first, token);
-						if (!variant) {
-							for (int i = 1; i < variantsCount; ++i) {
-								named[variants[i]][fullName] = QPair<ScalarType, string>(result.first, token);
-							}
-						}
-					} else if (result.first == scColor) {
-						named[variant][fullName] = QPair<ScalarType, string>(result.first, token);
-						if (!variant) {
-							for (int i = 1; i < variantsCount; ++i) {
-								named[variants[i]][fullName] = QPair<ScalarType, string>(result.first, token);
-							}
-						}
-					}
-				}
-			}
-			if (!found) {
-				result.first = scTypesCount;
-				result.second = fillPrepareResult(variant, token);
-			}
-		}
-	} else {
-		throw Exception(QString("Unexpected token after '%1:', type %2").arg(name.c_str()).arg(type));
-	}
-	return result;
-}
-
-
-Scalar readScalarData(StyleGenTokenType &type, string &token, const char *&text, const char *end, string objName = string(), const Fields *objFields = 0) {
-	if (type != stName) {
-		throw Exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str()));
-	}
-
-	string name = token;
-	if (!objFields) {
-		ByName::const_iterator i = objectsMap.constFind(name);
-		if (i != objectsMap.cend()) throw Exception(QString("Redefinition of style object %1").arg(name.c_str()));
-
-		ByName::const_iterator j = scalarsMap.constFind(name);
-		if (j != scalarsMap.cend()) throw Exception(QString("Redefinition of style scalar %1").arg(name.c_str()));
-	}
-
-	readStyleGenToken(text, end, type, token);
-	if (type != stDelimeter) {
-		throw Exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str()));
-	}
-
-	string fullName = objFields ? (objName + '.' + name) : name;
-	Scalar result;
-	result.first = name;
-	result.second = readScalarElement(name, text, end, objName, objFields, 0);
-
-	readStyleGenToken(text, end, type, token);
-	while (type == stVariant) {
-		readStyleGenToken(text, end, type, token);
-		if (type != stNumber) {
-			throw Exception(QString("Unexpected token '%1' reading variants of '%2' scalar").arg(token.c_str()).arg(name.c_str()));
-		}
-		int variant = QString(token.c_str()).toInt();
-		if (variant != 2 && variant != 3 && variant != 4) {
-			throw Exception(QString("Unexpected variant index '%1' in '%2' scalar").arg(token.c_str()).arg(name.c_str()));
-		}
-		readStyleGenToken(text, end, type, token);
-		if (type != stDelimeter) {
-			throw Exception(QString("Unexpected token '%1' reading variants of '%2' scalar, expected delimeter").arg(token.c_str()).arg(name.c_str()));
-		}
-		ScalarData el = readScalarElement(name, text, end, objName, objFields, variant);
-		if (el.first != result.second.first) {
-			throw Exception(QString("Type changed in variant for '%1'").arg(name.c_str()));
-		}
-		result.second.second.insert(variant, el.second[variant]);
-
-		readStyleGenToken(text, end, type, token);
-	}
-	return result;
-}
-
-string prepareObject(const string &cls, Fields fields, const string &obj, int variant) {
-	string result = "(";
-	Classes::const_iterator i = classes.constFind(cls);
-	if (i == classes.cend()) throw Exception("Unknown error :(");
-
-	for (FieldTypesMap::const_iterator j = i.value().fields.cbegin(), e = i.value().fields.cend(); j != e;) {
-		result += "style::" + outputTypeNames[j.value()];
-
-		Fields::iterator f = fields.find(j.key());
-		if (f == fields.end()) {
-			result += "()";
-		} else if (f.value().first != j.value()) {
-			throw Exception(QString("Bad type of field %1 while parsing %2").arg(j.key().c_str()).arg(obj.c_str()));
-		} else {
-            if (variant == -1) { // retina
-                result += findScalarVariant(f.value().second, (j.value() == scSprite) ? 4 : 0);
-            } else {
-                result += findScalarVariant(f.value().second, variant);
-            }
-		}
-		fields.erase(f);
-		if (++j != e) {
-			result += ", ";
-		}
-	}
-
-	if (fields.size()) {
-		throw Exception(QString("Unknown fields found in %1, for example %2").arg(obj.c_str()).arg(fields.begin().key().c_str()));
-	}
-
-	return result + ", Qt::Uninitialized)";
-}
-
-bool genStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out, const QString &path_to_sprites) {
-	if (!genClasses(classes_in, classes_out)) return false;
-
-	QString styles_cpp = QString(styles_out).replace(".h", ".cpp");
-	if (styles_cpp == styles_out) {
-		cout << "Bad output file name '" << styles_out.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-	QString numbers_cpp = QString(styles_cpp).replace("style_auto.cpp", "numbers.cpp");
-	if (numbers_cpp == styles_cpp) {
-		cout << "Bad output file name '" << numbers_cpp.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-
-	QFile f(styles_in);
-	if (!f.open(QIODevice::ReadOnly)) {
-		cout << "Could not open styles input file '" << styles_in.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-
-	QString numbers_in = QString(styles_in).replace("style.txt", "numbers.txt");
-	if (numbers_in == styles_in) {
-		cout << "Bad input file name '" << numbers_in.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-
-	QFile fnum(numbers_in);
-	if (!fnum.open(QIODevice::ReadOnly)) {
-		cout << "Could not open numbers input file '" << numbers_in.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-
-	QImage sprites[variantsCount];
-	int widths[variantsCount] = { 0 };
-	variantSprites = sprites;
-	spriteWidths = widths;
-
-	QString sprite0(path_to_sprites + "sprite" + QString(variantPostfixes[0]) + ".png"), spriteLast(path_to_sprites + "sprite" + QString(variantPostfixes[variantsCount - 1]) + ".png");
-	variantSprites[0] = QImage(sprite0);
-	spriteWidths[0] = variantSprites[0].width();
-	for (int i = 1; i < variantsCount - 1; ++i) {
-		variantSprites[i] = QImage(adjustPx(variants[i], variantSprites[0].width(), true), adjustPx(variants[i], variantSprites[0].height(), true), QImage::Format_ARGB32_Premultiplied);
-		spriteWidths[i] = variantSprites[i].width();
-		QPainter p(&variantSprites[i]);
-		p.setCompositionMode(QPainter::CompositionMode_Source);
-		p.fillRect(0, 0, variantSprites[i].width(), variantSprites[i].height(), Qt::transparent);
-	}
-	variantSprites[variantsCount - 1] = QImage(spriteLast);
-	spriteWidths[variantsCount - 1] = variantSprites[variantsCount - 1].width();
-
-	if (!variantSprites[0].width() || !variantSprites[0].height()) {
-		cout << "Could not open input sprite file '" << sprite0.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-	if (!variantSprites[variantsCount - 1].width() || !variantSprites[variantsCount - 1].height()) {
-		cout << "Could not open input sprite file '" << spriteLast.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-	if (adjustPx(variants[variantsCount - 1], variantSprites[0].width(), true) != variantSprites[variantsCount - 1].width()) {
-		cout << "Bad sprite file width '" << spriteLast.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-	if (adjustPx(variants[variantsCount - 1], variantSprites[0].height(), true) != variantSprites[variantsCount - 1].height()) {
-		cout << "Bad sprite file height '" << spriteLast.toUtf8().constData() << "'!\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-
-	QImage grids[variantsCount];
-	variantGrids = grids;
-	for (int i = 0; i < variantsCount; ++i) {
-		variantGrids[i] = QImage(variantSprites[i].width(), variantSprites[i].height(), QImage::Format_ARGB32_Premultiplied);
-		QPainter p(&variantGrids[i]);
-		p.setCompositionMode(QPainter::CompositionMode_Source);
-		p.fillRect(0, 0, variantSprites[i].width(), variantSprites[i].height(), Qt::transparent);
-	}
-
-	QByteArray blob = f.readAll();
-	const char *text = blob.constData(), *end = blob.constData() + blob.size();
-	QMap<string, int> byName;
-	QVector<ClassData> byIndex;
-	string token;
-	StyleGenTokenType type;
-	try {
-		while (true) {
-			try {
-				readStyleGenToken(text, end, type, token);
-			} catch (exception &e) {
-				if (e.what() != string("Unexpected end of file!")) {
-					throw;
-				}
-				break;
-			}
-			string name = token;
-			Scalar scalar = readScalarData(type, token, text, end);
-			if (scalar.second.first != scTypesCount) {
-				scalarsMap.insert(scalar.first, scalars.size());
-				scalars.push_back(scalar);
-				if (type != stFieldFinish) throw Exception(QString("Unexpected token after scalar %1, type %2").arg(name.c_str()).arg(type));
-				continue;
-			}
-
-			string objType = scalar.second.second[0];
-
-			Object obj;
-			obj.first = name;
-			obj.second.first = objType;
-
-			Classes::const_iterator c = classes.constFind(objType);
-			if (c == classes.cend()) throw Exception(QString("Unknown type %1 used for object %2").arg(objType.c_str()).arg(name.c_str()));
-			if (type == stConsStart) {
-				do {
-					readStyleGenToken(text, end, type, token);
-					string parent = token;
-					if (type != stName) throw Exception(QString("Unexpected token %1 while parsing object %2").arg(type).arg(name.c_str()));
-
-					ByName::const_iterator p = objectsMap.constFind(parent);
-					if (p == objectsMap.cend()) throw Exception(QString("Parent object %1 not found, while parsing object %2").arg(parent.c_str()).arg(name.c_str()));
-
-					const ObjectData &alr(objects[p.value()].second);
-					for (Fields::const_iterator f = alr.second.cbegin(), e = alr.second.cend(); f != e; ++f) {
-//						Fields::const_iterator a = obj.second.second.constFind(f.key());
-//						if (a == obj.second.second.cend()) {
-							obj.second.second.insert(f.key(), f.value());
-							if (f.value().first == scFont) {
-								for (int v = 0; v < variantsCount; ++v) {
-									named[variants[v]][name + '.' + f.key()] = QPair<ScalarType, string>(f.value().first, parent + '.' + f.key());
-								}
-							} else if (f.value().first == scColor) {
-								for (int v = 0; v < variantsCount; ++v) {
-									named[variants[v]][name + '.' + f.key()] = QPair<ScalarType, string>(f.value().first, parent + '.' + f.key());
-								}
-							}
-//						}
-					}
-
-					readStyleGenToken(text, end, type, token);
-					if (type == stConsFinish) break;
-					if (type != stComma) throw Exception(QString("Unexpected token %1, expected , or ) while parsing object %2").arg(type).arg(name.c_str()));
-				} while (true);
-				readStyleGenToken(text, end, type, token);
-			}
-			if (type != stObjectStart) throw Exception(QString("Unexpected token %1, expected { while parsing object %2").arg(type).arg(name.c_str()));
-
-			while (true) {
-				readStyleGenToken(text, end, type, token);
-				if (type == stObjectFinish) {
-					objectsMap.insert(name, objects.size());
-					objects.push_back(obj);
-					break;
-				}
-
-				for (int v = 0; v < variantsCount; ++v) {
-					named[variants[v]].remove(name + '.' + token);
-				}
-
-				Scalar scalar = readScalarData(type, token, text, end, name, &obj.second.second);
-				if (scalar.second.first == scTypesCount) throw Exception(QString("Unexpected type name %1 while parsing object %2").arg(scalar.second.second[0].c_str()).arg(name.c_str()));
-
-				obj.second.second.insert(scalar.first, scalar.second);
-
-				if (type != stFieldFinish) throw Exception(QString("Unexpected token after scalar %1 in object %2, type %3").arg(scalar.first.c_str()).arg(name.c_str()).arg(type));
-			}
-		}
-
-		QByteArray outText, cppText;
-		{
-			int variant = 0;
-
-			QTextStream tout(&outText), tcpp(&cppText);
-			tout << "\
-/*\n\
-Created from \'/Resources/style.txt\' by \'/MetaStyle\' project\n\
-\n\
-WARNING! All changes made in this file will be lost!\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";
-			tout << "#pragma once\n\n#include \"ui/style_core.h\"\n\nnamespace st {\n";
-			tcpp << "\
-/*\n\
-Created from \'/Resources/style.txt\' by \'/MetaStyle\' project\n\
-\n\
-WARNING! All changes made in this file will be lost!\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";
-			tcpp << "#include \"stdafx.h\"\n#include \"style_auto.h\"\n\nnamespace {\n";
-			for (int i = 0, l = scalars.size(); i < l; ++i) {
-				Scalar &sc(scalars[i]);
-				tout << "\textern const style::" << outputTypeNames[sc.second.first].c_str() << " &" << sc.first.c_str() << ";\n";
-				tcpp << "\tstyle::" << outputTypeNames[sc.second.first].c_str() << " _" << sc.first.c_str() << findScalarVariant(sc.second.second, variant).c_str() << ";\n";
-			}
-			tout << "\n";
-			tcpp << "\n";
-			for (int i = 0, l = objects.size(); i < l; ++i) {
-				Object &obj(objects[i]);
-				tout << "\textern const style::" << obj.second.first.c_str() << " &" << obj.first.c_str() << ";\n";
-				tcpp << "\tstyle::" << obj.second.first.c_str() << " _" << obj.first.c_str() << prepareObject(obj.second.first, obj.second.second, obj.first, variant).c_str() << ";\n";
-			}
-			tout << "};\n";
-            tcpp << "};\n";
-
-			tcpp << "\nnamespace st {\n";
-			for (int i = 0, l = scalars.size(); i < l; ++i) {
-				Scalar &sc(scalars[i]);
-				tcpp << "\tconst style::" << outputTypeNames[sc.second.first].c_str() << " &" << sc.first.c_str() << "(_" << sc.first.c_str() << ");\n";
-			}
-			tcpp << "\n";
-			for (int i = 0, l = objects.size(); i < l; ++i) {
-				Object &obj(objects[i]);
-				tcpp << "\tconst style::" << obj.second.first.c_str() << " &" << obj.first.c_str() << "(_" << obj.first.c_str() << ");\n";
-			}
-			tcpp << "};\n";
-
-			tcpp << "\nnamespace style {\n\n";
-			tcpp << "\tFontFamilies _fontFamilies;\n";
-			tcpp << "\tFontDatas _fontsMap;\n";
-			tcpp << "\tColorDatas _colorsMap;\n";
-			tcpp << "\tint _spriteWidth = " << spriteWidths[0] << ";\n\n";
-			tcpp << "\tvoid startManager() {\n";
-
-            tcpp << "\n\t\tif (cRetina()) {\n";
-			tcpp << "\t\t\tcSetRealScale(dbisOne);\n";
-			tcpp << "\t\t\t_spriteWidth = " << spriteWidths[variantsCount - 1] << ";\n\n";
-            for (int i = 0, l = scalars.size(); i < l; ++i) {
-                Scalar &sc(scalars[i]);
-                if (sc.second.first == scSprite || sc.first == "spriteFile" || sc.first == "emojisFile" || sc.first == "emojiImgSize") {
-                    string v = findScalarVariant(sc.second.second, 4);
-                    if (v != findScalarVariant(sc.second.second, 0)) {
-                        tcpp << "\t\t\t_" << sc.first.c_str() << " = style::" << outputTypeNames[sc.second.first].c_str() << v.c_str() << ";\n";
-                    }
-                }
-            }
-            for (int i = 0, l = objects.size(); i < l; ++i) {
-                Object &obj(objects[i]);
-                string v = prepareObject(obj.second.first, obj.second.second, obj.first, -1); // retina
-                if (v != prepareObject(obj.second.first, obj.second.second, obj.first, 0)) {
-                    tcpp << "\t\t\t_" << obj.first.c_str() << " = style::" << obj.second.first.c_str() << v.c_str() << ";\n";
-                }
-            }
-            tcpp << "\t\t} else switch (cScale()) {\n\n";
-			for (int i = 1; i < variantsCount; ++i) {
-				variant = variants[i];
-				const char *varName = variantNames[i];
-
-				tcpp << "\t\tcase " << varName << ":\n";
-				tcpp << "\t\t\t_spriteWidth = " << spriteWidths[i] << ";\n\n";
-
-				typedef QMap<string, int> FontFamilies;
-				FontFamilies fontFamilies;
-
-				for (int i = 0, l = scalars.size(); i < l; ++i) {
-					Scalar &sc(scalars[i]);
-					string v = findScalarVariant(sc.second.second, variant);
-					if (v != findScalarVariant(sc.second.second, 0)) {
-						tcpp << "\t\t\t_" << sc.first.c_str() << " = style::" << outputTypeNames[sc.second.first].c_str() << v.c_str() << ";\n";
-					}
-				}
-
-				for (int i = 0, l = objects.size(); i < l; ++i) {
-					Object &obj(objects[i]);
-					string v = prepareObject(obj.second.first, obj.second.second, obj.first, variant);
-					if (v != prepareObject(obj.second.first, obj.second.second, obj.first, 0)) {
-						tcpp << "\t\t\t_" << obj.first.c_str() << " = style::" << obj.second.first.c_str() << v.c_str() << ";\n";
-					}
-				}
-				tcpp << "\t\tbreak;\n\n";
-			}
-			tcpp << "\t\t}\n\n";
-
-			Colors &clrs(colors[variant]);
-			for (Colors::const_iterator i = clrs.cbegin(), e = clrs.cend(); i != e; ++i) {
-				bool differ = false;
-				for (int j = 1; j < variantsCount; ++j) {
-					const Colors &otherClrs(colors[variants[j]]);
-					Colors::const_iterator k = otherClrs.constFind(i.key());
-					if (k == otherClrs.cend() || k.value().color != i.value().color) {
-						differ = true;
-						break;
-					}
-				}
-				if (!differ) {
-					tcpp << "\t\t_" << i.key().c_str() << ".init(" << i.value().color.c_str() << ");\n";
-				}
-			}
-
-			for (int i = 0; i < variantsCount; ++i) {
-				variant = variants[i];
-				Named &nmd(named[variant]);
-				while (true) {
-					bool found = false;
-					for (Named::iterator i = nmd.begin(), e = nmd.end(); i != e; ++i) {
-						if (i.key() == i.value().second) {
-							throw Exception(QString("Object '%1' is equal to itself!").arg(i.key().c_str()));
-						}
-						Named::const_iterator j = nmd.constFind(i.value().second);
-						if (j != nmd.cend()) {
-							*i = *j;
-							found = true;
-						}
-					}
-					if (!found) break;
-				}
-			}
-
-			tcpp << "\n\t\tswitch (cScale()) {\n\n";
-			for (int i = 0; i < variantsCount; ++i) {
-				variant = variants[i];
-				const char *varName = variantNames[i];
-
-				tcpp << "\t\tcase " << varName << ":\n";
-
-				typedef QMap<string, int> FontFamilies;
-				FontFamilies fontFamilies;
-				int familyIndex = 0;
-				ByName::const_iterator j = scalarsMap.constFind("defaultFontFamily");
-				if (j != scalarsMap.cend()) {
-					if (scalars[j.value()].second.first == scString) {
-						if (scalars[j.value()].second.second.empty()) {
-							throw Exception(QString("Unexpected empty string in defaultFontFamily!").arg(token.c_str()));
-						}
-						string v = findScalarVariant(scalars[j.value()].second.second, variant);
-						tcpp << "\t\t\t_fontFamilies.push_back" << v.c_str() << ";\n";
-						fontFamilies.insert(v, familyIndex++);
-					} else {
-						throw Exception(QString("defaultFontFamily has bad type!"));
-					}
-				} else {
-					throw Exception(QString("defaultFontFamily not found!"));
-				}
-
-				Fonts &fnts(fonts[variant]);
-				for (Fonts::const_iterator i = fnts.cbegin(), e = fnts.cend(); i != e; ++i) {
-					FontFamilies::const_iterator j = fontFamilies.constFind(i.value().family);
-					if (j == fontFamilies.cend()) {
-						tcpp << "\n\t\t\t_fontFamilies.push_back" << i.value().family.c_str() << ";\n";
-						j = fontFamilies.insert(i.value().family, familyIndex++);
-					}
-					tcpp << "\t\t\t_" << i.key().c_str() << ".init(" << i.value().size.c_str() << ", " << i.value().flags << ", " << j.value() << ", 0);\n";
-				}
-
-				Colors &clrs(colors[variant]);
-				if (!clrs.empty()) tcpp << "\n";
-				for (Colors::const_iterator i = clrs.cbegin(), e = clrs.cend(); i != e; ++i) {
-					bool differ = false;
-					for (int j = 0; j < variantsCount; ++j) {
-						if (variant == variants[j]) continue;
-
-						const Colors &otherClrs(colors[variants[j]]);
-						Colors::const_iterator k = otherClrs.constFind(i.key());
-						if (k == otherClrs.cend() || k.value().color != i.value().color) {
-							differ = true;
-							break;
-						}
-					}
-					if (differ) {
-						tcpp << "\t\t\t_" << i.key().c_str() << ".init(" << i.value().color.c_str() << ");\n";
-					}
-				}
-
-				Named &nmd(named[variant]);
-				for (Named::const_iterator i = nmd.cbegin(), e = nmd.cend(); i != e; ++i) {
-					bool differ = false;
-					for (int j = 0; j < variantsCount; ++j) {
-						if (variant == variants[j]) continue;
-
-						const Named &otherNmd(named[variants[j]]);
-						Named::const_iterator k = otherNmd.constFind(i.key());
-						if (k == otherNmd.cend() || k.value().second != i.value().second) {
-							differ = true;
-							break;
-						}
-					}
-					if (differ) {
-						tcpp << "\t\t\t_" << i.key().c_str() << " = _" << i.value().second.c_str() << ";\n";
-					}
-				}
-				tcpp << "\t\tbreak;\n\n";
-			}
-			tcpp << "\t\t}\n\n";
-
-			variant = 0;
-			Named &nmd(named[variant]);
-			for (Named::const_iterator i = nmd.cbegin(), e = nmd.cend(); i != e; ++i) {
-				bool differ = false;
-				for (int j = 1; j < variantsCount; ++j) {
-					const Named &otherNmd(named[variants[j]]);
-					Named::const_iterator k = otherNmd.constFind(i.key());
-					if (k == otherNmd.cend() || k.value().second != i.value().second) {
-						differ = true;
-						break;
-					}
-				}
-				if (!differ) {
-					tcpp << "\t\t_" << i.key().c_str() << " = _" << i.value().second.c_str() << ";\n";
-				}
-			}
-
-			tcpp << "\t}\n";
-			tcpp << "\n};\n";
-		}
-
-		for (int i = 1; i < variantsCount - 1; ++i) {
-			QString spritei(path_to_sprites + "sprite" + QString(variantPostfixes[i]) + ".png"), spriteLast(path_to_sprites + "sprite" + QString(variantPostfixes[i]) + ".png");
-			QByteArray sprite;
-			{
-				QBuffer sbuf(&sprite);
-				if (!variantSprites[i].save(&sbuf, "PNG")) {
-					throw Exception(("Could not write intermediate sprite '" + spritei + "'!"));
-				}
-			}
-			bool needResave = !QFileInfo(spritei).exists();
-			if (!needResave) {
-				QFile sf(spritei);
-				if (!sf.open(QIODevice::ReadOnly)) {
-					needResave = true;
-				} else {
-					QByteArray already(sf.readAll());
-					if (already.size() != sprite.size() || memcmp(already.constData(), sprite.constData(), already.size())) {
-						needResave = true;
-					}
-				}
-			}
-			if (needResave) {
-				QFile sf(spritei);
-				if (!sf.open(QIODevice::WriteOnly)) {
-					throw Exception(("Could not write intermediate sprite '" + spritei + "'!"));
-				} else {
-					if (sf.write(sprite) != sprite.size()) {
-						throw Exception(("Could not write intermediate sprite '" + spritei + "'!"));
-					}
-				}
-			}
-		}
-		for (int i = 0; i < variantsCount; ++i) {
-			QString spritei(path_to_sprites + "grid" + QString(variantPostfixes[i]) + ".png"), spriteLast(path_to_sprites + "sprite" + QString(variantPostfixes[i]) + ".png");
-			QByteArray grid;
-			{
-				QBuffer gbuf(&grid);
-				if (!variantGrids[i].save(&gbuf, "PNG")) {
-					throw Exception(("Could not write intermediate grid '" + spritei + "'!"));
-				}
-			}
-			bool needResave = !QFileInfo(spritei).exists();
-			if (!needResave) {
-				QFile gf(spritei);
-				if (!gf.open(QIODevice::ReadOnly)) {
-					needResave = true;
-				} else {
-					QByteArray already(gf.readAll());
-					if (already.size() != grid.size() || memcmp(already.constData(), grid.constData(), already.size())) {
-						needResave = true;
-					}
-				}
-			}
-			if (needResave) {
-				QFile gf(spritei);
-				if (!gf.open(QIODevice::WriteOnly)) {
-					throw Exception(("Could not write intermediate grid '" + spritei + "'!"));
-				} else {
-					if (gf.write(grid) != grid.size()) {
-						throw Exception(("Could not write intermediate grid '" + spritei + "'!"));
-					}
-				}
-			}
-		}
-
-		QFile out(styles_out), cpp(styles_cpp);
-		bool write_out = true;
-		if (out.open(QIODevice::ReadOnly)) {
-			QByteArray wasOut = out.readAll();
-			if (wasOut.size() == outText.size()) {
-				if (!memcmp(wasOut.constData(), outText.constData(), outText.size())) {
-					write_out = false;
-				}
-			}
-			out.close();
-		}
-		if (write_out) {
-			cout << "Style compiled, writing " << scalars.size() << " scalars and " << objects.size() << " objects.\n";
-			if (!out.open(QIODevice::WriteOnly)) throw Exception("Could not open style_auto.h for writing!");
-			if (out.write(outText) != outText.size()) throw Exception("Could not open style_auto.h for writing!");
-		}
-		bool write_cpp = true;
-		if (cpp.open(QIODevice::ReadOnly)) {
-			QByteArray wasCpp = cpp.readAll();
-			if (wasCpp.size() == cppText.size()) {
-				if (!memcmp(wasCpp.constData(), cppText.constData(), cppText.size())) {
-					write_cpp = false;
-				}
-			}
-			cpp.close();
-		}
-		if (write_cpp) {
-			if (!write_out) cout << "Style updated, writing " << scalars.size() << " scalars and " << objects.size() << " objects.\n";
-			if (!cpp.open(QIODevice::WriteOnly)) throw Exception("Could not open style_auto.cpp for writing!");
-			if (cpp.write(cppText) != cppText.size()) throw Exception("Could not open style_auto.cpp for writing!");
-		}
-
-		QMap<QString, QVector<int> > numberRules;
-		QList<QByteArray> numlines = fnum.readAll().split('\n');
-		for (int i = 0, l = numlines.size(); i < l; ++i) {
-			QList<QByteArray> strs = numlines.at(i).split(';');
-			if (strs.isEmpty()) continue;
-
-			QString code = QString::fromLatin1(strs.at(0)).trimmed();
-			if (code.isEmpty() || QRegularExpression("[^0-9]").match(code).hasMatch()) {
-				throw Exception("Bad string in number.txt: " + numlines.at(i));
-			}
-
-			if (strs.size() < 5) {
-				numberRules.insert(code, QVector<int>());
-			} else {
-				QString lenstr = QString::fromLatin1(strs.at(4)).trimmed(), pattern = QString::fromLatin1(strs.at(3)).trimmed();
-				if (QRegularExpression("[^0-9]").match(lenstr).hasMatch() || !pattern.startsWith(code + ' ')) {
-					throw Exception("Bad string in number.txt: " + numlines.at(i));
-				}
-				QStringList lst = pattern.mid(code.size() + 1).split(' ');
-				int len = lenstr.toInt(), sum = code.size();
-				QVector<int> result;
-				for (int j = 0, c = lst.size(); j < c; ++j) {
-					if (lst.at(j).isEmpty()) continue;
-					if (QRegularExpression("[^X]").match(lst.at(j)).hasMatch()) {
-						throw Exception("Bad string in number.txt: " + numlines.at(i));
-					}
-					result.push_back(lst.at(j).size());
-					sum += lst.at(j).size();
-				}
-				if (sum != len) {
-					throw Exception("Bad length in number.txt: " + numlines.at(i));
-				}
-				numberRules.insert(code, result);
-			}
-		}
-
-		QByteArray numText;
-		{
-			QTextStream tnum(&numText);
-			tnum << "\
-/*\n\
-Created from \'/Resources/style.txt\' by \'/MetaStyle\' project\n\
-\n\
-WARNING! All changes made in this file will be lost!\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";
-			tnum << "#include \"stdafx.h\"\n#include \"numbers.h\"\n\n";
-			tnum << "QVector<int> phoneNumberParse(const QString &number) {\n";
-			tnum << "\tQVector<int> result;\n\n";
-			tnum << "\tint32 len = number.size();\n";
-			tnum << "\tif (len > 0) switch (number.at(0).unicode()) {\n";
-			QString already;
-			for (QMap<QString, QVector<int> >::const_iterator i = numberRules.cend(), e = numberRules.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) {
-						tnum << QString("\t").repeated(1 + already.size()) << "}\n";
-						tnum << QString("\t").repeated(already.size()) << "break;\n";
-					}
-					already = already.mid(0, already.size() - 1);
-					onlyLastChanged = false;
-				}
-				if (already == k) {
-					tnum << QString("\t").repeated(1 + already.size()) << "}\n";
-				} else {
-					bool onlyFirstCheck = true;
-					while (already.size() < k.size()) {
-						if (!onlyFirstCheck) tnum << QString("\t").repeated(1 + already.size()) << "if (len > " << already.size() << ") switch (number.at(" << already.size() << ").unicode()) {\n";
-						tnum << 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()) {
-					tnum << QString("\t").repeated(1 + already.size()) << "return QVector<int>(1, " << k.size() << ");\n";
-				} else {
-					tnum << QString("\t").repeated(1 + already.size()) << "result.reserve(" << (i.value().size() + 1) << ");\n";
-					tnum << QString("\t").repeated(1 + already.size()) << "result.push_back(" << k.size() << ");\n";
-					for (int j = 0, l = i.value().size(); j < l; ++j) {
-						tnum << QString("\t").repeated(1 + already.size()) << "result.push_back(" << i.value().at(j) << ");\n";
-					}
-					tnum << QString("\t").repeated(1 + already.size()) << "return result;\n";
-				}
-			}
-			bool onlyLastChanged = true;
-			while (!already.isEmpty()) {
-				if (!onlyLastChanged) {
-					tnum << QString("\t").repeated(1 + already.size()) << "}\n";
-//					tnum << QString("\t").repeated(1 + already.size()) << "\return result;\n";
-				}
-				already = already.mid(0, already.size() - 1);
-				onlyLastChanged = false;
-			}
-			tnum << "\t}\n\n";
-			tnum << "\treturn result;\n";
-			tnum << "}\n";
-		}
-		QFile num(numbers_cpp);
-		bool write_num = true;
-		if (num.open(QIODevice::ReadOnly)) {
-			QByteArray wasNum = num.readAll();
-			if (wasNum.size() == numText.size()) {
-				if (!memcmp(wasNum.constData(), numText.constData(), numText.size())) {
-					write_num = false;
-				}
-			}
-			num.close();
-		}
-		if (write_num) {
-			cout << "Numbers compiled, writing..\n";
-			if (!num.open(QIODevice::WriteOnly)) throw Exception("Could not open numbers.cpp for writing!");
-			if (num.write(numText) != numText.size()) throw Exception("Could not open numbers.cpp for writing!");
-		}
-	} catch (exception &e) {
-		cout << e.what() << "\n";
-		QCoreApplication::exit(1);
-		return false;
-	}
-	return true;
-}
diff --git a/Telegram/SourceFiles/_other/genstyles.h b/Telegram/SourceFiles/_other/genstyles.h
deleted file mode 100644
index 05fa8c333..000000000
--- a/Telegram/SourceFiles/_other/genstyles.h
+++ /dev/null
@@ -1,78 +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 <QtCore/QMap>
-#include <QtCore/QVector>
-#include <QtGui/QBitmap>
-#include <QtCore/QBuffer>
-#include <QtCore/QFileInfo>
-#include <QtCore/QFile>
-#include <iostream>
-#include <exception>
-#include <QtCore/QTextStream>
-#include <QtCore/QString>
-#include <QtCore/QCoreApplication>
-#include <QtGui/QPainter>
-
-using std::string;
-using std::cout;
-using std::cerr;
-using std::exception;
-
-class Exception : public exception {
-public:
-    
-    Exception(const QString &msg) : _msg(msg.toUtf8()) {
-	}
-    
-    virtual const char *what() const throw() {
-        return _msg.constData();
-    }
-    virtual ~Exception() throw() {
-    }
-    
-private:
-	QByteArray _msg;
-};
-
-bool genStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out, const QString &path_to_sprites);
-
-class GenStyles : public QObject {
-    Q_OBJECT
-
-public:
-    GenStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out, const QString &path_to_sprites) : QObject(0),
-	_classes_in(classes_in), _classes_out(classes_out), _styles_in(styles_in), _styles_out(styles_out), _path_to_sprites(path_to_sprites) {
-	}
-
-public slots:
-	void run()  {
-		if (genStyles(_classes_in, _classes_out, _styles_in, _styles_out, _path_to_sprites)) {
-			emit finished();
-		}
-	}
-
-signals:
-    void finished();
-
-private:
-
-	QString _classes_in, _classes_out, _styles_in, _styles_out, _path_to_sprites;
-};
diff --git a/Telegram/SourceFiles/_other/msmain.cpp b/Telegram/SourceFiles/_other/msmain.cpp
deleted file mode 100644
index c59c7dbc4..000000000
--- a/Telegram/SourceFiles/_other/msmain.cpp
+++ /dev/null
@@ -1,64 +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 "msmain.h"
-#include <QtCore/QDir>
-
-int main(int argc, char *argv[]) {
-	QString classes_in("style_classes.txt"), classes_out("style_classes.h"), styles_in("style.txt"), styles_out("style_auto.h"), path_to_sprites("./Resources/art/");
-	for (int i = 0; i < argc; ++i) {
-		if (string("-classes_in") == argv[i]) {
-			if (++i < argc) classes_in = argv[i];
-		} else if (string("-classes_out") == argv[i]) {
-			if (++i < argc) classes_out = argv[i];
-		} else if (string("-styles_in") == argv[i]) {
-			if (++i < argc) styles_in = argv[i];
-		} else if (string("-styles_out") == argv[i]) {
-			if (++i < argc) styles_out = argv[i];
-		} else if (string("-path_to_sprites") == argv[i]) {
-            if (++i < argc) path_to_sprites = argv[i];
-        }
-	}
-#ifdef Q_OS_MAC
-    if (QDir(QString()).absolutePath() == "/") {
-        QString first = argc ? QString::fromLocal8Bit(argv[0]) : QString();
-        if (!first.isEmpty()) {
-            QFileInfo info(first);
-            if (info.exists()) {
-                QDir result(info.absolutePath() + "/../../..");
-                QString basePath = result.absolutePath() + '/';
-                classes_in = basePath + classes_in;
-                classes_out = basePath + classes_out;
-                styles_in = basePath + styles_in;
-                styles_out = basePath + styles_out;
-                path_to_sprites = basePath + path_to_sprites;
-            }
-        }
-    }
-#endif
-	QObject *taskImpl = new GenStyles(classes_in, classes_out, styles_in, styles_out, path_to_sprites);
-
-	QCoreApplication a(argc, argv);
-
-	QObject::connect(taskImpl, SIGNAL(finished()), &a, SLOT(quit()));
-	QTimer::singleShot(0, taskImpl, SLOT(run()));
-
-	return a.exec();
-}
diff --git a/Telegram/SourceFiles/_other/msmain.h b/Telegram/SourceFiles/_other/msmain.h
deleted file mode 100644
index 4db672552..000000000
--- a/Telegram/SourceFiles/_other/msmain.h
+++ /dev/null
@@ -1,23 +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 <QtCore/QTimer>
-
-#include "genstyles.h"
diff --git a/Telegram/Style.plist b/Telegram/Style.plist
deleted file mode 100644
index ad8b66a7a..000000000
--- a/Telegram/Style.plist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleExecutable</key>
-	<string>MetaStyle</string>
-	<key>CFBundleGetInfoString</key>
-	<string>MetaStyle compiler</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>NOTE</key>
-	<string></string>
-	<key>NSPrincipalClass</key>
-	<string>NSApplication</string>
-</dict>
-</plist>
diff --git a/Telegram/Telegram.pro b/Telegram/Telegram.pro
index 89232509b..6d2ef081a 100644
--- a/Telegram/Telegram.pro
+++ b/Telegram/Telegram.pro
@@ -31,18 +31,16 @@ linux {
 
 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_style.commands = ./../codegen/Debug/codegen_style "-I./../../Telegram/Resources" "-I./../../Telegram/SourceFiles" "-o./GeneratedFiles/styles" all_files.style --rebuild
 
 codegen_numbers.target = numbers_target
 codegen_numbers.depends = ./../../Telegram/Resources/numbers.txt
+codegen_numbers.commands = ./../codegen/Debug/codegen_numbers "-o./GeneratedFiles" "./../../Telegram/Resources/numbers.txt"
 
 CONFIG(debug, debug|release) {
-#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./../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
 }
 
 codegen_lang.target = lang_target
@@ -70,6 +68,7 @@ SOURCES += \
     ./GeneratedFiles/numbers.cpp \
     ./GeneratedFiles/styles/style_basic.cpp \
     ./GeneratedFiles/styles/style_basic_types.cpp \
+    ./GeneratedFiles/styles/style_overview.cpp \
     ./SourceFiles/main.cpp \
     ./SourceFiles/stdafx.cpp \
     ./SourceFiles/apiwrap.cpp \
@@ -155,6 +154,10 @@ SOURCES += \
     ./SourceFiles/serialize/serialize_document.cpp \
     ./SourceFiles/ui/buttons/peer_avatar_button.cpp \
     ./SourceFiles/ui/style/style_core.cpp \
+    ./SourceFiles/ui/style/style_core_color.cpp \
+    ./SourceFiles/ui/style/style_core_font.cpp \
+    ./SourceFiles/ui/style/style_core_icon.cpp \
+    ./SourceFiles/ui/style/style_core_types.cpp \
     ./SourceFiles/ui/text/text.cpp \
     ./SourceFiles/ui/text/text_block.cpp \
     ./SourceFiles/ui/text/text_entity.cpp \
@@ -183,6 +186,7 @@ HEADERS += \
     ./GeneratedFiles/numbers.h \
     ./GeneratedFiles/styles/style_basic.h \
     ./GeneratedFiles/styles/style_basic_types.h \
+    ./GeneratedFiles/styles/style_overview.h \
     ./SourceFiles/stdafx.h \
     ./SourceFiles/apiwrap.h \
     ./SourceFiles/app.h \
@@ -273,6 +277,10 @@ HEADERS += \
     ./SourceFiles/serialize/serialize_document.h \
     ./SourceFiles/ui/buttons/peer_avatar_button.h \
     ./SourceFiles/ui/style/style_core.h \
+    ./SourceFiles/ui/style/style_core_color.h \
+    ./SourceFiles/ui/style/style_core_font.h \
+    ./SourceFiles/ui/style/style_core_icon.h \
+    ./SourceFiles/ui/style/style_core_types.h \
     ./SourceFiles/ui/text/text.h \
     ./SourceFiles/ui/text/text_block.h \
     ./SourceFiles/ui/text/text_entity.h \
@@ -332,7 +340,7 @@ CONFIG(release, debug|release) {
     QMAKE_CXXFLAGS_RELEASE -= -O2
     QMAKE_CXXFLAGS_RELEASE += -Ofast -flto -fno-strict-aliasing -g
     QMAKE_LFLAGS_RELEASE -= -O1
-    QMAKE_LFLAGS_RELEASE += -Ofast -flto -g -rdynamic
+    QMAKE_LFLAGS_RELEASE += -Ofast -flto -g -rdynamic -static-libstdc++
 }
 # Linux 32bit fails Release link with Link-Time Optimization: virtual memory exhausted
 unix {
@@ -344,7 +352,7 @@ unix {
     }
 }
 CONFIG(debug, debug|release) {
-	QMAKE_LFLAGS_DEBUG += -g -rdynamic
+	QMAKE_LFLAGS_DEBUG += -g -rdynamic -static-libstdc++
 }
 
 INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.1/QtGui\
diff --git a/doc/building-qmake.md b/doc/building-qmake.md
index ff6ac22e1..d54a927c2 100644
--- a/doc/building-qmake.md
+++ b/doc/building-qmake.md
@@ -75,10 +75,16 @@ Building
     ./configure
     make
     
-    # Build MetaStyle
-    mkdir -p "$srcdir/tdesktop/Linux/DebugIntermediateStyle"
-    cd "$srcdir/tdesktop/Linux/DebugIntermediateStyle"
-    qmake CONFIG+=debug "../../Telegram/MetaStyle.pro"
+    # Build codegen_style
+    mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
+    cd "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
+    qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_style/codegen_style.pro
+    make
+
+    # Build codegen_numbers
+    mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
+    cd "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
+    qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
     make
     
     # Build MetaLang
diff --git a/doc/building-qtcreator.md b/doc/building-qtcreator.md
index fd8c7dee3..713cb51eb 100644
--- a/doc/building-qtcreator.md
+++ b/doc/building-qtcreator.md
@@ -164,12 +164,24 @@ In Terminal go to **/home/user/TBuild/Libraries** and run
     make
     sudo make install
 
+###Building Telegram codegen utilities
+
+In Terminal go to **/home/user/TBuild/tdesktop** and run
+
+    mkdir -p Linux/obj/codegen_style/Debug
+    cd Linux/obj/codegen_style/Debug
+    /usr/local/Qt-5.5.1/bin/qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_style/codegen_style.pro
+    make
+    mkdir -p ../../codegen_numbers/Debug
+    cd ../../codegen_numbers/Debug
+    /usr/local/Qt-5.5.1/bin/qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
+    make
+
 ###Building Telegram Desktop
 
 * Launch Qt Creator, all projects will be taken from **/home/user/TBuild/tdesktop/Telegram**
 * Tools > Options > Build & Run > Qt Versions tab > Add > File System /usr/local/Qt-5.5.1/bin/qmake > **Qt 5.5.1 (Qt-5.5.1)** > Apply
 * Tools > Options > Build & Run > Kits tab > Desktop (default) > change **Qt version** to **Qt 5.5.1 (Qt-5.5.1)** > Apply
-* Open MetaStyle.pro, configure project with paths **/home/user/TBuild/tdesktop/Linux/DebugIntermediateStyle** and **/home/user/TBuild/tdesktop/Linux/ReleaseIntermediateStyle** and build for Debug
 * Open MetaLang.pro, configure project with paths **/home/user/TBuild/tdesktop/Linux/DebugIntermediateLang** and **/home/user/TBuild/tdesktop/Linux/ReleaseIntermediateLang** and build for Debug
 * Open Telegram.pro, configure project with paths **/home/user/TBuild/tdesktop/Linux/DebugIntermediate** and **/home/user/TBuild/tdesktop/Linux/ReleaseIntermediate** and build for Debug, if GeneratedFiles are not found click **Run qmake** from **Build** menu and try again
 * Open Updater.pro, configure project with paths **/home/user/TBuild/tdesktop/Linux/DebugIntermediateUpdater** and **/home/user/TBuild/tdesktop/Linux/ReleaseIntermediateUpdater** and build for Debug
diff --git a/doc/building-xcode-old.md b/doc/building-xcode-old.md
index d7664e4a2..934a99fb8 100644
--- a/doc/building-xcode-old.md
+++ b/doc/building-xcode-old.md
@@ -4,6 +4,8 @@
 
 Choose a folder for the future build, for example **/Users/user/TBuild** There you will have two folders, **Libraries** for third-party libs and **tdesktop** (or **tdesktop-master**) for the app.
 
+**IMPORTANT** You are required to build and install Qt 5.5.1 from the [Xcode 7](building-xcode.md) instructions first.
+
 ###Clone source code
 
 By git – in Terminal go to **/Users/user/TBuild** and run
@@ -192,7 +194,6 @@ building (**make** command) will take really long time.
 ###Building Telegram Desktop
 
 * Launch Xcode, all projects will be taken from **/Users/user/TBuild/tdesktop/Telegram**
-* Open MetaStyle.xcodeproj and build for Debug (Release optionally)
 * Open MetaEmoji.xcodeproj and build for Debug (Release optionally)
 * Open MetaLang.xcodeproj and build for Debug (Release optionally)
 * Open Telegram.xcodeproj and build for Debug
diff --git a/doc/building-xcode.md b/doc/building-xcode.md
index 0aba04026..e63ab74de 100644
--- a/doc/building-xcode.md
+++ b/doc/building-xcode.md
@@ -251,7 +251,6 @@ In Terminal go to **/Users/user/TBuild/Libraries** and run:
 ###Building Telegram Desktop
 
 * Launch Xcode, all projects will be taken from **/Users/user/TBuild/tdesktop/Telegram**
-* Open MetaStyle.xcodeproj and build for Debug (Release optionally)
 * Open MetaEmoji.xcodeproj and build for Debug (Release optionally)
 * Open MetaLang.xcodeproj and build for Debug (Release optionally)
 * Open Telegram.xcodeproj and build for Debug