/*
 * Copyright (c) 2005 Mike McCormack
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "winver.h"

VS_VERSION_INFO VERSIONINFO
FILEVERSION    1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK  63
FILEFLAGS      0
FILEOS         VOS_UNKNOWN
FILETYPE       VFT_APP
FILESUBTYPE    VFT2_UNKNOWN
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904E4" /* LANG_ENGLISH/SUBLANG_DEFAULT, CP1252 */
        {
            /* list of strings that partially match in arbitrary order */
            VALUE "Product", "Product"
            VALUE "CompanyName", "CompanyName"
            VALUE "FileDescription", "FileDescription"
            VALUE "Internal", "Internal"
            VALUE "ProductVersion", "ProductVersion"
            VALUE "InternalName", "InternalName"
            VALUE "File", "File"
            VALUE "LegalCopyright", "LegalCopyright"
            VALUE "FileVersion", "FileVersion"
            VALUE "Legal", "Legal"
            VALUE "OriginalFilename", "OriginalFilename"
            VALUE "ProductName", "ProductName"
            VALUE "Company", "Company"
            VALUE "Original", "Original"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x0409,1252 /* LANG_ENGLISH/SUBLANG_DEFAULT, CP1252 */
    }
}
