diff --git a/.gitignore b/.gitignore
index 3647af4..9c455c3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
@@ -22,11 +24,14 @@ bld/
[Oo]bj/
[Ll]og/
-# Visual Studio 2015 cache/options directory
+# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
@@ -40,10 +45,19 @@ TestResult.xml
[Rr]eleasePS/
dlldata.c
-# DNX
-project.lock.json
-artifacts/
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+**/Properties/launchSettings.json
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
@@ -89,6 +103,9 @@ ipch/
*.vspx
*.sap
+# Visual Studio Trace Files
+*.e2e
+
# TFS 2012 Local Workspace
$tf/
@@ -109,6 +126,14 @@ _TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
# NCrunch
_NCrunch_*
.*crunch*.local.xml
@@ -140,7 +165,7 @@ publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
-# TODO: Comment the next line if you want to checkin your web deploy settings
+# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
@@ -153,12 +178,12 @@ PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
-**/packages/*
+**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
-!**/packages/build/
+!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
-#!**/packages/repositories.config
-# NuGet v3's project.json files produces more ignoreable files
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
@@ -175,6 +200,7 @@ AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
+*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
@@ -188,11 +214,15 @@ ClientBin/
*~
*.dbmdl
*.dbproj.schemaview
+*.jfm
*.pfx
*.publishsettings
-node_modules/
orleans.codegen.cs
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
@@ -211,6 +241,7 @@ UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
+*.ndf
# Business Intelligence projects
*.rdl.data
@@ -225,6 +256,10 @@ FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
+node_modules/
+
+# TypeScript v1 declaration files
+typings/
# Visual Studio 6 build log
*.plg
@@ -232,6 +267,9 @@ FakesAssemblies/
# Visual Studio 6 workspace options file
*.opt
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
@@ -251,11 +289,34 @@ paket-files/
.idea/
*.sln.iml
-# Advanced Installer
-**/*-cache/
-**/*-SetupFiles/
-**/*.back.aip
+# CodeRush
+.cr/
-# Other
-wufuc_setup_bat/*.dll
-wufuc_setup_bat/*.zip
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
diff --git a/AdvancedInstallerHelper/AdvancedInstallerHelper.vcxproj b/AdvancedInstallerHelper/AdvancedInstallerHelper.vcxproj
new file mode 100644
index 0000000..5c51ee2
--- /dev/null
+++ b/AdvancedInstallerHelper/AdvancedInstallerHelper.vcxproj
@@ -0,0 +1,118 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ 15.0
+ {12498D61-02AF-4C13-925D-E130EEDE2543}
+ Win32Proj
+ AdvancedInstallerHelper
+ 10.0.16299.0
+
+
+
+ DynamicLibrary
+ true
+ v141
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ false
+
+
+ false
+ $(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\
+ $(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\
+ false
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;ADVANCEDINSTALLERHELPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ ProgramDatabase
+ MultiThreadedDebug
+ true
+ CompileAsC
+
+
+ Windows
+ exports.def
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;ADVANCEDINSTALLERHELPER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ None
+ MultiThreaded
+ CompileAsC
+
+
+ Windows
+ true
+ true
+ false
+ true
+ exports.def
+
+
+ copy /Y "$(TargetPath)" "$(SolutionDir)wufuc_setup\"
+ Copy release binaries to the setup staging directory
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AdvancedInstallerHelper/AdvancedInstallerHelper.vcxproj.filters b/AdvancedInstallerHelper/AdvancedInstallerHelper.vcxproj.filters
new file mode 100644
index 0000000..61ab094
--- /dev/null
+++ b/AdvancedInstallerHelper/AdvancedInstallerHelper.vcxproj.filters
@@ -0,0 +1,41 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/AdvancedInstallerHelper/dllmain.c b/AdvancedInstallerHelper/dllmain.c
new file mode 100644
index 0000000..47f5d79
Binary files /dev/null and b/AdvancedInstallerHelper/dllmain.c differ
diff --git a/AdvancedInstallerHelper/exports.def b/AdvancedInstallerHelper/exports.def
new file mode 100644
index 0000000..e36dc08
--- /dev/null
+++ b/AdvancedInstallerHelper/exports.def
@@ -0,0 +1,3 @@
+LIBRARY
+EXPORTS
+ UnloadCustomAction @1
diff --git a/AdvancedInstallerHelper/helper.c b/AdvancedInstallerHelper/helper.c
new file mode 100644
index 0000000..121be19
Binary files /dev/null and b/AdvancedInstallerHelper/helper.c differ
diff --git a/AdvancedInstallerHelper/stdafx.c b/AdvancedInstallerHelper/stdafx.c
new file mode 100644
index 0000000..034cbe2
Binary files /dev/null and b/AdvancedInstallerHelper/stdafx.c differ
diff --git a/AdvancedInstallerHelper/stdafx.h b/AdvancedInstallerHelper/stdafx.h
new file mode 100644
index 0000000..5c0db05
Binary files /dev/null and b/AdvancedInstallerHelper/stdafx.h differ
diff --git a/AdvancedInstallerHelper/targetver.h b/AdvancedInstallerHelper/targetver.h
new file mode 100644
index 0000000..0a633fa
Binary files /dev/null and b/AdvancedInstallerHelper/targetver.h differ
diff --git a/LICENSE b/COPYING
similarity index 100%
rename from LICENSE
rename to COPYING
diff --git a/README.md b/README.md
index b17b120..c857921 100644
--- a/README.md
+++ b/README.md
@@ -65,6 +65,30 @@ My patch takes advantage of this behavior by patching a couple of boolean values
## FAQ
+### If you get BSODs after installing certain updates on specific AMD CPUs (Updated 01/11/2018)
+
+> Microsoft has resumed updating the majority of AMD devices with the Windows operating system security update to help protect against the chipset vulnerabilities known as Spectre and Meltdown.
+>
+> A small subset of older AMD processors remain blocked to avoid users getting into an unbootable state after installation of recent Windows operating system security updates. Microsoft is working with AMD to resolve this issue and should resume Windows OS security updates to this subset of AMD processors via Windows Update and WSUS by next week. For AMD device-specific information please refer to AMD’s Security Advisory.
+>
+> Microsoft has temporarily paused sending the following Windows operating system updates to this subset of older AMD processors:
+>
+> - January 3, 2018—KB4056897 (Security-only update)
+> - January 9, 2018—KB4056894 (Monthly Rollup)
+> - January 3, 2018—KB4056888 (OS Build 10586.1356)
+> - January 3, 2018—KB4056892 (OS Build 16299.192)
+> - January 3, 2018—KB4056891 (OS Build 15063.850)
+> - January 3, 2018—KB4056890 (OS Build 14393.2007)
+> - January 3, 2018—KB4056898 (Security-only update)
+> - January 3, 2018—KB4056893 (OS Build 10240.17735)
+> - January 9, 2018—KB4056895 (Monthly Rollup)
+
+For more information, you can read the Microsoft Support article [here](https://support.microsoft.com/en-us/help/4073707/windows-os-security-update-block-for-some-amd-based-devices),
+but basically Microsoft put out some updates recently that cause problems on older AMD processors, and blocked them on those CPUs, but apparently (I haven't been able to test this due to lack of time and compatible hardware)
+wufuc bypasses the block and lets you uninstall these buggy updates which can cause problems. Unfortunately as far as I know, there is no comprehensive list of the processors that should be blocked, but if you experience BSODs
+after installing any of these updates, you can try the solution posted in this [comment](https://github.com/zeffy/wufuc/issues/132#issuecomment-356921433) to uninstall the updates and fix the crashes.
+According to the Microsoft Support article, this issue should be resolved within the next week.
+
### How to deploy wufuc using Group Policy
[There is a tutorial on the Advanced Installer website that explains how to do this](http://www.advancedinstaller.com/user-guide/tutorial-gpo.html).
diff --git a/appveyor.yml b/appveyor.yml
index 1c8728e..60dc72a 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -19,16 +19,14 @@ before_build:
set "BUILD_VERSION_COMMA=%APPVEYOR_BUILD_VERSION:.=,%"
- set "BUILD_ZIPFILE=%APPVEYOR_BUILD_FOLDER%\%APPVEYOR_PROJECT_NAME%_v%BUILD_COMMIT_VERSION%_%PLATFORM%.zip"
+ set "BUILD_ZIPFILE=%APPVEYOR_BUILD_FOLDER%\%APPVEYOR_PROJECT_NAME%_v%BUILD_COMMIT_VERSION%-%PLATFORM%.zip"
after_build:
- cmd: >-
- copy /Y "wufuc\bin\%CONFIGURATION%\%PLATFORM%\wufuc*.dll" "wufuc_setup_bat\"
-
- copy /Y "LICENSE" "wufuc_setup_bat\COPYING.txt"
+ copy /Y "COPYING" "wufuc_setup_bat\COPYING.txt"
cd "%APPVEYOR_BUILD_FOLDER%\wufuc_setup_bat"
- echo v%BUILD_COMMIT_VERSION% >version.txt
+ echo v%BUILD_COMMIT_VERSION%>version.txt
for /R %%i in (*.txt) do unix2dos "%%i"
diff --git a/wufuc.sln b/wufuc.sln
index ff32284..2a414cc 100644
--- a/wufuc.sln
+++ b/wufuc.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.27004.2010
+VisualStudioVersion = 15.0.27130.2010
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wufuc", "wufuc\wufuc.vcxproj", "{00F96695-CE41-4C2F-A344-6219DFB4F887}"
EndProject
@@ -20,11 +20,13 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{65210B26-9B74-4B7E-B777-7A2EE4162595}"
ProjectSection(SolutionItems) = preProject
CONTRIBUTING.md = CONTRIBUTING.md
+ COPYING = COPYING
DONATE.md = DONATE.md
- LICENSE = LICENSE
README.md = README.md
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AdvancedInstallerHelper", "AdvancedInstallerHelper\AdvancedInstallerHelper.vcxproj", "{12498D61-02AF-4C13-925D-E130EEDE2543}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -41,6 +43,12 @@ Global
{00F96695-CE41-4C2F-A344-6219DFB4F887}.Release|x64.Build.0 = Release|x64
{00F96695-CE41-4C2F-A344-6219DFB4F887}.Release|x86.ActiveCfg = Release|Win32
{00F96695-CE41-4C2F-A344-6219DFB4F887}.Release|x86.Build.0 = Release|Win32
+ {12498D61-02AF-4C13-925D-E130EEDE2543}.Debug|x64.ActiveCfg = Debug|Win32
+ {12498D61-02AF-4C13-925D-E130EEDE2543}.Debug|x86.ActiveCfg = Debug|Win32
+ {12498D61-02AF-4C13-925D-E130EEDE2543}.Debug|x86.Build.0 = Debug|Win32
+ {12498D61-02AF-4C13-925D-E130EEDE2543}.Release|x64.ActiveCfg = Release|Win32
+ {12498D61-02AF-4C13-925D-E130EEDE2543}.Release|x86.ActiveCfg = Release|Win32
+ {12498D61-02AF-4C13-925D-E130EEDE2543}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/wufuc/callbacks.c b/wufuc/callbacks.c
index 73972e3..5dedf0f 100644
--- a/wufuc/callbacks.c
+++ b/wufuc/callbacks.c
@@ -9,10 +9,10 @@ bool DuplicateContextHandles(HANDLE hSrcProcess, ContextHandles *pSrcContext, HA
hTargetProcess, &pTargetContext->hMainMutex, SYNCHRONIZE, FALSE, 0)
&& DuplicateHandle(hSrcProcess, pSrcContext->hUnloadEvent,
- hTargetProcess, &pTargetContext->hUnloadEvent, SYNCHRONIZE, FALSE, 0)
+ hTargetProcess, &pTargetContext->hUnloadEvent, SYNCHRONIZE, FALSE, 0)
&& DuplicateHandle(hSrcProcess, hAuxiliaryMutex,
- hTargetProcess, &pTargetContext->hAuxiliaryMutex, 0, FALSE, DUPLICATE_SAME_ACCESS) ) {
+ hTargetProcess, &pTargetContext->hAuxiliaryMutex, 0, FALSE, DUPLICATE_SAME_ACCESS) ) {
return true;
}
@@ -22,14 +22,16 @@ bool DuplicateContextHandles(HANDLE hSrcProcess, ContextHandles *pSrcContext, HA
VOID CALLBACK ServiceNotifyCallback(PSERVICE_NOTIFYW pNotifyBuffer)
{
HANDLE hProcess;
- wchar_t MutexName[37];
+ wchar_t MutexName[44];
HANDLE hAuxiliaryMutex;
ContextHandles TargetContext;
switch ( pNotifyBuffer->dwNotificationStatus ) {
case ERROR_SUCCESS:
if ( !pNotifyBuffer->ServiceStatus.dwProcessId
- || swprintf_s(MutexName, _countof(MutexName), L"Global\\wufuc_AuxiliaryMutex*%08X", pNotifyBuffer->ServiceStatus.dwProcessId) == -1
+ || swprintf_s(MutexName, _countof(MutexName),
+ L"Global\\%08x-7132-44a8-be15-56698979d2f3",
+ pNotifyBuffer->ServiceStatus.dwProcessId) == -1
|| !InitializeMutex(false, MutexName, &hAuxiliaryMutex) )
break;
diff --git a/wufuc/callbacks.h b/wufuc/callbacks.h
index e0f3b9a..ce8013d 100644
--- a/wufuc/callbacks.h
+++ b/wufuc/callbacks.h
@@ -10,7 +10,12 @@ typedef struct
{
HANDLE hMainMutex;
HANDLE hUnloadEvent;
- };
+ } DUMMYSTRUCTNAME;
+ struct
+ {
+ HANDLE hMainMutex;
+ HANDLE hUnloadEvent;
+ } u;
HANDLE handles[2];
};
} ContextHandles;
diff --git a/wufuc/dllmain.c b/wufuc/dllmain.c
index 209d8e1..805ba47 100644
--- a/wufuc/dllmain.c
+++ b/wufuc/dllmain.c
@@ -1,15 +1,14 @@
#include "stdafx.h"
-BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
+BOOL APIENTRY DllMain(HMODULE hModule,
+ DWORD ul_reason_for_call,
+ LPVOID lpReserved)
{
switch ( ul_reason_for_call ) {
case DLL_PROCESS_ATTACH:
- break;
- case DLL_PROCESS_DETACH:
- break;
case DLL_THREAD_ATTACH:
- break;
case DLL_THREAD_DETACH:
+ case DLL_PROCESS_DETACH:
break;
}
return TRUE;
diff --git a/wufuc/rundll32.c b/wufuc/rundll32.c
index 6b81f0b..d33b178 100644
--- a/wufuc/rundll32.c
+++ b/wufuc/rundll32.c
@@ -14,7 +14,7 @@ void CALLBACK RUNDLL32_StartW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, in
SERVICE_NOTIFYW NotifyBuffer;
if ( !InitializeMutex(true,
- L"Global\\{25020063-B5A7-4227-9FDF-25CB75E8C645}",
+ L"Global\\25020063-b5a7-4227-9fdf-25cb75e8c645",
&ctx.hMainMutex) ) {
trace(L"Failed to initialize main mutex. (GetLastError=%ul)", GetLastError());
diff --git a/wufuc/stdafx.h b/wufuc/stdafx.h
index 602239c..24a9b16 100644
--- a/wufuc/stdafx.h
+++ b/wufuc/stdafx.h
@@ -1,28 +1,34 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
#pragma once
#include "targetver.h"
+// Windows Header Files:
#include
#include
+
+
+// TODO: reference additional headers your program requires here
#include
#include
#include
-
#include
-#include
#include
#include
#include
-
#include
#include
#include
-
#include "patternfind.h"
#include "tracing.h"
extern IMAGE_DOS_HEADER __ImageBase;
#define PIMAGEBASE ((HMODULE)&__ImageBase)
+
diff --git a/wufuc/wufuc.vcxproj b/wufuc/wufuc.vcxproj
index bc10126..e984493 100644
--- a/wufuc/wufuc.vcxproj
+++ b/wufuc/wufuc.vcxproj
@@ -149,6 +149,7 @@
Use
MultiThreadedDebug
ProgramDatabase
+ true
Windows
@@ -171,6 +172,7 @@
Use
MultiThreadedDebug
ProgramDatabase
+ true
Windows
@@ -186,7 +188,7 @@
Level3
- Full
+ MaxSpeed
true
true
WIN32;NDEBUG;WUFUC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
@@ -195,6 +197,7 @@
Use
MultiThreaded
None
+ true
BUILD_COMMIT_VERSION=$(BUILD_COMMIT_VERSION);BUILD_VERSION_COMMA=$(BUILD_VERSION_COMMA);$(PreprocessorDefinitions)
@@ -213,6 +216,13 @@
X86;%(PreprocessorDefinitions)
+
+ copy /Y "$(TargetPath)" "$(SolutionDir)wufuc_setup_bat\"
+copy /Y "$(TargetPath)" "$(SolutionDir)wufuc_setup\"
+
+
+ Copy release binaries to the setup staging directories
+
@@ -226,6 +236,7 @@
true
MultiThreaded
None
+ true
BUILD_COMMIT_VERSION=$(BUILD_COMMIT_VERSION);BUILD_VERSION_COMMA=$(BUILD_VERSION_COMMA);$(PreprocessorDefinitions)
@@ -242,6 +253,13 @@
X64;%(PreprocessorDefinitions)
+
+ copy /Y "$(TargetPath)" "$(SolutionDir)wufuc_setup_bat\"
+copy /Y "$(TargetPath)" "$(SolutionDir)wufuc_setup\"
+
+
+ Copy release binaries to the setup staging directories
+
diff --git a/wufuc_setup/.gitignore b/wufuc_setup/.gitignore
new file mode 100644
index 0000000..cb06cf6
--- /dev/null
+++ b/wufuc_setup/.gitignore
@@ -0,0 +1,7 @@
+# Advanced Installer
+*-cache/
+*-SetupFiles/
+*.back.aip
+
+# Other
+*.dll
diff --git a/wufuc_setup/wufuc_setup.aip b/wufuc_setup/wufuc_setup.aip
index e91e045..a00ee4b 100644
--- a/wufuc_setup/wufuc_setup.aip
+++ b/wufuc_setup/wufuc_setup.aip
@@ -1,74 +1,77 @@
-
+
-
+
-
+
-
-
-
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
@@ -84,11 +87,12 @@
-
+
+
@@ -100,21 +104,35 @@
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
-
-
+
+
+
-
+
+
+
+
@@ -127,12 +145,19 @@
+
+
+
+
+
+
+
@@ -142,6 +167,7 @@
+
@@ -150,59 +176,73 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -211,4 +251,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wufuc_setup_bat/.gitignore b/wufuc_setup_bat/.gitignore
new file mode 100644
index 0000000..b404162
--- /dev/null
+++ b/wufuc_setup_bat/.gitignore
@@ -0,0 +1,3 @@
+# Other
+*.dll
+*.zip