// Microsoft Visual C++ generated resource script.
//
#include "autoversion.h"
#include "winres.h"

#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION __VERSION_MAJOR__,__VERSION_MINOR__,__VERSION_TINY__,__VERSION_BUILD__
 PRODUCTVERSION __VERSION_MAJOR__,__VERSION_MINOR__,__VERSION_TINY__,__VERSION_BUILD__
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "WebKit QuickTime Movie Dynamic Link Library"
            VALUE "FileVersion", __VERSION_TEXT__
            VALUE "CompanyName", "Apple Inc."
            VALUE "InternalName", "WebKit"
            VALUE "LegalCopyright", "Copyright Apple Inc. 2007-2010"
            VALUE "OriginalFilename", "QTMovieWin.dll"
            VALUE "ProductName", "WebKit"
            VALUE "ProductVersion", __VERSION_TEXT__
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
