diff --git a/.gitignore b/.gitignore
index a0bc5604..adcc4f7b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,6 @@ cmake_install.cmake
 *.vsxproj
 *.vsproj
 *.sln
+.waf-*
+.lock*
+*.pyc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 64c48928..80c2c5d9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,7 +32,6 @@ project (HLSDK-XASH3D)
 #--------------
 # USER DEFINES \
 ################\
-option(64BIT "Allow 64 Bit builds" OFF)
 option(USE_VGUI "Enable VGUI1. UNDONE" OFF)
 option(USE_VGUI2 "Enable VGUI2. UNDONE" OFF)
 option(USE_VOICEMGR "Enable VOICE MANAGER." OFF)
@@ -55,8 +54,8 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT 64BIT)
 	if(MSVC)
 		error("UNDONE: set 32 build flags")
 	else()
-		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
 		set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}")
 		set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
 	endif()
 	set(CMAKE_SIZEOF_VOID_P 4)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..60f4aad3
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,39 @@
+Half Life 1 SDK LICENSE
+======================
+
+Half Life 1 SDK Copyright(c) Valve Corp.
+
+THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE CORPORATION ("Valve").
+PLEASE READ IT BEFORE DOWNLOADING OR USING THE HALF LIFE 1 SDK ("SDK"). BY
+DOWNLOADING AND/OR USING THE HALF LIFE 1 SDK YOU ACCEPT THIS LICENSE. IF YOU DO
+NOT AGREE TO THE TERMS OF THIS LICENSE PLEASE DON'T DOWNLOAD OR USE THE SDK.
+
+You may, free of charge, download and use the SDK to develop a modified Valve
+game running on the Half-Life 1 engine.  You may distribute your modified Valve
+game in source and object code form, but only for free. Terms of use for Valve
+games are found in the Steam Subscriber Agreement located here:
+http://store.steampowered.com/subscriber_agreement/
+
+You may copy, modify, and distribute the SDK and any modifications you make to
+the SDK in source and object code form, but only for free.  Any distribution of
+this SDK must include this LICENSE file.
+
+Any distribution of the SDK or a substantial portion of the SDK must include
+the above copyright notice and the following:
+
+    DISCLAIMER OF WARRANTIES.  THE HALF LIFE 1 SDK AND ANY OTHER MATERIAL
+    DOWNLOADED BY LICENSEE IS PROVIDED "AS IS".  VALVE AND ITS SUPPLIERS
+    DISCLAIM ALL WARRANTIES WITH RESPECT TO THE SDK, EITHER EXPRESS OR IMPLIED,
+    INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY,
+    NON-INFRINGEMENT, TITLE AND FITNESS FOR A PARTICULAR PURPOSE.
+
+    LIMITATION OF LIABILITY.  IN NO EVENT SHALL VALVE OR ITS SUPPLIERS BE LIABLE
+    FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER
+    (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
+    BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY
+    LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE ENGINE AND/OR THE
+    SDK, EVEN IF VALVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+If you would like to use the SDK for a commercial purpose, please contact Valve
+at sourceengine@valvesoftware.com.
diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt
index 4827c0c0..031136d1 100644
--- a/cl_dll/CMakeLists.txt
+++ b/cl_dll/CMakeLists.txt
@@ -30,6 +30,7 @@ add_definitions(-DCLIENT_WEAPONS -DCLIENT_DLL -DCROWBAR_IDLE_ANIM)
 if(NOT MSVC)
 	add_compile_options(-fno-exceptions) # GCC/Clang flag
 	add_compile_options(-Wno-write-strings) # GCC/Clang flag
+	add_compile_options(-fvisibility=hidden) # GCC/Clang flag
 	add_definitions(-D_LINUX -DLINUX) # It seems enough for all non-Win32 systems
 	add_definitions(-Dstricmp=strcasecmp -Dstrnicmp=strncasecmp)
 	if(NOT MINGW)
diff --git a/cl_dll/MOTD.cpp b/cl_dll/MOTD.cpp
index 179ae4a8..439fb9c4 100644
--- a/cl_dll/MOTD.cpp
+++ b/cl_dll/MOTD.cpp
@@ -56,7 +56,7 @@ void CHudMOTD::Reset( void )
 	m_bShow = 0;
 }
 
-#define LINE_HEIGHT  13
+#define LINE_HEIGHT  (gHUD.m_scrinfo.iCharHeight)
 #define ROW_GAP  13
 #define ROW_RANGE_MIN 30
 #define ROW_RANGE_MAX ( ScreenHeight - 100 )
diff --git a/cl_dll/cdll_int.cpp b/cl_dll/cdll_int.cpp
index dc9199ba..45bbcd67 100644
--- a/cl_dll/cdll_int.cpp
+++ b/cl_dll/cdll_int.cpp
@@ -212,7 +212,9 @@ void TeamFortressViewport::paintBackground()
 //	int wide, tall;
 //	getParent()->getSize( wide, tall );
 //	setSize( wide, tall );
-	gEngfuncs.VGui_ViewportPaintBackground(HUD_GetRect());
+	int extents[4];
+	getParent()->getAbsExtents(extents[0],extents[1],extents[2],extents[3]);
+	gEngfuncs.VGui_ViewportPaintBackground(extents);
 }
 
 void *TeamFortressViewport::operator new( size_t stAllocateBlock )
diff --git a/cl_dll/cl_dll.h b/cl_dll/cl_dll.h
index 6e1c4e69..6ba3db67 100644
--- a/cl_dll/cl_dll.h
+++ b/cl_dll/cl_dll.h
@@ -38,7 +38,7 @@ typedef int ( *pfnUserMsgHook )( const char *pszName, int iSize, void *pbuf );
 #include "../engine/cdll_int.h"
 #include "../dlls/cdll_dll.h"
 
-#ifndef __MSC_VER
+#if !defined(_WIN32)
 #define _cdecl
 #endif
 #include "exportdef.h"
diff --git a/cl_dll/com_weapons.cpp b/cl_dll/com_weapons.cpp
index 5621149b..198c533a 100644
--- a/cl_dll/com_weapons.cpp
+++ b/cl_dll/com_weapons.cpp
@@ -116,7 +116,7 @@ void HUD_PlaySound( const char *sound, float volume )
 	if( !g_runfuncs || !g_finalstate )
 		return;
 
-	gEngfuncs.pfnPlaySoundByNameAtLocation( sound, volume, (float *)&g_finalstate->playerstate.origin );
+	gEngfuncs.pfnPlaySoundByNameAtLocation( sound, volume, g_finalstate->playerstate.origin );
 }
 
 /*
@@ -127,7 +127,7 @@ Directly queue up an event on the client
 =====================
 */
 void HUD_PlaybackEvent( int flags, const edict_t *pInvoker, unsigned short eventindex, float delay,
-	float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 )
+	const float *origin, const float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 )
 {
 	vec3_t org;
 	vec3_t ang;
@@ -138,7 +138,7 @@ void HUD_PlaybackEvent( int flags, const edict_t *pInvoker, unsigned short event
 	// Weapon prediction events are assumed to occur at the player's origin
 	org			= g_finalstate->playerstate.origin;
 	ang			= v_angles;
-	gEngfuncs.pfnPlaybackEvent( flags, pInvoker, eventindex, delay, (float *)&org, (float *)&ang, fparam1, fparam2, iparam1, iparam2, bparam1, bparam2 );
+	gEngfuncs.pfnPlaybackEvent( flags, pInvoker, eventindex, delay, org, ang, fparam1, fparam2, iparam1, iparam2, bparam1, bparam2 );
 }
 
 /*
diff --git a/cl_dll/com_weapons.h b/cl_dll/com_weapons.h
index efe06ad6..89fb3cfe 100644
--- a/cl_dll/com_weapons.h
+++ b/cl_dll/com_weapons.h
@@ -27,7 +27,7 @@ int				UTIL_SharedRandomLong( unsigned int seed, int low, int high );
 int				HUD_GetWeaponAnim( void );
 void			HUD_SendWeaponAnim( int iAnim, int body, int force );
 void			HUD_PlaySound( const char *sound, float volume );
-void			HUD_PlaybackEvent( int flags, const struct edict_s *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
+void			HUD_PlaybackEvent( int flags, const struct edict_s *pInvoker, unsigned short eventindex, float delay, const float *origin, const float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
 void			HUD_SetMaxSpeed( const struct edict_s *ed, float speed );
 int				stub_PrecacheModel( const char* s );
 int				stub_PrecacheSound( const char* s );
diff --git a/cl_dll/compile.bat b/cl_dll/compile.bat
index 9270d4bc..18b45459 100644
--- a/cl_dll/compile.bat
+++ b/cl_dll/compile.bat
@@ -8,68 +8,68 @@ echo -- Compiler is MSVC6
 
 set XASH3DSRC=..\..\Xash3D_original
 set INCLUDES=-I../common -I../engine -I../pm_shared -I../game_shared -I../public -I../external -I../dlls -I../utils/false_vgui/include
-set SOURCES=../dlls/crossbow.cpp^
-	../dlls/crowbar.cpp^
-	../dlls/egon.cpp^
-	../dlls/gauss.cpp^
-	../dlls/handgrenade.cpp^
-	../dlls/hornetgun.cpp^
-	../dlls/mp5.cpp^
-	../dlls/python.cpp^
-	../dlls/rpg.cpp^
-	../dlls/satchel.cpp^
-	../dlls/shotgun.cpp^
-	../dlls/squeakgrenade.cpp^
-	../dlls/tripmine.cpp^
-	../dlls/glock.cpp^
-	ev_hldm.cpp^
-	hl/hl_baseentity.cpp^
-	hl/hl_events.cpp^
-	hl/hl_objects.cpp^
-	hl/hl_weapons.cpp^
-	ammo.cpp^
-	ammo_secondary.cpp^
-	ammohistory.cpp^
-	battery.cpp^
-	cdll_int.cpp^
-	com_weapons.cpp^
-	death.cpp^
-	demo.cpp^
-	entity.cpp^
-	ev_common.cpp^
-	events.cpp^
-	flashlight.cpp^
-	GameStudioModelRenderer.cpp^
-	geiger.cpp^
-	health.cpp^
-	hud.cpp^
-	hud_msg.cpp^
-	hud_redraw.cpp^
-	hud_spectator.cpp^
-	hud_update.cpp^
-	in_camera.cpp^
-	input.cpp^
-	input_goldsource.cpp^
-	input_mouse.cpp^
-	input_xash3d.cpp^
-	menu.cpp^
-	message.cpp^
-	overview.cpp^
-	parsemsg.cpp^
-	../pm_shared/pm_debug.c^
-	../pm_shared/pm_math.c^
-	../pm_shared/pm_shared.c^
-	saytext.cpp^
-	status_icons.cpp^
-	statusbar.cpp^
-	studio_util.cpp^
-	StudioModelRenderer.cpp^
-	text_message.cpp^
-	train.cpp^
-	tri.cpp^
-	util.cpp^
-	view.cpp^
-	scoreboard.cpp^
+set SOURCES=../dlls/crossbow.cpp ^
+	../dlls/crowbar.cpp ^
+	../dlls/egon.cpp ^
+	../dlls/gauss.cpp ^
+	../dlls/handgrenade.cpp ^
+	../dlls/hornetgun.cpp ^
+	../dlls/mp5.cpp ^
+	../dlls/python.cpp ^
+	../dlls/rpg.cpp ^
+	../dlls/satchel.cpp ^
+	../dlls/shotgun.cpp ^
+	../dlls/squeakgrenade.cpp ^
+	../dlls/tripmine.cpp ^
+	../dlls/glock.cpp ^
+	ev_hldm.cpp ^
+	hl/hl_baseentity.cpp ^
+	hl/hl_events.cpp ^
+	hl/hl_objects.cpp ^
+	hl/hl_weapons.cpp ^
+	ammo.cpp ^
+	ammo_secondary.cpp ^
+	ammohistory.cpp ^
+	battery.cpp ^
+	cdll_int.cpp ^
+	com_weapons.cpp ^
+	death.cpp ^
+	demo.cpp ^
+	entity.cpp ^
+	ev_common.cpp ^
+	events.cpp ^
+	flashlight.cpp ^
+	GameStudioModelRenderer.cpp ^
+	geiger.cpp ^
+	health.cpp ^
+	hud.cpp ^
+	hud_msg.cpp ^
+	hud_redraw.cpp ^
+	hud_spectator.cpp ^
+	hud_update.cpp ^
+	in_camera.cpp ^
+	input.cpp ^
+	input_goldsource.cpp ^
+	input_mouse.cpp ^
+	input_xash3d.cpp ^
+	menu.cpp ^
+	message.cpp ^
+	overview.cpp ^
+	parsemsg.cpp ^
+	../pm_shared/pm_debug.c ^
+	../pm_shared/pm_math.c ^
+	../pm_shared/pm_shared.c ^
+	saytext.cpp ^
+	status_icons.cpp ^
+	statusbar.cpp ^
+	studio_util.cpp ^
+	StudioModelRenderer.cpp ^
+	text_message.cpp ^
+	train.cpp ^
+	tri.cpp ^
+	util.cpp ^
+	view.cpp ^
+	scoreboard.cpp ^
 	MOTD.cpp
 set DEFINES=/DCLIENT_DLL /DCLIENT_WEAPONS /Dsnprintf=_snprintf /DNO_VOICEGAMEMGR /DGOLDSOURCE_SUPPORT
 set LIBS=user32.lib Winmm.lib
diff --git a/cl_dll/input_goldsource.cpp b/cl_dll/input_goldsource.cpp
index c45841cb..be85ee3a 100644
--- a/cl_dll/input_goldsource.cpp
+++ b/cl_dll/input_goldsource.cpp
@@ -44,62 +44,62 @@ const char* (*pfnSDL_GameControllerName)(SDL_GameController*);
 
 int safe_pfnSDL_SetRelativeMouseMode(SDL_bool mode)
 {
-    if (pfnSDL_SetRelativeMouseMode)
-        return pfnSDL_SetRelativeMouseMode(mode);
-    return -1;
+	if (pfnSDL_SetRelativeMouseMode)
+		return pfnSDL_SetRelativeMouseMode(mode);
+	return -1;
 }
 Uint32 safe_pfnSDL_GetRelativeMouseState(int* x, int* y)
 {
-    if (pfnSDL_GetRelativeMouseState)
-        return pfnSDL_GetRelativeMouseState(x, y);
-    return 0;
+	if (pfnSDL_GetRelativeMouseState)
+		return pfnSDL_GetRelativeMouseState(x, y);
+	return 0;
 }
 int safe_pfnSDL_NumJoysticks()
 {
-    if (pfnSDL_NumJoysticks)
-        return pfnSDL_NumJoysticks();
-    return -1;
+	if (pfnSDL_NumJoysticks)
+		return pfnSDL_NumJoysticks();
+	return -1;
 }
 SDL_bool safe_pfnSDL_IsGameController(int joystick_index)
 {
-    if (pfnSDL_IsGameController)
-        return pfnSDL_IsGameController(joystick_index);
-    return SDL_FALSE;
+	if (pfnSDL_IsGameController)
+		return pfnSDL_IsGameController(joystick_index);
+	return SDL_FALSE;
 }
 SDL_GameController* safe_pfnSDL_GameControllerOpen(int joystick_index)
 {
-    if (pfnSDL_GameControllerOpen)
-        return pfnSDL_GameControllerOpen(joystick_index);
-    return NULL;
+	if (pfnSDL_GameControllerOpen)
+		return pfnSDL_GameControllerOpen(joystick_index);
+	return NULL;
 }
 Sint16 safe_pfnSDL_GameControllerGetAxis(SDL_GameController* gamecontroller, SDL_GameControllerAxis axis)
 {
-    if (pfnSDL_GameControllerGetAxis)
-        return pfnSDL_GameControllerGetAxis(gamecontroller, axis);
-    return 0;
+	if (pfnSDL_GameControllerGetAxis)
+		return pfnSDL_GameControllerGetAxis(gamecontroller, axis);
+	return 0;
 }
 Uint8 safe_pfnSDL_GameControllerGetButton(SDL_GameController* gamecontroller, SDL_GameControllerButton button)
 {
-    if (pfnSDL_GameControllerGetButton)
-        return pfnSDL_GameControllerGetButton(gamecontroller, button);
-    return 0;
+	if (pfnSDL_GameControllerGetButton)
+		return pfnSDL_GameControllerGetButton(gamecontroller, button);
+	return 0;
 }
 void safe_pfnSDL_JoystickUpdate()
 {
-    if (pfnSDL_JoystickUpdate)
-        pfnSDL_JoystickUpdate();
+	if (pfnSDL_JoystickUpdate)
+		pfnSDL_JoystickUpdate();
 }
 const char* safe_pfnSDL_GameControllerName(SDL_GameController* gamecontroller)
 {
-    if (pfnSDL_GameControllerName)
-        return pfnSDL_GameControllerName(gamecontroller);
-    return NULL;
+	if (pfnSDL_GameControllerName)
+		return pfnSDL_GameControllerName(gamecontroller);
+	return NULL;
 }
 
 struct SDLFunction
 {
-    void** ppfnFunc;
-    const char* name;
+	void** ppfnFunc;
+	const char* name;
 };
 static SDLFunction sdlFunctions[] = {
 	{(void**)&pfnSDL_SetRelativeMouseMode, "SDL_SetRelativeMouseMode"},
@@ -129,15 +129,15 @@ extern cl_enginefunc_t gEngfuncs;
 
 extern int iMouseInUse;
 
-extern kbutton_t    in_strafe;
-extern kbutton_t    in_mlook;
-extern kbutton_t    in_speed;
-extern kbutton_t    in_jlook;
+extern kbutton_t in_strafe;
+extern kbutton_t in_mlook;
+extern kbutton_t in_speed;
+extern kbutton_t in_jlook;
 
-extern cvar_t   *m_pitch;
-extern cvar_t   *m_yaw;
-extern cvar_t   *m_forward;
-extern cvar_t   *m_side;
+extern cvar_t *m_pitch;
+extern cvar_t *m_yaw;
+extern cvar_t *m_forward;
+extern cvar_t *m_side;
 
 extern cvar_t *lookstrafe;
 extern cvar_t *lookspring;
@@ -161,6 +161,7 @@ bool isMouseRelative = false;
 extern globalvars_t *gpGlobals;
 #endif
 
+int CL_IsDead( void );
 extern Vector dead_viewangles;
 
 void V_StopPitchDrift( void )
@@ -169,8 +170,8 @@ void V_StopPitchDrift( void )
 }
 
 // mouse variables
-cvar_t      *m_filter;
-extern cvar_t      *sensitivity;
+cvar_t *m_filter;
+extern cvar_t *sensitivity;
 
 // Custom mouse acceleration (0 disable, 1 to enable, 2 enable with separate yaw/pitch rescale)
 static cvar_t *m_customaccel;
@@ -188,44 +189,44 @@ static cvar_t *m_customaccel_exponent;
 static cvar_t *m_mousethread_sleep;
 #endif
 
-float       mouse_x, mouse_y;
+float mouse_x, mouse_y;
 
-static int  restore_spi;
-static int  originalmouseparms[3], newmouseparms[3] = {0, 0, 1};
-static int  mouseactive = 0;
-static int  mouseparmsvalid;
-static int  mouseshowtoggle = 1;
+static int restore_spi;
+static int originalmouseparms[3], newmouseparms[3] = {0, 0, 1};
+static int mouseactive = 0;
+static int mouseparmsvalid;
+static int mouseshowtoggle = 1;
 
 // joystick defines and variables
 // where should defines be moved?
-#define JOY_ABSOLUTE_AXIS   0x00000000      // control like a joystick
-#define JOY_RELATIVE_AXIS   0x00000010      // control like a mouse, spinner, trackball
-#define JOY_MAX_AXES        6               // X, Y, Z, R, U, V
-#define JOY_AXIS_X          0
-#define JOY_AXIS_Y          1
-#define JOY_AXIS_Z          2
-#define JOY_AXIS_R          3
-#define JOY_AXIS_U          4
-#define JOY_AXIS_V          5
+#define JOY_ABSOLUTE_AXIS	0x00000000 // control like a joystick
+#define JOY_RELATIVE_AXIS	0x00000010 // control like a mouse, spinner, trackball
+#define JOY_MAX_AXES	6 // X, Y, Z, R, U, V
+#define JOY_AXIS_X 0
+#define JOY_AXIS_Y 1
+#define JOY_AXIS_Z 2
+#define JOY_AXIS_R 3
+#define JOY_AXIS_U 4
+#define JOY_AXIS_V 5
 
 enum _ControlList
 {
-    AxisNada = 0,
-    AxisForward,
-    AxisLook,
-    AxisSide,
-    AxisTurn
+	AxisNada = 0,
+	AxisForward,
+	AxisLook,
+	AxisSide,
+	AxisTurn
 };
 
 #if !defined(USE_SDL2) && defined(_WIN32)
 DWORD dwAxisFlags[JOY_MAX_AXES] =
 {
-    JOY_RETURNX,
-    JOY_RETURNY,
-    JOY_RETURNZ,
-    JOY_RETURNR,
-    JOY_RETURNU,
-    JOY_RETURNV
+	JOY_RETURNX,
+	JOY_RETURNY,
+	JOY_RETURNZ,
+	JOY_RETURNR,
+	JOY_RETURNU,
+	JOY_RETURNV
 };
 #endif
 
@@ -236,10 +237,10 @@ int pdwRawValue[ JOY_MAX_AXES ];
 #elif defined(_WIN32)
 PDWORD pdwRawValue[ JOY_MAX_AXES ];
 #endif
-DWORD       joy_oldbuttonstate, joy_oldpovstate;
+DWORD joy_oldbuttonstate, joy_oldpovstate;
 
-int         joy_id;
-DWORD       joy_numbuttons;
+int joy_id;
+DWORD joy_numbuttons;
 
 #ifdef USE_SDL2
 SDL_GameController *s_pJoystick = NULL;
@@ -273,13 +274,13 @@ cvar_t  *joy_yawsensitivity;
 cvar_t  *joy_wwhack1;
 cvar_t  *joy_wwhack2;
 
-int         joy_avail, joy_advancedinit, joy_haspov;
+int joy_avail, joy_advancedinit, joy_haspov;
 
 #ifdef _WIN32
 unsigned int s_hMouseThreadId = 0;
-HANDLE  s_hMouseThread = 0;
-HANDLE  s_hMouseQuitEvent = 0;
-HANDLE  s_hMouseThreadActiveLock = 0;
+HANDLE s_hMouseThread = 0;
+HANDLE s_hMouseQuitEvent = 0;
+HANDLE s_hMouseThreadActiveLock = 0;
 #endif
 
 /*
@@ -289,14 +290,14 @@ Force_CenterView_f
 */
 void Force_CenterView_f (void)
 {
-    vec3_t viewangles;
+	vec3_t viewangles;
 
-    if (!iMouseInUse)
-    {
-        gEngfuncs.GetViewAngles( (float *)viewangles );
-        viewangles[PITCH] = 0;
-        gEngfuncs.SetViewAngles( (float *)viewangles );
-    }
+	if (!iMouseInUse)
+	{
+		gEngfuncs.GetViewAngles( (float *)viewangles );
+		viewangles[PITCH] = 0;
+		gEngfuncs.SetViewAngles( (float *)viewangles );
+	}
 }
 
 #ifdef _WIN32
@@ -310,129 +311,129 @@ LONG mouseThreadSleep = 0;
 
 bool MouseThread_ActiveLock_Enter( void )
 {
-    if(!m_bMouseThread)
-        return true;
+	if(!m_bMouseThread)
+		return true;
 
-    return WAIT_OBJECT_0 == WaitForSingleObject( s_hMouseThreadActiveLock,  INFINITE);
+	return WAIT_OBJECT_0 == WaitForSingleObject( s_hMouseThreadActiveLock,  INFINITE);
 }
 
 void MouseThread_ActiveLock_Exit( void )
 {
-    if(!m_bMouseThread)
-        return;
+	if(!m_bMouseThread)
+		return;
 
-    SetEvent( s_hMouseThreadActiveLock );
+	SetEvent( s_hMouseThreadActiveLock );
 }
 
 unsigned __stdcall MouseThread_Function( void * pArg )
 {
-    while ( true )
-    {
-        DWORD sleepVal = (DWORD)InterlockedExchangeAdd(&mouseThreadSleep, 0);
-        if(0 > sleepVal) sleepVal = 0;
-        else if(1000 < sleepVal) sleepVal = 1000;
-        if(WAIT_OBJECT_0 == WaitForSingleObject( s_hMouseQuitEvent, sleepVal))
-        {
-            break;
-        }
+	while ( true )
+	{
+		DWORD sleepVal = (DWORD)InterlockedExchangeAdd(&mouseThreadSleep, 0);
+		if(0 > sleepVal) sleepVal = 0;
+		else if(1000 < sleepVal) sleepVal = 1000;
+		if(WAIT_OBJECT_0 == WaitForSingleObject( s_hMouseQuitEvent, sleepVal))
+		{
+			break;
+		}
 
-        if( MouseThread_ActiveLock_Enter() )
-        {
-            if ( InterlockedExchangeAdd(&mouseThreadActive, 0) )
-            {
-                POINT       mouse_pos;
-                POINT       center_pos;
+		if( MouseThread_ActiveLock_Enter() )
+		{
+			if ( InterlockedExchangeAdd(&mouseThreadActive, 0) )
+			{
+				POINT	mouse_pos;
+				POINT	center_pos;
 
-                center_pos.x = InterlockedExchangeAdd(&mouseThreadCenterX, 0);
-                center_pos.y = InterlockedExchangeAdd(&mouseThreadCenterY, 0);
-                GetCursorPos(&mouse_pos);
+				center_pos.x = InterlockedExchangeAdd(&mouseThreadCenterX, 0);
+				center_pos.y = InterlockedExchangeAdd(&mouseThreadCenterY, 0);
+				GetCursorPos(&mouse_pos);
 
-                mouse_pos.x -= center_pos.x;
-                mouse_pos.y -= center_pos.y;
+				mouse_pos.x -= center_pos.x;
+				mouse_pos.y -= center_pos.y;
 
-                if(mouse_pos.x || mouse_pos.y) SetCursorPos( center_pos.x, center_pos.y );
+				if(mouse_pos.x || mouse_pos.y) SetCursorPos( center_pos.x, center_pos.y );
 
-                InterlockedExchangeAdd(&mouseThreadDeltaX, mouse_pos.x);
-                InterlockedExchangeAdd(&mouseThreadDeltaY, mouse_pos.y);
-            }
+				InterlockedExchangeAdd(&mouseThreadDeltaX, mouse_pos.x);
+				InterlockedExchangeAdd(&mouseThreadDeltaY, mouse_pos.y);
+			}
 
-            MouseThread_ActiveLock_Exit();
-        }
-    }
+			MouseThread_ActiveLock_Exit();
+		}
+	}
 
-    return 0;
+	return 0;
 }
 
 /// <summary>Updates mouseThreadActive using the global variables mouseactive, iVisibleMouse and m_bRawInput. Should be called after any of these is changed.</summary>
 /// <remarks>Has to be interlocked manually by programmer! Use MouseThread_ActiveLock_Enter and MouseThread_ActiveLock_Exit.</remarks>
 void UpdateMouseThreadActive(void)
 {
-    InterlockedExchange(&mouseThreadActive, mouseactive && !iVisibleMouse && !m_bRawInput);
+	InterlockedExchange(&mouseThreadActive, mouseactive && !iVisibleMouse && !m_bRawInput);
 }
 
 #endif
 
 void IN_SetMouseMode(bool enable)
 {
-    static bool currentMouseMode = false;
+	static bool currentMouseMode = false;
 
-    if(enable == currentMouseMode)
-        return;
+	if(enable == currentMouseMode)
+		return;
 
-    if(enable)
-    {
+	if(enable)
+	{
 #ifdef _WIN32
-        if (mouseparmsvalid)
-            restore_spi = SystemParametersInfo (SPI_SETMOUSE, 0, newmouseparms, 0);
+		if (mouseparmsvalid)
+			restore_spi = SystemParametersInfo (SPI_SETMOUSE, 0, newmouseparms, 0);
 
-        m_bRawInput = CVAR_GET_FLOAT( "m_rawinput" ) != 0;
-        if(m_bRawInput)
-        {
+		m_bRawInput = CVAR_GET_FLOAT( "m_rawinput" ) != 0;
+		if(m_bRawInput)
+		{
 #ifdef USE_SDL2
-            safe_pfnSDL_SetRelativeMouseMode(SDL_TRUE);
+			safe_pfnSDL_SetRelativeMouseMode(SDL_TRUE);
 #endif
-            isMouseRelative = true;
-        }
+			isMouseRelative = true;
+		}
 #else
-        safe_pfnSDL_SetRelativeMouseMode(SDL_TRUE);
+		safe_pfnSDL_SetRelativeMouseMode(SDL_TRUE);
 #endif
 
-        currentMouseMode = true;
-    }
-    else
-    {
+		currentMouseMode = true;
+	}
+	else
+	{
 #ifdef _WIN32
-        if(isMouseRelative)
-        {
+		if(isMouseRelative)
+		{
 #ifdef USE_SDL2
-            safe_pfnSDL_SetRelativeMouseMode(SDL_FALSE);
+			safe_pfnSDL_SetRelativeMouseMode(SDL_FALSE);
 #endif
-            isMouseRelative = false;
-        }
+			isMouseRelative = false;
+		}
 
-        if (restore_spi)
-            SystemParametersInfo (SPI_SETMOUSE, 0, originalmouseparms, 0);
+		if (restore_spi)
+			SystemParametersInfo (SPI_SETMOUSE, 0, originalmouseparms, 0);
 #else
-        safe_pfnSDL_SetRelativeMouseMode(SDL_FALSE);
+		safe_pfnSDL_SetRelativeMouseMode(SDL_FALSE);
 #endif
 
-        currentMouseMode = false;
-    }
+		currentMouseMode = false;
+	}
 }
 
 void IN_SetVisibleMouse(bool visible)
 {
 #ifdef _WIN32
-    bool lockEntered = MouseThread_ActiveLock_Enter();
+	bool lockEntered = MouseThread_ActiveLock_Enter();
 #endif
 
-    iVisibleMouse = visible;
+	iVisibleMouse = visible;
 
-    IN_SetMouseMode(!visible);
+	IN_SetMouseMode(!visible);
 
 #ifdef _WIN32
-    UpdateMouseThreadActive();
-    if(lockEntered) MouseThread_ActiveLock_Exit();
+	UpdateMouseThreadActive();
+	if(lockEntered) MouseThread_ActiveLock_Exit();
 #endif
 }
 
@@ -445,24 +446,24 @@ IN_ActivateMouse
 */
 void GoldSourceInput::IN_ActivateMouse (void)
 {
-    if (mouseinitialized)
-    {
+	if (mouseinitialized)
+	{
 #ifdef _WIN32
-        bool lockEntered = MouseThread_ActiveLock_Enter();
+		bool lockEntered = MouseThread_ActiveLock_Enter();
 #endif
 
-        IN_SetMouseMode(true);
+		IN_SetMouseMode(true);
 
-        mouseactive = 1;
+		mouseactive = 1;
 
 #ifdef _WIN32
-        UpdateMouseThreadActive();
-        if(lockEntered) MouseThread_ActiveLock_Exit();
+		UpdateMouseThreadActive();
+		if(lockEntered) MouseThread_ActiveLock_Exit();
 #endif
 
-        // now is a good time to reset mouse positon:
-        IN_ResetMouse();
-    }
+		// now is a good time to reset mouse positon:
+		IN_ResetMouse();
+	}
 }
 
 
@@ -473,21 +474,21 @@ IN_DeactivateMouse
 */
 void GoldSourceInput::IN_DeactivateMouse (void)
 {
-    if (mouseinitialized)
-    {
+	if (mouseinitialized)
+	{
 #ifdef _WIN32
-        bool lockEntered = MouseThread_ActiveLock_Enter();
+		bool lockEntered = MouseThread_ActiveLock_Enter();
 #endif
 
-        IN_SetMouseMode(false);
+		IN_SetMouseMode(false);
 
-        mouseactive = 0;
+		mouseactive = 0;
 
 #ifdef _WIN32
-        UpdateMouseThreadActive();
-        if(lockEntered) MouseThread_ActiveLock_Exit();
+		UpdateMouseThreadActive();
+		if(lockEntered) MouseThread_ActiveLock_Exit();
 #endif
-    }
+	}
 }
 
 /*
@@ -497,34 +498,34 @@ IN_StartupMouse
 */
 void GoldSourceInput::IN_StartupMouse (void)
 {
-    if ( gEngfuncs.CheckParm ("-nomouse", NULL ) )
-        return;
+	if ( gEngfuncs.CheckParm ("-nomouse", NULL ) )
+		return;
 
-    mouseinitialized = 1;
+	mouseinitialized = 1;
 #ifdef _WIN32
-    mouseparmsvalid = SystemParametersInfo (SPI_GETMOUSE, 0, originalmouseparms, 0);
+	mouseparmsvalid = SystemParametersInfo (SPI_GETMOUSE, 0, originalmouseparms, 0);
 
-    if (mouseparmsvalid)
-    {
-        if ( gEngfuncs.CheckParm ("-noforcemspd", NULL ) )
-            newmouseparms[2] = originalmouseparms[2];
+	if (mouseparmsvalid)
+	{
+		if ( gEngfuncs.CheckParm ("-noforcemspd", NULL ) )
+			newmouseparms[2] = originalmouseparms[2];
 
-        if ( gEngfuncs.CheckParm ("-noforcemaccel", NULL ) )
-        {
-            newmouseparms[0] = originalmouseparms[0];
-            newmouseparms[1] = originalmouseparms[1];
-        }
+		if ( gEngfuncs.CheckParm ("-noforcemaccel", NULL ) )
+		{
+			newmouseparms[0] = originalmouseparms[0];
+			newmouseparms[1] = originalmouseparms[1];
+		}
 
-        if ( gEngfuncs.CheckParm ("-noforcemparms", NULL ) )
-        {
-            newmouseparms[0] = originalmouseparms[0];
-            newmouseparms[1] = originalmouseparms[1];
-            newmouseparms[2] = originalmouseparms[2];
-        }
-    }
+		if ( gEngfuncs.CheckParm ("-noforcemparms", NULL ) )
+		{
+			newmouseparms[0] = originalmouseparms[0];
+			newmouseparms[1] = originalmouseparms[1];
+			newmouseparms[2] = originalmouseparms[2];
+		}
+	}
 #endif
 
-    mouse_buttons = MOUSE_BUTTON_COUNT;
+	mouse_buttons = MOUSE_BUTTON_COUNT;
 }
 
 /*
@@ -534,43 +535,43 @@ IN_Shutdown
 */
 void GoldSourceInput::IN_Shutdown (void)
 {
-    IN_DeactivateMouse ();
+	IN_DeactivateMouse ();
 
 #ifdef _WIN32
-    if ( s_hMouseQuitEvent )
-    {
-        SetEvent( s_hMouseQuitEvent );
-    }
+	if ( s_hMouseQuitEvent )
+	{
+		SetEvent( s_hMouseQuitEvent );
+	}
 
-    if ( s_hMouseThread )
-    {
-        if(WAIT_OBJECT_0 != WaitForSingleObject( s_hMouseThread, 5000 ))
-        {
-            TerminateThread( s_hMouseThread, 0 );
-        }
-        CloseHandle( s_hMouseThread );
-        s_hMouseThread = (HANDLE)0;
-    }
+	if ( s_hMouseThread )
+	{
+		if(WAIT_OBJECT_0 != WaitForSingleObject( s_hMouseThread, 5000 ))
+		{
+			TerminateThread( s_hMouseThread, 0 );
+		}
+		CloseHandle( s_hMouseThread );
+		s_hMouseThread = (HANDLE)0;
+	}
 
-    if ( s_hMouseQuitEvent )
-    {
-        CloseHandle( s_hMouseQuitEvent );
-        s_hMouseQuitEvent = (HANDLE)0;
-    }
+	if ( s_hMouseQuitEvent )
+	{
+		CloseHandle( s_hMouseQuitEvent );
+		s_hMouseQuitEvent = (HANDLE)0;
+	}
 
-    if( s_hMouseThreadActiveLock )
-    {
-        CloseHandle( s_hMouseThreadActiveLock );
-        s_hMouseThreadActiveLock = (HANDLE)0;
-    }
+	if( s_hMouseThreadActiveLock )
+	{
+		CloseHandle( s_hMouseThreadActiveLock );
+		s_hMouseThreadActiveLock = (HANDLE)0;
+	}
 #endif
 
 #ifdef USE_SDL2
-    for (int j=0; j<ARRAYSIZE(sdlFunctions); ++j) {
-        *(sdlFunctions[j].ppfnFunc) = NULL;
-    }
-    dlclose(sdl2Lib);
-    sdl2Lib = NULL;
+	for (int j=0; j<ARRAYSIZE(sdlFunctions); ++j) {
+		*(sdlFunctions[j].ppfnFunc) = NULL;
+	}
+	dlclose(sdl2Lib);
+	sdl2Lib = NULL;
 #endif
 }
 
@@ -583,7 +584,7 @@ Ask for mouse position from engine
 */
 void IN_GetMousePos( int *mx, int *my )
 {
-    gEngfuncs.GetMousePosition( mx, my );
+	gEngfuncs.GetMousePosition( mx, my );
 }
 
 /*
@@ -595,27 +596,31 @@ FIXME: Call through to engine?
 */
 void IN_ResetMouse( void )
 {
-    // no work to do in SDL
+	// no work to do in SDL
 #ifdef _WIN32
-    // reset only if mouse is active and not in visible mode:
-    if(mouseactive && !iVisibleMouse)
-    {
-        if ( !m_bRawInput && gEngfuncs.GetWindowCenterX && gEngfuncs.GetWindowCenterY )
-        {
-            bool lockEntered = MouseThread_ActiveLock_Enter();
+	// reset only if mouse is active and not in visible mode:
+	if(mouseactive && !iVisibleMouse && gEngfuncs.GetWindowCenterX && gEngfuncs.GetWindowCenterY)
+	{
+		if ( !m_bMouseThread && m_bRawInput )
+		{
+			SetCursorPos ( gEngfuncs.GetWindowCenterX(), gEngfuncs.GetWindowCenterY() );
+		}
+		else if ( !m_bRawInput )
+		{
+			bool lockEntered = MouseThread_ActiveLock_Enter();
 
-            int centerX = gEngfuncs.GetWindowCenterX();
-            int centerY = gEngfuncs.GetWindowCenterY();
+			int centerX = gEngfuncs.GetWindowCenterX();
+			int centerY = gEngfuncs.GetWindowCenterY();
 
-            SetCursorPos ( centerX, centerY );
-            InterlockedExchange( &mouseThreadCenterX, centerX );
-            InterlockedExchange( &mouseThreadCenterY, centerY );
-            InterlockedExchange( &mouseThreadDeltaX, 0 );
-            InterlockedExchange( &mouseThreadDeltaY, 0 );
+			SetCursorPos ( centerX, centerY );
+			InterlockedExchange( &mouseThreadCenterX, centerX );
+			InterlockedExchange( &mouseThreadCenterY, centerY );
+			InterlockedExchange( &mouseThreadDeltaX, 0 );
+			InterlockedExchange( &mouseThreadDeltaY, 0 );
 
-            if(lockEntered) MouseThread_ActiveLock_Exit();
-        }
-    }
+			if(lockEntered) MouseThread_ActiveLock_Exit();
+		}
+	}
 #endif
 }
 
@@ -626,191 +631,191 @@ IN_MouseEvent
 */
 void GoldSourceInput::IN_MouseEvent (int mstate)
 {
-    int     i;
+	int i;
 
-    if ( iMouseInUse || iVisibleMouse )
-        return;
+	if ( iMouseInUse || iVisibleMouse )
+		return;
 
-    // perform button actions
-    for (i=0 ; i<mouse_buttons ; i++)
-    {
-        if ( (mstate & (1<<i)) &&
-            !(mouse_oldbuttonstate & (1<<i)) )
-        {
-            gEngfuncs.Key_Event (K_MOUSE1 + i, 1);
-        }
+	// perform button actions
+	for (i=0 ; i<mouse_buttons ; i++)
+	{
+		if ( (mstate & (1<<i)) &&
+			!(mouse_oldbuttonstate & (1<<i)) )
+		{
+			gEngfuncs.Key_Event (K_MOUSE1 + i, 1);
+		}
 
-        if ( !(mstate & (1<<i)) &&
-            (mouse_oldbuttonstate & (1<<i)) )
-        {
-            gEngfuncs.Key_Event (K_MOUSE1 + i, 0);
-        }
-    }
+		if ( !(mstate & (1<<i)) &&
+			(mouse_oldbuttonstate & (1<<i)) )
+		{
+			gEngfuncs.Key_Event (K_MOUSE1 + i, 0);
+		}
+	}
 
-    mouse_oldbuttonstate = mstate;
+	mouse_oldbuttonstate = mstate;
 }
 
 //-----------------------------------------------------------------------------
 // Purpose: Allows modulation of mouse scaling/senstivity value and application
 //  of custom algorithms.
-// Input  : *x -
+// Input :  *x -
 //          *y -
 //-----------------------------------------------------------------------------
 void IN_ScaleMouse( float *x, float *y )
 {
-    float mx = *x;
-    float my = *y;
+	float mx = *x;
+	float my = *y;
 
-    // This is the default sensitivity
-    float mouse_senstivity = ( gHUD.GetSensitivity() != 0 ) ? gHUD.GetSensitivity() : sensitivity->value;
+	// This is the default sensitivity
+	float mouse_senstivity = ( gHUD.GetSensitivity() != 0 ) ? gHUD.GetSensitivity() : sensitivity->value;
 
-    // Using special accleration values
-    if ( m_customaccel->value != 0 )
-    {
-        float raw_mouse_movement_distance = sqrt( mx * mx + my * my );
-        float acceleration_scale = m_customaccel_scale->value;
-        float accelerated_sensitivity_max = m_customaccel_max->value;
-        float accelerated_sensitivity_exponent = m_customaccel_exponent->value;
-        float accelerated_sensitivity = ( (float)pow( raw_mouse_movement_distance, accelerated_sensitivity_exponent ) * acceleration_scale + mouse_senstivity );
+	// Using special accleration values
+	if ( m_customaccel->value != 0 )
+	{
+		float raw_mouse_movement_distance = sqrt( mx * mx + my * my );
+		float acceleration_scale = m_customaccel_scale->value;
+		float accelerated_sensitivity_max = m_customaccel_max->value;
+		float accelerated_sensitivity_exponent = m_customaccel_exponent->value;
+		float accelerated_sensitivity = ( (float)pow( raw_mouse_movement_distance, accelerated_sensitivity_exponent ) * acceleration_scale + mouse_senstivity );
 
-        if ( accelerated_sensitivity_max > 0.0001f &&
-            accelerated_sensitivity > accelerated_sensitivity_max )
-        {
-            accelerated_sensitivity = accelerated_sensitivity_max;
-        }
+		if ( accelerated_sensitivity_max > 0.0001f &&
+			accelerated_sensitivity > accelerated_sensitivity_max )
+		{
+			accelerated_sensitivity = accelerated_sensitivity_max;
+		}
 
-        *x *= accelerated_sensitivity;
-        *y *= accelerated_sensitivity;
+		*x *= accelerated_sensitivity;
+		*y *= accelerated_sensitivity;
 
-        // Further re-scale by yaw and pitch magnitude if user requests alternate mode 2
-        // This means that they will need to up their value for m_customaccel_scale greatly (>40x) since m_pitch/yaw default
-        //  to 0.022
-        if ( m_customaccel->value == 2 )
-        {
-            *x *= m_yaw->value;
-            *y *= m_pitch->value;
-        }
-    }
-    else
-    {
-        // Just apply the default
-        *x *= mouse_senstivity;
-        *y *= mouse_senstivity;
-    }
+		// Further re-scale by yaw and pitch magnitude if user requests alternate mode 2
+		// This means that they will need to up their value for m_customaccel_scale greatly (>40x) since m_pitch/yaw default
+		//  to 0.022
+		if ( m_customaccel->value == 2 )
+		{
+			*x *= m_yaw->value;
+			*y *= m_pitch->value;
+		}
+	}
+	else
+	{
+		// Just apply the default
+		*x *= mouse_senstivity;
+		*y *= mouse_senstivity;
+	}
 }
 
 void GoldSourceInput::IN_GetMouseDelta( int *pOutX, int *pOutY)
 {
-    bool active = mouseactive && !iVisibleMouse;
-    int mx, my;
+	bool active = mouseactive && !iVisibleMouse;
+	int mx, my;
 
-    if(active)
-    {
-        int deltaX, deltaY;
+	if(active)
+	{
+		int deltaX, deltaY;
 #ifdef _WIN32
-        if ( !m_bRawInput )
-        {
-            if ( m_bMouseThread )
-            {
-                // update mouseThreadSleep:
-                InterlockedExchange(&mouseThreadSleep, (LONG)m_mousethread_sleep->value);
+		if ( !m_bRawInput )
+		{
+			if ( m_bMouseThread )
+			{
+				// update mouseThreadSleep:
+				InterlockedExchange(&mouseThreadSleep, (LONG)m_mousethread_sleep->value);
 
-                bool lockEntered = MouseThread_ActiveLock_Enter();
+				bool lockEntered = MouseThread_ActiveLock_Enter();
 
-                current_pos.x = InterlockedExchange( &mouseThreadDeltaX, 0 );
-                current_pos.y = InterlockedExchange( &mouseThreadDeltaY, 0 );
+				current_pos.x = InterlockedExchange( &mouseThreadDeltaX, 0 );
+				current_pos.y = InterlockedExchange( &mouseThreadDeltaY, 0 );
 
-                if(lockEntered) MouseThread_ActiveLock_Exit();
-            }
-            else
-            {
-                GetCursorPos (&current_pos);
-            }
-        }
-        else
+				if(lockEntered) MouseThread_ActiveLock_Exit();
+			}
+			else
+			{
+				GetCursorPos (&current_pos);
+			}
+		}
+		else
 #endif
-        {
+		{
 #ifdef USE_SDL2
-            safe_pfnSDL_GetRelativeMouseState( &deltaX, &deltaY );
-            current_pos.x = deltaX;
-            current_pos.y = deltaY;
+			safe_pfnSDL_GetRelativeMouseState( &deltaX, &deltaY );
+			current_pos.x = deltaX;
+			current_pos.y = deltaY;
 #else
-            GetCursorPos (&current_pos);
-            deltaX = current_pos.x - gEngfuncs.GetWindowCenterX();
-            deltaY = current_pos.y - gEngfuncs.GetWindowCenterY();
+			GetCursorPos (&current_pos);
+			deltaX = current_pos.x - gEngfuncs.GetWindowCenterX();
+			deltaY = current_pos.y - gEngfuncs.GetWindowCenterY();
 #endif
-        }
+		}
 
 #ifdef _WIN32
-        if ( !m_bRawInput )
-        {
-            if ( m_bMouseThread )
-            {
-                mx = current_pos.x;
-                my = current_pos.y;
-            }
-            else
-            {
-                mx = current_pos.x - gEngfuncs.GetWindowCenterX() + mx_accum;
-                my = current_pos.y - gEngfuncs.GetWindowCenterY() + my_accum;
-            }
-        }
-        else
+		if ( !m_bRawInput )
+		{
+			if ( m_bMouseThread )
+			{
+				mx = current_pos.x;
+				my = current_pos.y;
+			}
+			else
+			{
+				mx = current_pos.x - gEngfuncs.GetWindowCenterX() + mx_accum;
+				my = current_pos.y - gEngfuncs.GetWindowCenterY() + my_accum;
+			}
+		}
+		else
 #endif
-        {
-            mx = deltaX + mx_accum;
-            my = deltaY + my_accum;
-        }
+		{
+			mx = deltaX + mx_accum;
+			my = deltaY + my_accum;
+		}
 
-        mx_accum = 0;
-        my_accum = 0;
+		mx_accum = 0;
+		my_accum = 0;
 
-        // reset mouse position if required, so there is room to move:
+		// reset mouse position if required, so there is room to move:
 #ifdef _WIN32
-        // do not reset if mousethread would do it:
-        if ( m_bRawInput || !m_bMouseThread )
+		// do not reset if mousethread would do it:
+		if ( m_bRawInput || !m_bMouseThread )
 #else
-        if(true)
+		if(true)
 #endif
-            IN_ResetMouse();
+			IN_ResetMouse();
 
 #ifdef _WIN32
-        // update m_bRawInput occasionally:
-        if ( gpGlobals && gpGlobals->time - s_flRawInputUpdateTime > 1.0f )
-        {
-            s_flRawInputUpdateTime = gpGlobals->time;
+		// update m_bRawInput occasionally:
+		if ( gpGlobals && gpGlobals->time - s_flRawInputUpdateTime > 1.0f )
+		{
+			s_flRawInputUpdateTime = gpGlobals->time;
 
-            bool lockEntered = MouseThread_ActiveLock_Enter();
+			bool lockEntered = MouseThread_ActiveLock_Enter();
 
-            m_bRawInput = CVAR_GET_FLOAT( "m_rawinput" ) != 0;
+			m_bRawInput = CVAR_GET_FLOAT( "m_rawinput" ) != 0;
 
-            if(m_bRawInput && !isMouseRelative)
-            {
+			if(m_bRawInput && !isMouseRelative)
+			{
 #ifdef USE_SDL2
-                safe_pfnSDL_SetRelativeMouseMode(SDL_TRUE);
+				safe_pfnSDL_SetRelativeMouseMode(SDL_TRUE);
 #endif
-                isMouseRelative = true;
-            }
-            else if(!m_bRawInput && isMouseRelative)
-            {
+				isMouseRelative = true;
+			}
+			else if(!m_bRawInput && isMouseRelative)
+			{
 #ifdef USE_SDL2
-                safe_pfnSDL_SetRelativeMouseMode(SDL_FALSE);
+				safe_pfnSDL_SetRelativeMouseMode(SDL_FALSE);
 #endif
-                isMouseRelative = false;
-            }
+				isMouseRelative = false;
+			}
 
-            UpdateMouseThreadActive();
-            if(lockEntered) MouseThread_ActiveLock_Exit();
-        }
+			UpdateMouseThreadActive();
+			if(lockEntered) MouseThread_ActiveLock_Exit();
+		}
 #endif
-    }
-    else
-    {
-        mx = my = 0;
-    }
+	}
+	else
+	{
+		mx = my = 0;
+	}
 
-    if(pOutX) *pOutX = mx;
-    if(pOutY) *pOutY = my;
+	if(pOutX) *pOutX = mx;
+	if(pOutY) *pOutY = my;
 }
 
 /*
@@ -820,77 +825,93 @@ IN_MouseMove
 */
 void GoldSourceInput::IN_MouseMove ( float frametime, usercmd_t *cmd)
 {
-    int     mx, my;
-    vec3_t viewangles;
+	int	 mx, my;
+	vec3_t viewangles;
 
-    gEngfuncs.GetViewAngles( (float *)viewangles );
+	if( gHUD.m_iIntermission )
+		return; // we can't move during intermission
 
-    if ( in_mlook.state & 1)
-    {
-        V_StopPitchDrift ();
-    }
+	if( CL_IsDead() )
+	{
+		viewangles = dead_viewangles; // HACKHACK: see below
+	}
+	else
+	{
+		gEngfuncs.GetViewAngles( viewangles );
+	}
 
-    //jjb - this disbles normal mouse control if the user is trying to
-    //      move the camera, or if the mouse cursor is visible or if we're in intermission
-    if ( !iMouseInUse && !gHUD.m_iIntermission && !iVisibleMouse )
-    {
-        IN_GetMouseDelta( &mx, &my );
+	if ( in_mlook.state & 1)
+	{
+		V_StopPitchDrift ();
+	}
 
-        if (m_filter && m_filter->value)
-        {
-            mouse_x = (mx + old_mouse_x) * 0.5;
-            mouse_y = (my + old_mouse_y) * 0.5;
-        }
-        else
-        {
-            mouse_x = mx;
-            mouse_y = my;
-        }
+	//jjb - this disbles normal mouse control if the user is trying to
+	//  move the camera, or if the mouse cursor is visible or if we're in intermission
+	if ( !iMouseInUse && !gHUD.m_iIntermission && !iVisibleMouse )
+	{
+		IN_GetMouseDelta( &mx, &my );
 
-        old_mouse_x = mx;
-        old_mouse_y = my;
+		if (m_filter && m_filter->value)
+		{
+			mouse_x = (mx + old_mouse_x) * 0.5;
+			mouse_y = (my + old_mouse_y) * 0.5;
+		}
+		else
+		{
+			mouse_x = mx;
+			mouse_y = my;
+		}
 
-        // Apply custom mouse scaling/acceleration
-        IN_ScaleMouse( &mouse_x, &mouse_y );
+		old_mouse_x = mx;
+		old_mouse_y = my;
 
-        // add mouse X/Y movement to cmd
-        if ( (in_strafe.state & 1) || (lookstrafe->value && (in_mlook.state & 1) ))
-            cmd->sidemove += m_side->value * mouse_x;
-        else
-            viewangles[YAW] -= m_yaw->value * mouse_x;
+		// Apply custom mouse scaling/acceleration
+		IN_ScaleMouse( &mouse_x, &mouse_y );
 
-        if ( (in_mlook.state & 1) && !(in_strafe.state & 1))
-        {
-            viewangles[PITCH] += m_pitch->value * mouse_y;
-            if (viewangles[PITCH] > cl_pitchdown->value)
-                viewangles[PITCH] = cl_pitchdown->value;
-            if (viewangles[PITCH] < -cl_pitchup->value)
-                viewangles[PITCH] = -cl_pitchup->value;
-        }
-        else
-        {
-            if ((in_strafe.state & 1) && gEngfuncs.IsNoClipping() )
-            {
-                cmd->upmove -= m_forward->value * mouse_y;
-            }
-            else
-            {
-                cmd->forwardmove -= m_forward->value * mouse_y;
-            }
-        }
-    }
+		// add mouse X/Y movement to cmd
+		if ( (in_strafe.state & 1) || (lookstrafe->value && (in_mlook.state & 1) ))
+			cmd->sidemove += m_side->value * mouse_x;
+		else
+			viewangles[YAW] -= m_yaw->value * mouse_x;
 
-    gEngfuncs.SetViewAngles( (float *)viewangles );
+		if ( (in_mlook.state & 1) && !(in_strafe.state & 1))
+		{
+			viewangles[PITCH] += m_pitch->value * mouse_y;
+			if (viewangles[PITCH] > cl_pitchdown->value)
+				viewangles[PITCH] = cl_pitchdown->value;
+			if (viewangles[PITCH] < -cl_pitchup->value)
+				viewangles[PITCH] = -cl_pitchup->value;
+		}
+		else
+		{
+			if ((in_strafe.state & 1) && gEngfuncs.IsNoClipping() )
+			{
+				cmd->upmove -= m_forward->value * mouse_y;
+			}
+			else
+			{
+				cmd->forwardmove -= m_forward->value * mouse_y;
+			}
+		}
+	}
 
+	// HACKHACK: change viewangles directly in viewcode,
+	// so viewangles when player is dead will not be changed on server
+	if( !CL_IsDead() )
+	{
+		gEngfuncs.SetViewAngles( viewangles );
+	}
+
+	dead_viewangles = viewangles; // keep them actual
 /*
 //#define TRACE_TEST
 #if defined( TRACE_TEST )
-    {
-        int mx, my;
-        void V_Move( int mx, int my );
-        IN_GetMousePos( &mx, &my );
-        V_Move( mx, my );
-    }
+	{
+		int mx, my;
+		void V_Move( int mx, int my );
+		IN_GetMousePos( &mx, &my );
+		V_Move( mx, my );
+	}
 #endif
 */
 }
@@ -902,49 +923,49 @@ IN_Accumulate
 */
 void GoldSourceInput::IN_Accumulate (void)
 {
-    //only accumulate mouse if we are not moving the camera with the mouse
-    if ( !iMouseInUse && !iVisibleMouse)
-    {
-        if (mouseactive)
-        {
+	//only accumulate mouse if we are not moving the camera with the mouse
+	if ( !iMouseInUse && !iVisibleMouse)
+	{
+		if (mouseactive)
+		{
 #ifdef _WIN32
-            if ( !m_bRawInput )
-            {
-                if ( !m_bMouseThread )
-                {
-                    GetCursorPos (&current_pos);
+			if ( !m_bRawInput )
+			{
+				if ( !m_bMouseThread )
+				{
+					GetCursorPos (&current_pos);
 
-                    mx_accum += current_pos.x - gEngfuncs.GetWindowCenterX();
-                    my_accum += current_pos.y - gEngfuncs.GetWindowCenterY();
-                }
-            }
-            else
+					mx_accum += current_pos.x - gEngfuncs.GetWindowCenterX();
+					my_accum += current_pos.y - gEngfuncs.GetWindowCenterY();
+				}
+			}
+			else
 #endif
-            {
+			{
 #ifdef USE_SDL2
-                int deltaX, deltaY;
-                safe_pfnSDL_GetRelativeMouseState( &deltaX, &deltaY );
-                mx_accum += deltaX;
-                my_accum += deltaY;
+				int deltaX, deltaY;
+				safe_pfnSDL_GetRelativeMouseState( &deltaX, &deltaY );
+				mx_accum += deltaX;
+				my_accum += deltaY;
 #else
-                GetCursorPos (&current_pos);
+				GetCursorPos (&current_pos);
 
-                mx_accum += current_pos.x - gEngfuncs.GetWindowCenterX();
-                my_accum += current_pos.y - gEngfuncs.GetWindowCenterY();
+				mx_accum += current_pos.x - gEngfuncs.GetWindowCenterX();
+				my_accum += current_pos.y - gEngfuncs.GetWindowCenterY();
 #endif
-            }
+			}
 
-            // force the mouse to the center, so there's room to move
+			// force the mouse to the center, so there's room to move
 #ifdef _WIN32
-            // do not reset if mousethread would do it:
-            if ( m_bRawInput || !m_bMouseThread )
+			// do not reset if mousethread would do it:
+			if ( m_bRawInput || !m_bMouseThread )
 #else
-            if(true)
+			if(true)
 #endif
-                IN_ResetMouse();
+				IN_ResetMouse();
 
-        }
-    }
+		}
+	}
 
 }
 
@@ -955,12 +976,12 @@ IN_ClearStates
 */
 void GoldSourceInput::IN_ClearStates (void)
 {
-    if ( !mouseactive )
-        return;
+	if ( !mouseactive )
+		return;
 
-    mx_accum = 0;
-    my_accum = 0;
-    mouse_oldbuttonstate = 0;
+	mx_accum = 0;
+	my_accum = 0;
+	mouse_oldbuttonstate = 0;
 }
 
 /*
@@ -970,136 +991,136 @@ IN_StartupJoystick
 */
 void IN_StartupJoystick (void)
 {
-    // abort startup if user requests no joystick
-    if ( gEngfuncs.CheckParm ("-nojoy", NULL ) )
-        return;
+	// abort startup if user requests no joystick
+	if ( gEngfuncs.CheckParm ("-nojoy", NULL ) )
+		return;
 
-    // assume no joystick
-    joy_avail = 0;
+	// assume no joystick
+	joy_avail = 0;
 #ifdef USE_SDL2
-    int nJoysticks = safe_pfnSDL_NumJoysticks();
-    if ( nJoysticks > 0 )
-    {
-        for ( int i = 0; i < nJoysticks; i++ )
-        {
-            if ( safe_pfnSDL_IsGameController( i ) )
-            {
-                s_pJoystick = safe_pfnSDL_GameControllerOpen( i );
-                if ( s_pJoystick )
-                {
-                    //save the joystick's number of buttons and POV status
-                    joy_numbuttons = SDL_CONTROLLER_BUTTON_MAX;
-                    joy_haspov = 0;
+	int nJoysticks = safe_pfnSDL_NumJoysticks();
+	if ( nJoysticks > 0 )
+	{
+		for ( int i = 0; i < nJoysticks; i++ )
+		{
+			if ( safe_pfnSDL_IsGameController( i ) )
+			{
+				s_pJoystick = safe_pfnSDL_GameControllerOpen( i );
+				if ( s_pJoystick )
+				{
+					//save the joystick's number of buttons and POV status
+					joy_numbuttons = SDL_CONTROLLER_BUTTON_MAX;
+					joy_haspov = 0;
 
-                    // old button and POV states default to no buttons pressed
-                    joy_oldbuttonstate = joy_oldpovstate = 0;
+					// old button and POV states default to no buttons pressed
+					joy_oldbuttonstate = joy_oldpovstate = 0;
 
-                    // mark the joystick as available and advanced initialization not completed
-                    // this is needed as cvars are not available during initialization
-                    gEngfuncs.Con_Printf ("joystick found\n\n", safe_pfnSDL_GameControllerName(s_pJoystick));
-                    joy_avail = 1;
-                    joy_advancedinit = 0;
-                    break;
-                }
-            }
-        }
-    }
-    else
-    {
-        gEngfuncs.Con_DPrintf ("joystick not found -- driver not present\n\n");
-    }
+					// mark the joystick as available and advanced initialization not completed
+					// this is needed as cvars are not available during initialization
+					gEngfuncs.Con_Printf ("joystick found\n\n", safe_pfnSDL_GameControllerName(s_pJoystick));
+					joy_avail = 1;
+					joy_advancedinit = 0;
+					break;
+				}
+			}
+		}
+	}
+	else
+	{
+		gEngfuncs.Con_DPrintf ("joystick not found -- driver not present\n\n");
+	}
 #elif defined(_WIN32)
-    int numdevs;
-    JOYCAPS jc;
-    MMRESULT mmr;
-    // verify joystick driver is present
-    if ((numdevs = joyGetNumDevs ()) == 0)
-    {
-        gEngfuncs.Con_DPrintf ("joystick not found -- driver not present\n\n");
-        return;
-    }
+	int numdevs;
+	JOYCAPS jc;
+	MMRESULT mmr;
+	// verify joystick driver is present
+	if ((numdevs = joyGetNumDevs ()) == 0)
+	{
+		gEngfuncs.Con_DPrintf ("joystick not found -- driver not present\n\n");
+		return;
+	}
 
-    // cycle through the joystick ids for the first valid one
-    for (joy_id=0 ; joy_id<numdevs ; joy_id++)
-    {
-        memset (&ji, 0, sizeof(ji));
-        ji.dwSize = sizeof(ji);
-        ji.dwFlags = JOY_RETURNCENTERED;
+	// cycle through the joystick ids for the first valid one
+	for (joy_id=0 ; joy_id<numdevs ; joy_id++)
+	{
+		memset (&ji, 0, sizeof(ji));
+		ji.dwSize = sizeof(ji);
+		ji.dwFlags = JOY_RETURNCENTERED;
 
-        if ((mmr = joyGetPosEx (joy_id, &ji)) == JOYERR_NOERROR)
-            break;
-    }
+		if ((mmr = joyGetPosEx (joy_id, &ji)) == JOYERR_NOERROR)
+			break;
+	}
 
-    // abort startup if we didn't find a valid joystick
-    if (mmr != JOYERR_NOERROR)
-    {
-        gEngfuncs.Con_DPrintf ("joystick not found -- no valid joysticks (%x)\n\n", mmr);
-        return;
-    }
+	// abort startup if we didn't find a valid joystick
+	if (mmr != JOYERR_NOERROR)
+	{
+		gEngfuncs.Con_DPrintf ("joystick not found -- no valid joysticks (%x)\n\n", mmr);
+		return;
+	}
 
-    // get the capabilities of the selected joystick
-    // abort startup if command fails
-    memset (&jc, 0, sizeof(jc));
-    if ((mmr = joyGetDevCaps (joy_id, &jc, sizeof(jc))) != JOYERR_NOERROR)
-    {
-        gEngfuncs.Con_DPrintf ("joystick not found -- invalid joystick capabilities (%x)\n\n", mmr);
-        return;
-    }
+	// get the capabilities of the selected joystick
+	// abort startup if command fails
+	memset (&jc, 0, sizeof(jc));
+	if ((mmr = joyGetDevCaps (joy_id, &jc, sizeof(jc))) != JOYERR_NOERROR)
+	{
+		gEngfuncs.Con_DPrintf ("joystick not found -- invalid joystick capabilities (%x)\n\n", mmr);
+		return;
+	}
 
-    // save the joystick's number of buttons and POV status
-    joy_numbuttons = jc.wNumButtons;
-    joy_haspov = jc.wCaps & JOYCAPS_HASPOV;
+	// save the joystick's number of buttons and POV status
+	joy_numbuttons = jc.wNumButtons;
+	joy_haspov = jc.wCaps & JOYCAPS_HASPOV;
 
-    // old button and POV states default to no buttons pressed
-    joy_oldbuttonstate = joy_oldpovstate = 0;
+	// old button and POV states default to no buttons pressed
+	joy_oldbuttonstate = joy_oldpovstate = 0;
 
-    // mark the joystick as available and advanced initialization not completed
-    // this is needed as cvars are not available during initialization
-    gEngfuncs.Con_Printf ("joystick found\n\n", mmr);
-    joy_avail = 1;
-    joy_advancedinit = 0;
+	// mark the joystick as available and advanced initialization not completed
+	// this is needed as cvars are not available during initialization
+	gEngfuncs.Con_Printf ("joystick found\n\n", mmr);
+	joy_avail = 1;
+	joy_advancedinit = 0;
 #else
-    gEngfuncs.Con_DPrintf ("joystick not found -- implement joystick without SDL2\n\n");
+	gEngfuncs.Con_DPrintf ("joystick not found -- implement joystick without SDL2\n\n");
 #endif
 }
 
 #ifdef USE_SDL2
 int RawValuePointer (int axis)
 {
-    switch (axis)
-    {
-    default:
-    case JOY_AXIS_X:
-        return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_LEFTX );
-    case JOY_AXIS_Y:
-        return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_LEFTY );
-    case JOY_AXIS_Z:
-        return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_RIGHTX );
-    case JOY_AXIS_R:
-        return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_RIGHTY );
+	switch (axis)
+	{
+	default:
+	case JOY_AXIS_X:
+		return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_LEFTX );
+	case JOY_AXIS_Y:
+		return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_LEFTY );
+	case JOY_AXIS_Z:
+		return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_RIGHTX );
+	case JOY_AXIS_R:
+		return safe_pfnSDL_GameControllerGetAxis( s_pJoystick, SDL_CONTROLLER_AXIS_RIGHTY );
 
-    }
+	}
 }
 #elif defined(_WIN32)
 PDWORD RawValuePointer (int axis)
 {
-    switch (axis)
-    {
-    case JOY_AXIS_X:
-        return &ji.dwXpos;
-    case JOY_AXIS_Y:
-        return &ji.dwYpos;
-    case JOY_AXIS_Z:
-        return &ji.dwZpos;
-    case JOY_AXIS_R:
-        return &ji.dwRpos;
-    case JOY_AXIS_U:
-        return &ji.dwUpos;
-    case JOY_AXIS_V:
-        return &ji.dwVpos;
-    }
-    // FIX: need to do some kind of error
-    return &ji.dwXpos;
+	switch (axis)
+	{
+	case JOY_AXIS_X:
+		return &ji.dwXpos;
+	case JOY_AXIS_Y:
+		return &ji.dwYpos;
+	case JOY_AXIS_Z:
+		return &ji.dwZpos;
+	case JOY_AXIS_R:
+		return &ji.dwRpos;
+	case JOY_AXIS_U:
+		return &ji.dwUpos;
+	case JOY_AXIS_V:
+		return &ji.dwVpos;
+	}
+	// FIX: need to do some kind of error
+	return &ji.dwXpos;
 }
 #endif
 
@@ -1111,68 +1132,68 @@ Joy_AdvancedUpdate_f
 void Joy_AdvancedUpdate_f (void)
 {
 
-    // called once by IN_ReadJoystick and by user whenever an update is needed
-    // cvars are now available
-    int i;
-    DWORD dwTemp;
+	// called once by IN_ReadJoystick and by user whenever an update is needed
+	// cvars are now available
+	int i;
+	DWORD dwTemp;
 
-    // initialize all the maps
-    for (i = 0; i < JOY_MAX_AXES; i++)
-    {
-        dwAxisMap[i] = AxisNada;
-        dwControlMap[i] = JOY_ABSOLUTE_AXIS;
-        pdwRawValue[i] = RawValuePointer(i);
-    }
+	// initialize all the maps
+	for (i = 0; i < JOY_MAX_AXES; i++)
+	{
+		dwAxisMap[i] = AxisNada;
+		dwControlMap[i] = JOY_ABSOLUTE_AXIS;
+		pdwRawValue[i] = RawValuePointer(i);
+	}
 
-    if( joy_advanced->value == 0.0)
-    {
-        // default joystick initialization
-        // 2 axes only with joystick control
-        dwAxisMap[JOY_AXIS_X] = AxisTurn;
-        // dwControlMap[JOY_AXIS_X] = JOY_ABSOLUTE_AXIS;
-        dwAxisMap[JOY_AXIS_Y] = AxisForward;
-        // dwControlMap[JOY_AXIS_Y] = JOY_ABSOLUTE_AXIS;
-    }
-    else
-    {
-        if ( strcmp ( joy_name->string, "joystick") != 0 )
-        {
-            // notify user of advanced controller
-            gEngfuncs.Con_Printf ("\n%s configured\n\n", joy_name->string);
-        }
+	if( joy_advanced->value == 0.0)
+	{
+		// default joystick initialization
+		// 2 axes only with joystick control
+		dwAxisMap[JOY_AXIS_X] = AxisTurn;
+		// dwControlMap[JOY_AXIS_X] = JOY_ABSOLUTE_AXIS;
+		dwAxisMap[JOY_AXIS_Y] = AxisForward;
+		// dwControlMap[JOY_AXIS_Y] = JOY_ABSOLUTE_AXIS;
+	}
+	else
+	{
+		if ( strcmp ( joy_name->string, "joystick") != 0 )
+		{
+			// notify user of advanced controller
+			gEngfuncs.Con_Printf ("\n%s configured\n\n", joy_name->string);
+		}
 
-        // advanced initialization here
-        // data supplied by user via joy_axisn cvars
-        dwTemp = (DWORD) joy_advaxisx->value;
-        dwAxisMap[JOY_AXIS_X] = dwTemp & 0x0000000f;
-        dwControlMap[JOY_AXIS_X] = dwTemp & JOY_RELATIVE_AXIS;
-        dwTemp = (DWORD) joy_advaxisy->value;
-        dwAxisMap[JOY_AXIS_Y] = dwTemp & 0x0000000f;
-        dwControlMap[JOY_AXIS_Y] = dwTemp & JOY_RELATIVE_AXIS;
-        dwTemp = (DWORD) joy_advaxisz->value;
-        dwAxisMap[JOY_AXIS_Z] = dwTemp & 0x0000000f;
-        dwControlMap[JOY_AXIS_Z] = dwTemp & JOY_RELATIVE_AXIS;
-        dwTemp = (DWORD) joy_advaxisr->value;
-        dwAxisMap[JOY_AXIS_R] = dwTemp & 0x0000000f;
-        dwControlMap[JOY_AXIS_R] = dwTemp & JOY_RELATIVE_AXIS;
-        dwTemp = (DWORD) joy_advaxisu->value;
-        dwAxisMap[JOY_AXIS_U] = dwTemp & 0x0000000f;
-        dwControlMap[JOY_AXIS_U] = dwTemp & JOY_RELATIVE_AXIS;
-        dwTemp = (DWORD) joy_advaxisv->value;
-        dwAxisMap[JOY_AXIS_V] = dwTemp & 0x0000000f;
-        dwControlMap[JOY_AXIS_V] = dwTemp & JOY_RELATIVE_AXIS;
-    }
+		// advanced initialization here
+		// data supplied by user via joy_axisn cvars
+		dwTemp = (DWORD) joy_advaxisx->value;
+		dwAxisMap[JOY_AXIS_X] = dwTemp & 0x0000000f;
+		dwControlMap[JOY_AXIS_X] = dwTemp & JOY_RELATIVE_AXIS;
+		dwTemp = (DWORD) joy_advaxisy->value;
+		dwAxisMap[JOY_AXIS_Y] = dwTemp & 0x0000000f;
+		dwControlMap[JOY_AXIS_Y] = dwTemp & JOY_RELATIVE_AXIS;
+		dwTemp = (DWORD) joy_advaxisz->value;
+		dwAxisMap[JOY_AXIS_Z] = dwTemp & 0x0000000f;
+		dwControlMap[JOY_AXIS_Z] = dwTemp & JOY_RELATIVE_AXIS;
+		dwTemp = (DWORD) joy_advaxisr->value;
+		dwAxisMap[JOY_AXIS_R] = dwTemp & 0x0000000f;
+		dwControlMap[JOY_AXIS_R] = dwTemp & JOY_RELATIVE_AXIS;
+		dwTemp = (DWORD) joy_advaxisu->value;
+		dwAxisMap[JOY_AXIS_U] = dwTemp & 0x0000000f;
+		dwControlMap[JOY_AXIS_U] = dwTemp & JOY_RELATIVE_AXIS;
+		dwTemp = (DWORD) joy_advaxisv->value;
+		dwAxisMap[JOY_AXIS_V] = dwTemp & 0x0000000f;
+		dwControlMap[JOY_AXIS_V] = dwTemp & JOY_RELATIVE_AXIS;
+	}
 
 #if !defined(USE_SDL2) && defined(_WIN32)
-    // compute the axes to collect from DirectInput
-    joy_flags = JOY_RETURNCENTERED | JOY_RETURNBUTTONS | JOY_RETURNPOV;
-    for (i = 0; i < JOY_MAX_AXES; i++)
-    {
-        if (dwAxisMap[i] != AxisNada)
-        {
-            joy_flags |= dwAxisFlags[i];
-        }
-    }
+	// compute the axes to collect from DirectInput
+	joy_flags = JOY_RETURNCENTERED | JOY_RETURNBUTTONS | JOY_RETURNPOV;
+	for (i = 0; i < JOY_MAX_AXES; i++)
+	{
+		if (dwAxisMap[i] != AxisNada)
+		{
+			joy_flags |= dwAxisFlags[i];
+		}
+	}
 #endif
 }
 
@@ -1184,85 +1205,85 @@ IN_Commands
 */
 void GoldSourceInput::IN_Commands (void)
 {
-    int     i, key_index;
+	int	 i, key_index;
 
-    if (!joy_avail)
-    {
-        return;
-    }
+	if (!joy_avail)
+	{
+		return;
+	}
 
-    DWORD   buttonstate, povstate;
+	DWORD   buttonstate, povstate;
 
-    // loop through the joystick buttons
-    // key a joystick event or auxillary event for higher number buttons for each state change
+	// loop through the joystick buttons
+	// key a joystick event or auxillary event for higher number buttons for each state change
 #ifdef USE_SDL2
-    buttonstate = 0;
-    for ( i = 0; i < SDL_CONTROLLER_BUTTON_MAX; i++ )
-    {
-        if ( safe_pfnSDL_GameControllerGetButton( s_pJoystick, (SDL_GameControllerButton)i ) )
-        {
-            buttonstate |= 1<<i;
-        }
-    }
+	buttonstate = 0;
+	for ( i = 0; i < SDL_CONTROLLER_BUTTON_MAX; i++ )
+	{
+		if ( safe_pfnSDL_GameControllerGetButton( s_pJoystick, (SDL_GameControllerButton)i ) )
+		{
+			buttonstate |= 1<<i;
+		}
+	}
 
-    for (i = 0; i < JOY_MAX_AXES; i++)
-    {
-        pdwRawValue[i] = RawValuePointer(i);
-    }
+	for (i = 0; i < JOY_MAX_AXES; i++)
+	{
+		pdwRawValue[i] = RawValuePointer(i);
+	}
 #elif defined(_WIN32)
-    buttonstate = ji.dwButtons;
+	buttonstate = ji.dwButtons;
 #endif
 
-    for (i=0 ; i < (int)joy_numbuttons ; i++)
-    {
-        if ( (buttonstate & (1<<i)) && !(joy_oldbuttonstate & (1<<i)) )
-        {
-            key_index = (i < 4) ? K_JOY1 : K_AUX1;
-            gEngfuncs.Key_Event (key_index + i, 1);
-        }
+	for (i=0 ; i < (int)joy_numbuttons ; i++)
+	{
+		if ( (buttonstate & (1<<i)) && !(joy_oldbuttonstate & (1<<i)) )
+		{
+			key_index = (i < 4) ? K_JOY1 : K_AUX1;
+			gEngfuncs.Key_Event (key_index + i, 1);
+		}
 
-        if ( !(buttonstate & (1<<i)) && (joy_oldbuttonstate & (1<<i)) )
-        {
-            key_index = (i < 4) ? K_JOY1 : K_AUX1;
-            gEngfuncs.Key_Event (key_index + i, 0);
-        }
-    }
-    joy_oldbuttonstate = buttonstate;
+		if ( !(buttonstate & (1<<i)) && (joy_oldbuttonstate & (1<<i)) )
+		{
+			key_index = (i < 4) ? K_JOY1 : K_AUX1;
+			gEngfuncs.Key_Event (key_index + i, 0);
+		}
+	}
+	joy_oldbuttonstate = buttonstate;
 
-    if (joy_haspov)
-    {
-        // convert POV information into 4 bits of state information
-        // this avoids any potential problems related to moving from one
-        // direction to another without going through the center position
-        povstate = 0;
+	if (joy_haspov)
+	{
+		// convert POV information into 4 bits of state information
+		// this avoids any potential problems related to moving from one
+		// direction to another without going through the center position
+		povstate = 0;
 #if !defined(USE_SDL2) && defined(_WIN32)
-        if(ji.dwPOV != JOY_POVCENTERED)
-        {
-            if (ji.dwPOV == JOY_POVFORWARD)
-                povstate |= 0x01;
-            if (ji.dwPOV == JOY_POVRIGHT)
-                povstate |= 0x02;
-            if (ji.dwPOV == JOY_POVBACKWARD)
-                povstate |= 0x04;
-            if (ji.dwPOV == JOY_POVLEFT)
-                povstate |= 0x08;
-        }
+		if(ji.dwPOV != JOY_POVCENTERED)
+		{
+			if (ji.dwPOV == JOY_POVFORWARD)
+				povstate |= 0x01;
+			if (ji.dwPOV == JOY_POVRIGHT)
+				povstate |= 0x02;
+			if (ji.dwPOV == JOY_POVBACKWARD)
+				povstate |= 0x04;
+			if (ji.dwPOV == JOY_POVLEFT)
+				povstate |= 0x08;
+		}
 #endif
-        // determine which bits have changed and key an auxillary event for each change
-        for (i=0 ; i < 4 ; i++)
-        {
-            if ( (povstate & (1<<i)) && !(joy_oldpovstate & (1<<i)) )
-            {
-                gEngfuncs.Key_Event (K_AUX29 + i, 1);
-            }
+		// determine which bits have changed and key an auxillary event for each change
+		for (i=0 ; i < 4 ; i++)
+		{
+			if ( (povstate & (1<<i)) && !(joy_oldpovstate & (1<<i)) )
+			{
+				gEngfuncs.Key_Event (K_AUX29 + i, 1);
+			}
 
-            if ( !(povstate & (1<<i)) && (joy_oldpovstate & (1<<i)) )
-            {
-                gEngfuncs.Key_Event (K_AUX29 + i, 0);
-            }
-        }
-        joy_oldpovstate = povstate;
-    }
+			if ( !(povstate & (1<<i)) && (joy_oldpovstate & (1<<i)) )
+			{
+				gEngfuncs.Key_Event (K_AUX29 + i, 0);
+			}
+		}
+		joy_oldpovstate = povstate;
+	}
 }
 
 
@@ -1274,35 +1295,35 @@ IN_ReadJoystick
 int IN_ReadJoystick (void)
 {
 #ifdef USE_SDL2
-    safe_pfnSDL_JoystickUpdate();
-    return 1;
+	safe_pfnSDL_JoystickUpdate();
+	return 1;
 #elif defined(_WIN32)
-    memset (&ji, 0, sizeof(ji));
-    ji.dwSize = sizeof(ji);
-    ji.dwFlags = joy_flags;
+	memset (&ji, 0, sizeof(ji));
+	ji.dwSize = sizeof(ji);
+	ji.dwFlags = joy_flags;
 
-    if (joyGetPosEx (joy_id, &ji) == JOYERR_NOERROR)
-    {
-        // this is a hack -- there is a bug in the Logitech WingMan Warrior DirectInput Driver
-        // rather than having 32768 be the zero point, they have the zero point at 32668
-        // go figure -- anyway, now we get the full resolution out of the device
-        if (joy_wwhack1->value != 0.0)
-        {
-            ji.dwUpos += 100;
-        }
-        return 1;
-    }
-    else
-    {
-        // read error occurred
-        // turning off the joystick seems too harsh for 1 read error,\
-        // but what should be done?
-        // Con_Printf ("IN_ReadJoystick: no response\n");
-        // joy_avail = 0;
-        return 0;
-    }
+	if (joyGetPosEx (joy_id, &ji) == JOYERR_NOERROR)
+	{
+		// this is a hack -- there is a bug in the Logitech WingMan Warrior DirectInput Driver
+		// rather than having 32768 be the zero point, they have the zero point at 32668
+		// go figure -- anyway, now we get the full resolution out of the device
+		if (joy_wwhack1->value != 0.0)
+		{
+			ji.dwUpos += 100;
+		}
+		return 1;
+	}
+	else
+	{
+		// read error occurred
+		// turning off the joystick seems too harsh for 1 read error,\
+		// but what should be done?
+		// Con_Printf ("IN_ReadJoystick: no response\n");
+		// joy_avail = 0;
+		return 0;
+	}
 #else
-    return 0;
+	return 0;
 #endif
 }
 
@@ -1314,189 +1335,189 @@ IN_JoyMove
 */
 void IN_JoyMove ( float frametime, usercmd_t *cmd )
 {
-    float   speed, aspeed;
-    float   fAxisValue, fTemp;
-    int     i;
-    vec3_t viewangles;
+	float   speed, aspeed;
+	float   fAxisValue, fTemp;
+	int	 i;
+	vec3_t viewangles;
 
-    gEngfuncs.GetViewAngles( (float *)viewangles );
+	gEngfuncs.GetViewAngles( (float *)viewangles );
 
 
-    // complete initialization if first time in
-    // this is needed as cvars are not available at initialization time
-    if( joy_advancedinit != 1 )
-    {
-        Joy_AdvancedUpdate_f();
-        joy_advancedinit = 1;
-    }
+	// complete initialization if first time in
+	// this is needed as cvars are not available at initialization time
+	if( joy_advancedinit != 1 )
+	{
+		Joy_AdvancedUpdate_f();
+		joy_advancedinit = 1;
+	}
 
-    // verify joystick is available and that the user wants to use it
-    if (!joy_avail || !in_joystick->value)
-    {
-        return;
-    }
+	// verify joystick is available and that the user wants to use it
+	if (!joy_avail || !in_joystick->value)
+	{
+		return;
+	}
 
-    // collect the joystick data, if possible
-    if (IN_ReadJoystick () != 1)
-    {
-        return;
-    }
+	// collect the joystick data, if possible
+	if (IN_ReadJoystick () != 1)
+	{
+		return;
+	}
 
-    if (in_speed.state & 1)
-        speed = cl_movespeedkey->value;
-    else
-        speed = 1;
+	if (in_speed.state & 1)
+		speed = cl_movespeedkey->value;
+	else
+		speed = 1;
 
-    aspeed = speed * frametime;
+	aspeed = speed * frametime;
 
-    // loop through the axes
-    for (i = 0; i < JOY_MAX_AXES; i++)
-    {
-        // get the floating point zero-centered, potentially-inverted data for the current axis
+	// loop through the axes
+	for (i = 0; i < JOY_MAX_AXES; i++)
+	{
+		// get the floating point zero-centered, potentially-inverted data for the current axis
 #ifdef USE_SDL2
-        fAxisValue = (float)pdwRawValue[i];
+		fAxisValue = (float)pdwRawValue[i];
 #elif defined(_WIN32)
-        fAxisValue = (float) *pdwRawValue[i];
-        fAxisValue -= 32768.0;
+		fAxisValue = (float) *pdwRawValue[i];
+		fAxisValue -= 32768.0;
 #endif
 
-        if (joy_wwhack2->value != 0.0)
-        {
-            if (dwAxisMap[i] == AxisTurn)
-            {
-                // this is a special formula for the Logitech WingMan Warrior
-                // y=ax^b; where a = 300 and b = 1.3
-                // also x values are in increments of 800 (so this is factored out)
-                // then bounds check result to level out excessively high spin rates
-                fTemp = 300.0 * pow(fabs(fAxisValue) / 800.0, 1.3);
-                if (fTemp > 14000.0)
-                    fTemp = 14000.0;
-                // restore direction information
-                fAxisValue = (fAxisValue > 0.0) ? fTemp : -fTemp;
-            }
-        }
+		if (joy_wwhack2->value != 0.0)
+		{
+			if (dwAxisMap[i] == AxisTurn)
+			{
+				// this is a special formula for the Logitech WingMan Warrior
+				// y=ax^b; where a = 300 and b = 1.3
+				// also x values are in increments of 800 (so this is factored out)
+				// then bounds check result to level out excessively high spin rates
+				fTemp = 300.0 * pow(fabs(fAxisValue) / 800.0, 1.3);
+				if (fTemp > 14000.0)
+					fTemp = 14000.0;
+				// restore direction information
+				fAxisValue = (fAxisValue > 0.0) ? fTemp : -fTemp;
+			}
+		}
 
-        // convert range from -32768..32767 to -1..1
-        fAxisValue /= 32768.0;
+		// convert range from -32768..32767 to -1..1
+		fAxisValue /= 32768.0;
 
-        switch (dwAxisMap[i])
-        {
-        case AxisForward:
-            if ((joy_advanced->value == 0.0) && (in_jlook.state & 1))
-            {
-                // user wants forward control to become look control
-                if (fabs(fAxisValue) > joy_pitchthreshold->value)
-                {
-                    // if mouse invert is on, invert the joystick pitch value
-                    // only absolute control support here (joy_advanced is 0)
-                    if (m_pitch->value < 0.0)
-                    {
-                        viewangles[PITCH] -= (fAxisValue * joy_pitchsensitivity->value) * aspeed * cl_pitchspeed->value;
-                    }
-                    else
-                    {
-                        viewangles[PITCH] += (fAxisValue * joy_pitchsensitivity->value) * aspeed * cl_pitchspeed->value;
-                    }
-                    V_StopPitchDrift();
-                }
-                else
-                {
-                    // no pitch movement
-                    // disable pitch return-to-center unless requested by user
-                    // *** this code can be removed when the lookspring bug is fixed
-                    // *** the bug always has the lookspring feature on
-                    if(lookspring->value == 0.0)
-                    {
-                        V_StopPitchDrift();
-                    }
-                }
-            }
-            else
-            {
-                // user wants forward control to be forward control
-                if (fabs(fAxisValue) > joy_forwardthreshold->value)
-                {
-                    cmd->forwardmove += (fAxisValue * joy_forwardsensitivity->value) * speed * cl_forwardspeed->value;
-                }
-            }
-            break;
+		switch (dwAxisMap[i])
+		{
+		case AxisForward:
+			if ((joy_advanced->value == 0.0) && (in_jlook.state & 1))
+			{
+				// user wants forward control to become look control
+				if (fabs(fAxisValue) > joy_pitchthreshold->value)
+				{
+					// if mouse invert is on, invert the joystick pitch value
+					// only absolute control support here (joy_advanced is 0)
+					if (m_pitch->value < 0.0)
+					{
+						viewangles[PITCH] -= (fAxisValue * joy_pitchsensitivity->value) * aspeed * cl_pitchspeed->value;
+					}
+					else
+					{
+						viewangles[PITCH] += (fAxisValue * joy_pitchsensitivity->value) * aspeed * cl_pitchspeed->value;
+					}
+					V_StopPitchDrift();
+				}
+				else
+				{
+					// no pitch movement
+					// disable pitch return-to-center unless requested by user
+					// *** this code can be removed when the lookspring bug is fixed
+					// *** the bug always has the lookspring feature on
+					if(lookspring->value == 0.0)
+					{
+						V_StopPitchDrift();
+					}
+				}
+			}
+			else
+			{
+				// user wants forward control to be forward control
+				if (fabs(fAxisValue) > joy_forwardthreshold->value)
+				{
+					cmd->forwardmove += (fAxisValue * joy_forwardsensitivity->value) * speed * cl_forwardspeed->value;
+				}
+			}
+			break;
 
-        case AxisSide:
-            if (fabs(fAxisValue) > joy_sidethreshold->value)
-            {
-                cmd->sidemove += (fAxisValue * joy_sidesensitivity->value) * speed * cl_sidespeed->value;
-            }
-            break;
+		case AxisSide:
+			if (fabs(fAxisValue) > joy_sidethreshold->value)
+			{
+				cmd->sidemove += (fAxisValue * joy_sidesensitivity->value) * speed * cl_sidespeed->value;
+			}
+			break;
 
-        case AxisTurn:
-            if ((in_strafe.state & 1) || (lookstrafe->value && (in_jlook.state & 1)))
-            {
-                // user wants turn control to become side control
-                if (fabs(fAxisValue) > joy_sidethreshold->value)
-                {
-                    cmd->sidemove -= (fAxisValue * joy_sidesensitivity->value) * speed * cl_sidespeed->value;
-                }
-            }
-            else
-            {
-                // user wants turn control to be turn control
-                if (fabs(fAxisValue) > joy_yawthreshold->value)
-                {
-                    if(dwControlMap[i] == JOY_ABSOLUTE_AXIS)
-                    {
-                        viewangles[YAW] += (fAxisValue * joy_yawsensitivity->value) * aspeed * cl_yawspeed->value;
-                    }
-                    else
-                    {
-                        viewangles[YAW] += (fAxisValue * joy_yawsensitivity->value) * speed * 180.0;
-                    }
+		case AxisTurn:
+			if ((in_strafe.state & 1) || (lookstrafe->value && (in_jlook.state & 1)))
+			{
+				// user wants turn control to become side control
+				if (fabs(fAxisValue) > joy_sidethreshold->value)
+				{
+					cmd->sidemove -= (fAxisValue * joy_sidesensitivity->value) * speed * cl_sidespeed->value;
+				}
+			}
+			else
+			{
+				// user wants turn control to be turn control
+				if (fabs(fAxisValue) > joy_yawthreshold->value)
+				{
+					if(dwControlMap[i] == JOY_ABSOLUTE_AXIS)
+					{
+						viewangles[YAW] += (fAxisValue * joy_yawsensitivity->value) * aspeed * cl_yawspeed->value;
+					}
+					else
+					{
+						viewangles[YAW] += (fAxisValue * joy_yawsensitivity->value) * speed * 180.0;
+					}
 
-                }
-            }
-            break;
+				}
+			}
+			break;
 
-        case AxisLook:
-            if (in_jlook.state & 1)
-            {
-                if (fabs(fAxisValue) > joy_pitchthreshold->value)
-                {
-                    // pitch movement detected and pitch movement desired by user
-                    if(dwControlMap[i] == JOY_ABSOLUTE_AXIS)
-                    {
-                        viewangles[PITCH] += (fAxisValue * joy_pitchsensitivity->value) * aspeed * cl_pitchspeed->value;
-                    }
-                    else
-                    {
-                        viewangles[PITCH] += (fAxisValue * joy_pitchsensitivity->value) * speed * 180.0;
-                    }
-                    V_StopPitchDrift();
-                }
-                else
-                {
-                    // no pitch movement
-                    // disable pitch return-to-center unless requested by user
-                    // *** this code can be removed when the lookspring bug is fixed
-                    // *** the bug always has the lookspring feature on
-                    if( lookspring->value == 0.0 )
-                    {
-                        V_StopPitchDrift();
-                    }
-                }
-            }
-            break;
+		case AxisLook:
+			if (in_jlook.state & 1)
+			{
+				if (fabs(fAxisValue) > joy_pitchthreshold->value)
+				{
+					// pitch movement detected and pitch movement desired by user
+					if(dwControlMap[i] == JOY_ABSOLUTE_AXIS)
+					{
+						viewangles[PITCH] += (fAxisValue * joy_pitchsensitivity->value) * aspeed * cl_pitchspeed->value;
+					}
+					else
+					{
+						viewangles[PITCH] += (fAxisValue * joy_pitchsensitivity->value) * speed * 180.0;
+					}
+					V_StopPitchDrift();
+				}
+				else
+				{
+					// no pitch movement
+					// disable pitch return-to-center unless requested by user
+					// *** this code can be removed when the lookspring bug is fixed
+					// *** the bug always has the lookspring feature on
+					if( lookspring->value == 0.0 )
+					{
+						V_StopPitchDrift();
+					}
+				}
+			}
+			break;
 
-        default:
-            break;
-        }
-    }
+		default:
+			break;
+		}
+	}
 
-    // bounds check pitch
-    if (viewangles[PITCH] > cl_pitchdown->value)
-        viewangles[PITCH] = cl_pitchdown->value;
-    if (viewangles[PITCH] < -cl_pitchup->value)
-        viewangles[PITCH] = -cl_pitchup->value;
+	// bounds check pitch
+	if (viewangles[PITCH] > cl_pitchdown->value)
+		viewangles[PITCH] = cl_pitchdown->value;
+	if (viewangles[PITCH] < -cl_pitchup->value)
+		viewangles[PITCH] = -cl_pitchup->value;
 
-    gEngfuncs.SetViewAngles( (float *)viewangles );
+	gEngfuncs.SetViewAngles( (float *)viewangles );
 }
 
 /*
@@ -1506,12 +1527,12 @@ IN_Move
 */
 void GoldSourceInput::IN_Move ( float frametime, usercmd_t *cmd)
 {
-    if ( !iMouseInUse && mouseactive )
-    {
-        IN_MouseMove ( frametime, cmd);
-    }
+	if ( !iMouseInUse && mouseactive )
+	{
+		IN_MouseMove ( frametime, cmd);
+	}
 
-    IN_JoyMove ( frametime, cmd);
+	IN_JoyMove ( frametime, cmd);
 }
 
 /*
@@ -1521,62 +1542,62 @@ IN_Init
 */
 void GoldSourceInput::IN_Init (void)
 {
-    m_filter                = gEngfuncs.pfnRegisterVariable ( "m_filter","0", FCVAR_ARCHIVE );
-    sensitivity             = gEngfuncs.pfnRegisterVariable ( "sensitivity","3", FCVAR_ARCHIVE ); // user mouse sensitivity setting.
+	m_filter				= gEngfuncs.pfnRegisterVariable ( "m_filter","0", FCVAR_ARCHIVE );
+	sensitivity			 = gEngfuncs.pfnRegisterVariable ( "sensitivity","3", FCVAR_ARCHIVE ); // user mouse sensitivity setting.
 
-    in_joystick             = gEngfuncs.pfnRegisterVariable ( "joystick","0", FCVAR_ARCHIVE );
-    joy_name                = gEngfuncs.pfnRegisterVariable ( "joyname", "joystick", 0 );
-    joy_advanced            = gEngfuncs.pfnRegisterVariable ( "joyadvanced", "0", 0 );
-    joy_advaxisx            = gEngfuncs.pfnRegisterVariable ( "joyadvaxisx", "0", 0 );
-    joy_advaxisy            = gEngfuncs.pfnRegisterVariable ( "joyadvaxisy", "0", 0 );
-    joy_advaxisz            = gEngfuncs.pfnRegisterVariable ( "joyadvaxisz", "0", 0 );
-    joy_advaxisr            = gEngfuncs.pfnRegisterVariable ( "joyadvaxisr", "0", 0 );
-    joy_advaxisu            = gEngfuncs.pfnRegisterVariable ( "joyadvaxisu", "0", 0 );
-    joy_advaxisv            = gEngfuncs.pfnRegisterVariable ( "joyadvaxisv", "0", 0 );
-    joy_forwardthreshold    = gEngfuncs.pfnRegisterVariable ( "joyforwardthreshold", "0.15", 0 );
-    joy_sidethreshold       = gEngfuncs.pfnRegisterVariable ( "joysidethreshold", "0.15", 0 );
-    joy_pitchthreshold      = gEngfuncs.pfnRegisterVariable ( "joypitchthreshold", "0.15", 0 );
-    joy_yawthreshold        = gEngfuncs.pfnRegisterVariable ( "joyyawthreshold", "0.15", 0 );
-    joy_forwardsensitivity  = gEngfuncs.pfnRegisterVariable ( "joyforwardsensitivity", "-1.0", 0 );
-    joy_sidesensitivity     = gEngfuncs.pfnRegisterVariable ( "joysidesensitivity", "-1.0", 0 );
-    joy_pitchsensitivity    = gEngfuncs.pfnRegisterVariable ( "joypitchsensitivity", "1.0", 0 );
-    joy_yawsensitivity      = gEngfuncs.pfnRegisterVariable ( "joyyawsensitivity", "-1.0", 0 );
-    joy_wwhack1             = gEngfuncs.pfnRegisterVariable ( "joywwhack1", "0.0", 0 );
-    joy_wwhack2             = gEngfuncs.pfnRegisterVariable ( "joywwhack2", "0.0", 0 );
+	in_joystick			 = gEngfuncs.pfnRegisterVariable ( "joystick","0", FCVAR_ARCHIVE );
+	joy_name				= gEngfuncs.pfnRegisterVariable ( "joyname", "joystick", 0 );
+	joy_advanced			= gEngfuncs.pfnRegisterVariable ( "joyadvanced", "0", 0 );
+	joy_advaxisx			= gEngfuncs.pfnRegisterVariable ( "joyadvaxisx", "0", 0 );
+	joy_advaxisy			= gEngfuncs.pfnRegisterVariable ( "joyadvaxisy", "0", 0 );
+	joy_advaxisz			= gEngfuncs.pfnRegisterVariable ( "joyadvaxisz", "0", 0 );
+	joy_advaxisr			= gEngfuncs.pfnRegisterVariable ( "joyadvaxisr", "0", 0 );
+	joy_advaxisu			= gEngfuncs.pfnRegisterVariable ( "joyadvaxisu", "0", 0 );
+	joy_advaxisv			= gEngfuncs.pfnRegisterVariable ( "joyadvaxisv", "0", 0 );
+	joy_forwardthreshold	= gEngfuncs.pfnRegisterVariable ( "joyforwardthreshold", "0.15", 0 );
+	joy_sidethreshold		= gEngfuncs.pfnRegisterVariable ( "joysidethreshold", "0.15", 0 );
+	joy_pitchthreshold		= gEngfuncs.pfnRegisterVariable ( "joypitchthreshold", "0.15", 0 );
+	joy_yawthreshold		= gEngfuncs.pfnRegisterVariable ( "joyyawthreshold", "0.15", 0 );
+	joy_forwardsensitivity	= gEngfuncs.pfnRegisterVariable ( "joyforwardsensitivity", "-1.0", 0 );
+	joy_sidesensitivity		= gEngfuncs.pfnRegisterVariable ( "joysidesensitivity", "-1.0", 0 );
+	joy_pitchsensitivity	= gEngfuncs.pfnRegisterVariable ( "joypitchsensitivity", "1.0", 0 );
+	joy_yawsensitivity		= gEngfuncs.pfnRegisterVariable ( "joyyawsensitivity", "-1.0", 0 );
+	joy_wwhack1				= gEngfuncs.pfnRegisterVariable ( "joywwhack1", "0.0", 0 );
+	joy_wwhack2				= gEngfuncs.pfnRegisterVariable ( "joywwhack2", "0.0", 0 );
 
-    m_customaccel           = gEngfuncs.pfnRegisterVariable ( "m_customaccel", "0", FCVAR_ARCHIVE );
-    m_customaccel_scale     = gEngfuncs.pfnRegisterVariable ( "m_customaccel_scale", "0.04", FCVAR_ARCHIVE );
-    m_customaccel_max       = gEngfuncs.pfnRegisterVariable ( "m_customaccel_max", "0", FCVAR_ARCHIVE );
-    m_customaccel_exponent  = gEngfuncs.pfnRegisterVariable ( "m_customaccel_exponent", "1", FCVAR_ARCHIVE );
+	m_customaccel			= gEngfuncs.pfnRegisterVariable ( "m_customaccel", "0", FCVAR_ARCHIVE );
+	m_customaccel_scale		= gEngfuncs.pfnRegisterVariable ( "m_customaccel_scale", "0.04", FCVAR_ARCHIVE );
+	m_customaccel_max		= gEngfuncs.pfnRegisterVariable ( "m_customaccel_max", "0", FCVAR_ARCHIVE );
+	m_customaccel_exponent	= gEngfuncs.pfnRegisterVariable ( "m_customaccel_exponent", "1", FCVAR_ARCHIVE );
 
 #ifdef _WIN32
-    m_bRawInput             = CVAR_GET_FLOAT( "m_rawinput" ) != 0;
-    m_bMouseThread          = gEngfuncs.CheckParm ("-mousethread", NULL ) != NULL;
-    m_mousethread_sleep     = gEngfuncs.pfnRegisterVariable ( "m_mousethread_sleep", "1", FCVAR_ARCHIVE ); // default to less than 1000 Hz
+	m_bRawInput			 = CVAR_GET_FLOAT( "m_rawinput" ) != 0;
+	m_bMouseThread		  = gEngfuncs.CheckParm ("-mousethread", NULL ) != NULL;
+	m_mousethread_sleep	 = gEngfuncs.pfnRegisterVariable ( "m_mousethread_sleep", "1", FCVAR_ARCHIVE ); // default to less than 1000 Hz
 
-    m_bMouseThread = m_bMouseThread && NULL != m_mousethread_sleep;
+	m_bMouseThread = m_bMouseThread && NULL != m_mousethread_sleep;
 
-    if (m_bMouseThread)
-    {
-        // init mouseThreadSleep:
+	if (m_bMouseThread)
+	{
+		// init mouseThreadSleep:
 #if 0 // _beginthreadex is not defined on VS 6?
-        InterlockedExchange(&mouseThreadSleep, (LONG)m_mousethread_sleep->value);
+		InterlockedExchange(&mouseThreadSleep, (LONG)m_mousethread_sleep->value);
 
-        s_hMouseQuitEvent = CreateEvent( NULL, FALSE, FALSE, NULL );
-        s_hMouseThreadActiveLock = CreateEvent( NULL, FALSE, TRUE, NULL );
-        if ( s_hMouseQuitEvent && s_hMouseThreadActiveLock)
-        {
-            s_hMouseThread = (HANDLE)_beginthreadex( NULL, 0, MouseThread_Function, NULL, 0, &s_hMouseThreadId );
-        }
+		s_hMouseQuitEvent = CreateEvent( NULL, FALSE, FALSE, NULL );
+		s_hMouseThreadActiveLock = CreateEvent( NULL, FALSE, TRUE, NULL );
+		if ( s_hMouseQuitEvent && s_hMouseThreadActiveLock)
+		{
+			s_hMouseThread = (HANDLE)_beginthreadex( NULL, 0, MouseThread_Function, NULL, 0, &s_hMouseThreadId );
+		}
 
-        m_bMouseThread = NULL != s_hMouseThread;
+		m_bMouseThread = NULL != s_hMouseThread;
 #else
-        m_bMouseThread = 0;
+		m_bMouseThread = 0;
 #endif
 
-        // at this early stage this won't print anything:
-        // gEngfuncs.Con_DPrintf ("Mouse thread %s.\n", m_bMouseThread ? "initalized" : "failed to initalize");
-    }
+		// at this early stage this won't print anything:
+		// gEngfuncs.Con_DPrintf ("Mouse thread %s.\n", m_bMouseThread ? "initalized" : "failed to initalize");
+	}
 #endif
 
 #ifdef USE_SDL2
@@ -1597,11 +1618,11 @@ void GoldSourceInput::IN_Init (void)
 		gEngfuncs.Con_Printf("Could not load SDL2: %s\n", dlerror());
 	}
 #endif
-    gEngfuncs.pfnAddCommand ("force_centerview", Force_CenterView_f);
-    gEngfuncs.pfnAddCommand ("joyadvancedupdate", Joy_AdvancedUpdate_f);
+	gEngfuncs.pfnAddCommand ("force_centerview", Force_CenterView_f);
+	gEngfuncs.pfnAddCommand ("joyadvancedupdate", Joy_AdvancedUpdate_f);
 
-    IN_StartupMouse ();
-    IN_StartupJoystick ();
+	IN_StartupMouse ();
+	IN_StartupJoystick ();
 }
 
 #endif
diff --git a/cl_dll/message.cpp b/cl_dll/message.cpp
index ff8d97bf..bbd59d9a 100644
--- a/cl_dll/message.cpp
+++ b/cl_dll/message.cpp
@@ -240,7 +240,7 @@ void CHudMessage::MessageDrawScan( client_textmessage_t *pMessage, float time )
 {
 	int i, j, length, width;
 	const char *pText;
-	unsigned char line[80];
+	const char *pLineStart;
 
 	pText = pMessage->pMessage;
 	// Count lines
@@ -278,22 +278,21 @@ void CHudMessage::MessageDrawScan( client_textmessage_t *pMessage, float time )
 	{
 		m_parms.lineLength = 0;
 		m_parms.width = 0;
+		pLineStart = pText;
 		while( *pText && *pText != '\n' )
 		{
 			unsigned char c = *pText;
-			line[m_parms.lineLength] = c;
 			m_parms.width += gHUD.m_scrinfo.charWidths[c];
 			m_parms.lineLength++;
 			pText++;
 		}
 		pText++;		// Skip LF
-		line[m_parms.lineLength] = 0;
 
 		m_parms.x = XPosition( pMessage->x, m_parms.width, m_parms.totalWidth );
 
 		for( j = 0; j < m_parms.lineLength; j++ )
 		{
-			m_parms.text = line[j];
+			m_parms.text = pLineStart[j];
 			int next = m_parms.x + gHUD.m_scrinfo.charWidths[m_parms.text];
 			MessageScanNextChar();
 
diff --git a/cl_dll/scoreboard.cpp b/cl_dll/scoreboard.cpp
index 5d52787c..d4bdecb8 100644
--- a/cl_dll/scoreboard.cpp
+++ b/cl_dll/scoreboard.cpp
@@ -108,7 +108,7 @@ We have a minimum width of 1-320 - we could have the field widths scale with it?
 int SCOREBOARD_WIDTH = 320;
 
 // Y positions
-#define ROW_GAP  13
+#define ROW_GAP  (gHUD.m_scrinfo.iCharHeight)
 #define ROW_RANGE_MIN 15
 #define ROW_RANGE_MAX ( ScreenHeight - 50 )
 
diff --git a/cl_dll/wscript b/cl_dll/wscript
new file mode 100644
index 00000000..d0bd0951
--- /dev/null
+++ b/cl_dll/wscript
@@ -0,0 +1,66 @@
+#! /usr/bin/env python
+# encoding: utf-8
+# a1batross, mittorn, 2018
+
+from waflib import Utils
+import os
+ 
+def options(opt):
+	# stub
+	return
+
+def configure(conf):
+	if conf.env.GOLDSRC:
+		if conf.env.DEST_OS != 'win32':
+			conf.check_cc(lib='dl')
+
+def build(bld):
+	source = bld.path.parent.ant_glob([
+		'pm_shared/*.c',
+		'dlls/crossbow.cpp', 'dlls/crowbar.cpp', 'dlls/egon.cpp', 'dlls/gauss.cpp', 'dlls/handgrenade.cpp',
+		'dlls/hornetgun.cpp', 'dlls/mp5.cpp', 'dlls/python.cpp', 'dlls/rpg.cpp', 'dlls/satchel.cpp',
+		'dlls/shotgun.cpp',	'dlls/squeakgrenade.cpp', 'dlls/tripmine.cpp', 'dlls/glock.cpp'
+	])
+
+	source += bld.path.ant_glob(['hl/*.cpp'])
+	source += [
+		'ev_hldm.cpp', 'ammo.cpp', 'ammo_secondary.cpp', 'ammohistory.cpp',
+		'battery.cpp', 'cdll_int.cpp', 'com_weapons.cpp', 'death.cpp',
+		'demo.cpp', 'entity.cpp', 'ev_common.cpp', 'events.cpp',
+		'flashlight.cpp', 'GameStudioModelRenderer.cpp', 'geiger.cpp',
+		'health.cpp', 'hud.cpp', 'hud_msg.cpp', 'hud_redraw.cpp',
+		'hud_spectator.cpp', 'hud_update.cpp', 'in_camera.cpp',
+		'input.cpp', 'input_goldsource.cpp', 'input_mouse.cpp',
+		'input_xash3d.cpp', 'menu.cpp', 'message.cpp',
+		'overview.cpp', 'parsemsg.cpp', 'saytext.cpp',
+		'status_icons.cpp', 'statusbar.cpp', 'studio_util.cpp',
+		'StudioModelRenderer.cpp', 'text_message.cpp', 'train.cpp',
+		'tri.cpp', 'util.cpp', 'view.cpp', 'scoreboard.cpp', 'MOTD.cpp'
+	]
+
+	includes = Utils.to_list('. hl/ ../dlls ../dlls/wpn_shared ../common ../engine ../pm_shared ../game_shared ../public ../utils/false_vgui/include')
+
+	defines = ['CLIENT_DLL']
+	if bld.env.GOLDSRC:
+		defines += ['GOLDSOURCE_SUPPORT']
+
+	libs = []
+	if bld.env.GOLDSRC:
+		libs += ['DL']
+
+	if bld.env.DEST_OS2 not in ['android']:
+		install_path = os.path.join(bld.env.GAMEDIR, bld.env.CLIENT_DIR)
+	else:
+		install_path = bld.env.PREFIX
+
+	bld.shlib(
+		source   = source,
+		target   = 'client',
+		features = 'c cxx',
+		includes = includes,
+		defines  = defines,
+		use      = libs,
+		install_path = install_path,
+		subsystem = bld.env.MSVC_SUBSYSTEM,
+		idx      = 1
+	)
diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt
index 9ff6e679..62e6c026 100644
--- a/dlls/CMakeLists.txt
+++ b/dlls/CMakeLists.txt
@@ -30,6 +30,7 @@ add_definitions(-DCLIENT_WEAPONS -DCROWBAR_IDLE_ANIM)
 if(NOT MSVC)
 	add_compile_options(-fno-exceptions) # GCC/Clang flag
 	add_compile_options(-Wno-invalid-offsetof) # GCC/Clang flag
+	add_compile_options(-fvisibility=hidden) # GCC/Clang flag
 	add_definitions(-D_LINUX) # It seems enough for all non-Win32 systems
 	add_definitions(-Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf )
 else()
@@ -144,7 +145,7 @@ set (SVDLL_SOURCES
 	../pm_shared/pm_math.c
 	../pm_shared/pm_shared.c
 )
-	
+
 include_directories (. wpn_shared ../common ../engine ../pm_shared ../game_shared ../public)
 
 if(USE_VOICEMGR)
diff --git a/dlls/bullsquid.cpp b/dlls/bullsquid.cpp
index af3ab88a..8db94c25 100644
--- a/dlls/bullsquid.cpp
+++ b/dlls/bullsquid.cpp
@@ -398,7 +398,7 @@ BOOL CBullsquid::FValidateHintType( short sHint )
 		}
 	}
 
-	ALERT( at_aiconsole, "Couldn't validate hint type" );
+	ALERT( at_aiconsole, "Couldn't validate hint type\n" );
 	return FALSE;
 }
 
diff --git a/dlls/client.cpp b/dlls/client.cpp
index a555a980..9e42a442 100644
--- a/dlls/client.cpp
+++ b/dlls/client.cpp
@@ -51,6 +51,7 @@ extern int gmsgSayText;
 extern int gmsgBhopcap;
 
 extern cvar_t allow_spectators;
+extern cvar_t multibyte_only;
 
 extern int g_teamplay;
 
@@ -312,6 +313,10 @@ decodeFinishedMaybeCESU8:
 bool Q_UnicodeValidate( const char *pUTF8 )
 {
 	bool bError = false;
+
+	if( !multibyte_only.value )
+		return true;
+
 	while( *pUTF8 )
 	{
 		unsigned int uVal;
@@ -1157,8 +1162,8 @@ void SetupVisibility( edict_t *pViewEntity, edict_t *pClient, unsigned char **pv
 		}
 	}
 
-	*pvs = ENGINE_SET_PVS( (float *)&org );
-	*pas = ENGINE_SET_PAS( (float *)&org );
+	*pvs = ENGINE_SET_PVS( org );
+	*pas = ENGINE_SET_PAS( org );
 }
 
 #include "entity_state.h"
diff --git a/dlls/compile.bat b/dlls/compile.bat
index 53c4511b..f97806a5 100644
--- a/dlls/compile.bat
+++ b/dlls/compile.bat
@@ -8,105 +8,105 @@ echo -- Compiler is MSVC6
 
 set XASH3DSRC=..\..\Xash3D_original
 set INCLUDES=-I../common -I../engine -I../pm_shared -I../game_shared -I../public
-set SOURCES=agrunt.cpp^
-	airtank.cpp^
-	aflock.cpp^
-	animating.cpp^
-	animation.cpp^
-	apache.cpp^
-	barnacle.cpp^
-	barney.cpp^
-	bigmomma.cpp^
-	bloater.cpp^
-	bmodels.cpp^
-	bullsquid.cpp^
-	buttons.cpp^
-	cbase.cpp^
-	client.cpp^
-	combat.cpp^
-	controller.cpp^
-	crossbow.cpp^
-	crowbar.cpp^
-	defaultai.cpp^
-	doors.cpp^
-	effects.cpp^
-	egon.cpp^
-	explode.cpp^
-	flyingmonster.cpp^
-	func_break.cpp^
-	func_tank.cpp^
-	game.cpp^
-	gamerules.cpp^
-	gargantua.cpp^
-	gauss.cpp^
-	genericmonster.cpp^
-	ggrenade.cpp^
-	globals.cpp^
-	glock.cpp^
-	gman.cpp^
-	h_ai.cpp^
-	h_battery.cpp^
-	h_cine.cpp^
-	h_cycler.cpp^
-	h_export.cpp^
-	handgrenade.cpp^
-	hassassin.cpp^
-	headcrab.cpp^
-	healthkit.cpp^
-	hgrunt.cpp^
-	hornet.cpp^
-	hornetgun.cpp^
-	houndeye.cpp^
-	ichthyosaur.cpp^
-	islave.cpp^
-	items.cpp^
-	leech.cpp^
-	lights.cpp^
-	maprules.cpp^
-	monstermaker.cpp^
-	monsters.cpp^
-	monsterstate.cpp^
-	mortar.cpp^
-	mp5.cpp^
-	multiplay_gamerules.cpp^
-	nihilanth.cpp^
-	nodes.cpp^
-	observer.cpp^
-	osprey.cpp^
-	pathcorner.cpp^
-	plane.cpp^
-	plats.cpp^
-	player.cpp^
-	playermonster.cpp^
-	python.cpp^
-	rat.cpp^
-	roach.cpp^
-	rpg.cpp^
-	satchel.cpp^
-	schedule.cpp^
-	scientist.cpp^
-	scripted.cpp^
-	shotgun.cpp^
-	singleplay_gamerules.cpp^
-	skill.cpp^
-	sound.cpp^
-	soundent.cpp^
-	spectator.cpp^
-	squadmonster.cpp^
-	squeakgrenade.cpp^
-	subs.cpp^
-	talkmonster.cpp^
-	teamplay_gamerules.cpp^
-	tempmonster.cpp^
-	tentacle.cpp^
-	triggers.cpp^
-	tripmine.cpp^
-	turret.cpp^
-	util.cpp^
-	weapons.cpp^
-	world.cpp^
-	xen.cpp^
-	zombie.cpp^
+set SOURCES=agrunt.cpp ^
+	airtank.cpp ^
+	aflock.cpp ^
+	animating.cpp ^
+	animation.cpp ^
+	apache.cpp ^
+	barnacle.cpp ^
+	barney.cpp ^
+	bigmomma.cpp ^
+	bloater.cpp ^
+	bmodels.cpp ^
+	bullsquid.cpp ^
+	buttons.cpp ^
+	cbase.cpp ^
+	client.cpp ^
+	combat.cpp ^
+	controller.cpp ^
+	crossbow.cpp ^
+	crowbar.cpp ^
+	defaultai.cpp ^
+	doors.cpp ^
+	effects.cpp ^
+	egon.cpp ^
+	explode.cpp ^
+	flyingmonster.cpp ^
+	func_break.cpp ^
+	func_tank.cpp ^
+	game.cpp ^
+	gamerules.cpp ^
+	gargantua.cpp ^
+	gauss.cpp ^
+	genericmonster.cpp ^
+	ggrenade.cpp ^
+	globals.cpp ^
+	glock.cpp ^
+	gman.cpp ^
+	h_ai.cpp ^
+	h_battery.cpp ^
+	h_cine.cpp ^
+	h_cycler.cpp ^
+	h_export.cpp ^
+	handgrenade.cpp ^
+	hassassin.cpp ^
+	headcrab.cpp ^
+	healthkit.cpp ^
+	hgrunt.cpp ^
+	hornet.cpp ^
+	hornetgun.cpp ^
+	houndeye.cpp ^
+	ichthyosaur.cpp ^
+	islave.cpp ^
+	items.cpp ^
+	leech.cpp ^
+	lights.cpp ^
+	maprules.cpp ^
+	monstermaker.cpp ^
+	monsters.cpp ^
+	monsterstate.cpp ^
+	mortar.cpp ^
+	mp5.cpp ^
+	multiplay_gamerules.cpp ^
+	nihilanth.cpp ^
+	nodes.cpp ^
+	observer.cpp ^
+	osprey.cpp ^
+	pathcorner.cpp ^
+	plane.cpp ^
+	plats.cpp ^
+	player.cpp ^
+	playermonster.cpp ^
+	python.cpp ^
+	rat.cpp ^
+	roach.cpp ^
+	rpg.cpp ^
+	satchel.cpp ^
+	schedule.cpp ^
+	scientist.cpp ^
+	scripted.cpp ^
+	shotgun.cpp ^
+	singleplay_gamerules.cpp ^
+	skill.cpp ^
+	sound.cpp ^
+	soundent.cpp ^
+	spectator.cpp ^
+	squadmonster.cpp ^
+	squeakgrenade.cpp ^
+	subs.cpp ^
+	talkmonster.cpp ^
+	teamplay_gamerules.cpp ^
+	tempmonster.cpp ^
+	tentacle.cpp ^
+	triggers.cpp ^
+	tripmine.cpp ^
+	turret.cpp ^
+	util.cpp ^
+	weapons.cpp ^
+	world.cpp ^
+	xen.cpp ^
+	zombie.cpp ^
 	../pm_shared/pm_debug.c ../pm_shared/pm_math.c ../pm_shared/pm_shared.c
 set DEFINES=/DCLIENT_WEAPONS /Dsnprintf=_snprintf /DNO_VOICEGAMEMGR
 set LIBS=user32.lib
diff --git a/dlls/crossbow.cpp b/dlls/crossbow.cpp
index f669d054..63ab515a 100644
--- a/dlls/crossbow.cpp
+++ b/dlls/crossbow.cpp
@@ -373,7 +373,7 @@ void CCrossbow::FireSniperBolt()
 	flags = 0;
 #endif
 
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrossbow2, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType], 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrossbow2, 0.0, g_vecZero, g_vecZero, 0, 0, m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType], 0, 0 );
 
 	// player "shoot" animation
 	m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
@@ -442,7 +442,7 @@ void CCrossbow::FireBolt()
 	flags = 0;
 #endif
 
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrossbow, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType], 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrossbow, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType], 0, 0 );
 
 	m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay( 0.75 );
 
diff --git a/dlls/crowbar.cpp b/dlls/crowbar.cpp
index 4cc48d97..8a0ba9a3 100644
--- a/dlls/crowbar.cpp
+++ b/dlls/crowbar.cpp
@@ -204,7 +204,7 @@ int CCrowbar::Swing( int fFirst )
 	if( fFirst )
 	{
 		PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usCrowbar, 
-		0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0,
+		0.0, g_vecZero, g_vecZero, 0, 0, 0,
 		0, 0, 0 );
 	}
 
diff --git a/dlls/doors.cpp b/dlls/doors.cpp
index c12cc3a0..085ee441 100644
--- a/dlls/doors.cpp
+++ b/dlls/doors.cpp
@@ -926,6 +926,7 @@ public:
 	void Spawn( void );
 	void Precache( void );
 	void EXPORT MomentaryMoveDone( void );
+	void EXPORT StopMoveSound( void );
 
 	void KeyValue( KeyValueData *pkvd );
 	void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
@@ -1117,7 +1118,15 @@ void CMomentaryDoor::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYP
 }
 
 void CMomentaryDoor::MomentaryMoveDone( void )
+{
+	SetThink(&CMomentaryDoor::StopMoveSound);
+	pev->nextthink = pev->ltime + 0.1;
+}
+
+void CMomentaryDoor::StopMoveSound()
 {
 	STOP_SOUND( ENT( pev ), CHAN_STATIC, STRING( pev->noiseMoving ) );
 	EMIT_SOUND( ENT( pev ), CHAN_STATIC, STRING( pev->noiseArrived ), 1, ATTN_NORM );
+	pev->nextthink = -1;
+	ResetThink();
 }
diff --git a/dlls/egon.cpp b/dlls/egon.cpp
index b83c9086..6f248309 100644
--- a/dlls/egon.cpp
+++ b/dlls/egon.cpp
@@ -197,7 +197,7 @@ void CEgon::Attack( void )
 
 			m_flAmmoUseTime = gpGlobals->time;// start using ammo ASAP.
 
-			PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usEgonFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, m_fireState, m_fireMode, 1, 0 );
+			PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usEgonFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, m_fireState, m_fireMode, 1, 0 );
 		
 			m_shakeTime = 0;
 
@@ -216,7 +216,7 @@ void CEgon::Attack( void )
 
 			if( pev->fuser1 <= UTIL_WeaponTimeBase() )
 			{
-				PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usEgonFire, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, m_fireState, m_fireMode, 0, 0 );
+				PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usEgonFire, 0, g_vecZero, g_vecZero, 0.0, 0.0, m_fireState, m_fireMode, 0, 0 );
 				pev->fuser1 = 1000;
 			}
 
@@ -504,7 +504,7 @@ void CEgon::EndAttack( void )
 	if( m_fireState != FIRE_OFF ) //Checking the button just in case!.
 		 bMakeNoise = true;
 
-	PLAYBACK_EVENT_FULL( FEV_GLOBAL | FEV_RELIABLE, m_pPlayer->edict(), m_usEgonStop, 0, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, 0.0, 0.0, bMakeNoise, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( FEV_GLOBAL | FEV_RELIABLE, m_pPlayer->edict(), m_usEgonStop, 0, m_pPlayer->pev->origin, m_pPlayer->pev->angles, 0.0, 0.0, bMakeNoise, 0, 0, 0 );
 
 	m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
 	m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5;
diff --git a/dlls/extdll.h b/dlls/extdll.h
index d6ea4888..4610db5e 100644
--- a/dlls/extdll.h
+++ b/dlls/extdll.h
@@ -62,6 +62,7 @@ typedef int BOOL;
 // Misc C-runtime library headers
 #include "stdio.h"
 #include "stdlib.h"
+#include "stddef.h"
 #include "math.h"
 
 #if defined(__LP64__) || defined(__LLP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
diff --git a/dlls/game.cpp b/dlls/game.cpp
index 5f0c278d..0bc448c8 100644
--- a/dlls/game.cpp
+++ b/dlls/game.cpp
@@ -31,6 +31,7 @@ cvar_t friendlyfire	= { "mp_friendlyfire","0", FCVAR_SERVER };
 cvar_t falldamage	= { "mp_falldamage","0", FCVAR_SERVER };
 cvar_t weaponstay	= { "mp_weaponstay","0", FCVAR_SERVER };
 cvar_t selfgauss	= { "mp_selfgauss", "1", FCVAR_SERVER };
+cvar_t chargerfix	= { "mp_chargerfix", "0", FCVAR_SERVER };
 cvar_t satchelfix	= { "mp_satchelfix", "0", FCVAR_SERVER };
 cvar_t forcerespawn	= { "mp_forcerespawn","1", FCVAR_SERVER };
 cvar_t flashlight	= { "mp_flashlight","0", FCVAR_SERVER };
@@ -43,6 +44,7 @@ cvar_t allowmonsters	= { "mp_allowmonsters","0", FCVAR_SERVER };
 cvar_t bhopcap		= { "mp_bhopcap", "1", FCVAR_SERVER };
 
 cvar_t allow_spectators = { "allow_spectators", "0", FCVAR_SERVER };	// 0 prevents players from being spectators
+cvar_t multibyte_only = { "mp_multibyte_only", "0", FCVAR_SERVER };
 
 cvar_t mp_chattime	= { "mp_chattime","10", FCVAR_SERVER };
 
@@ -508,6 +510,7 @@ void GameDLLInit( void )
 	CVAR_REGISTER( &falldamage );
 	CVAR_REGISTER( &weaponstay );
 	CVAR_REGISTER( &selfgauss );
+	CVAR_REGISTER( &chargerfix );
 	CVAR_REGISTER( &satchelfix );
 	CVAR_REGISTER( &forcerespawn );
 	CVAR_REGISTER( &flashlight );
@@ -518,6 +521,7 @@ void GameDLLInit( void )
 	CVAR_REGISTER( &defaultteam );
 	CVAR_REGISTER( &allowmonsters );
 	CVAR_REGISTER( &bhopcap );
+	CVAR_REGISTER( &multibyte_only );
 
 	CVAR_REGISTER( &mp_chattime );
 
diff --git a/dlls/game.h b/dlls/game.h
index 0dc5ba87..7eb665c6 100644
--- a/dlls/game.h
+++ b/dlls/game.h
@@ -28,6 +28,7 @@ extern cvar_t friendlyfire;
 extern cvar_t falldamage;
 extern cvar_t weaponstay;
 extern cvar_t selfgauss;
+extern cvar_t chargerfix;
 extern cvar_t satchelfix;
 extern cvar_t forcerespawn;
 extern cvar_t flashlight;
diff --git a/dlls/gauss.cpp b/dlls/gauss.cpp
index 62af08e1..21377783 100644
--- a/dlls/gauss.cpp
+++ b/dlls/gauss.cpp
@@ -138,7 +138,7 @@ BOOL CGauss::Deploy()
 
 void CGauss::Holster( int skiplocal /* = 0 */ )
 {
-	PLAYBACK_EVENT_FULL( FEV_RELIABLE | FEV_GLOBAL, m_pPlayer->edict(), m_usGaussFire, 0.01, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, 0.0, 0.0, 0, 0, 0, 1 );
+	PLAYBACK_EVENT_FULL( FEV_RELIABLE | FEV_GLOBAL, m_pPlayer->edict(), m_usGaussFire, 0.01, m_pPlayer->pev->origin, m_pPlayer->pev->angles, 0.0, 0.0, 0, 0, 0, 1 );
 
 	m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
 
@@ -217,7 +217,7 @@ void CGauss::SecondaryAttack()
 		m_pPlayer->m_flStartCharge = gpGlobals->time;
 		m_pPlayer->m_flAmmoStartCharge = UTIL_WeaponTimeBase() + GetFullChargeTime();
 
-		PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 110, 0, 0, 0 );
+		PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, 110, 0, 0, 0 );
 
 		m_iSoundState = SND_CHANGE_PITCH;
 	}
@@ -281,7 +281,7 @@ void CGauss::SecondaryAttack()
 		if( m_iSoundState == 0 )
 			ALERT( at_console, "sound state %d\n", m_iSoundState );
 
-		PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, pitch, 0, ( m_iSoundState == SND_CHANGE_PITCH ) ? 1 : 0, 0 );
+		PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, pitch, 0, ( m_iSoundState == SND_CHANGE_PITCH ) ? 1 : 0, 0 );
 
 		m_iSoundState = SND_CHANGE_PITCH; // hack for going through level transitions
 
@@ -389,13 +389,13 @@ void CGauss::Fire( Vector vecOrigSrc, Vector vecDir, float flDamage )
 		 g_irunninggausspred = true;
 #endif	
 	// The main firing event is sent unreliably so it won't be delayed.
-	PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussFire, 0.0, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, flDamage, 0.0, 0, 0, m_fPrimaryFire ? 1 : 0, 0 );
+	PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussFire, 0.0, m_pPlayer->pev->origin, m_pPlayer->pev->angles, flDamage, 0.0, 0, 0, m_fPrimaryFire ? 1 : 0, 0 );
 
 	// This reliable event is used to stop the spinning sound
 	// It's delayed by a fraction of second to make sure it is delayed by 1 frame on the client
 	// It's sent reliably anyway, which could lead to other delays
 
-	PLAYBACK_EVENT_FULL( FEV_NOTHOST | FEV_RELIABLE, m_pPlayer->edict(), m_usGaussFire, 0.01, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, 0.0, 0.0, 0, 0, 0, 1 );
+	PLAYBACK_EVENT_FULL( FEV_NOTHOST | FEV_RELIABLE, m_pPlayer->edict(), m_usGaussFire, 0.01, m_pPlayer->pev->origin, m_pPlayer->pev->angles, 0.0, 0.0, 0, 0, 0, 1 );
 
 	/*ALERT( at_console, "%f %f %f\n%f %f %f\n", 
 		vecSrc.x, vecSrc.y, vecSrc.z, 
diff --git a/dlls/glock.cpp b/dlls/glock.cpp
index b0e13a05..7d68c168 100644
--- a/dlls/glock.cpp
+++ b/dlls/glock.cpp
@@ -205,7 +205,7 @@ void CGlock::GlockFire( float flSpread, float flCycleTime, BOOL fUseAutoAim )
 
 	Vector vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, vecSpread, 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
 
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), fUseAutoAim ? m_usFireGlock1 : m_usFireGlock2, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, ( m_iClip == 0 ) ? 1 : 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), fUseAutoAim ? m_usFireGlock1 : m_usFireGlock2, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, 0, 0, ( m_iClip == 0 ) ? 1 : 0, 0 );
 
 	m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay( flCycleTime );
 
diff --git a/dlls/h_battery.cpp b/dlls/h_battery.cpp
index 976a5733..dabbc06c 100644
--- a/dlls/h_battery.cpp
+++ b/dlls/h_battery.cpp
@@ -26,6 +26,8 @@
 #include "saverestore.h"
 #include "skill.h"
 #include "gamerules.h"
+#include "weapons.h"
+#include "game.h"
 
 class CRecharge : public CBaseToggle
 {
@@ -116,7 +118,7 @@ void CRecharge::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE use
 	}
 
 	// if the player doesn't have the suit, or there is no juice left, make the deny noise
-	if( ( m_iJuice <= 0 ) || ( !( pActivator->pev->weapons & ( 1 << WEAPON_SUIT ) ) ) )
+	if( ( m_iJuice <= 0 ) || ( !( pActivator->pev->weapons & ( 1 << WEAPON_SUIT ) ) ) || ( ( chargerfix.value ) && ( pActivator->pev->armorvalue == MAX_NORMAL_BATTERY ) ) )
 	{
 		if( m_flSoundTime <= gpGlobals->time )
 		{
diff --git a/dlls/healthkit.cpp b/dlls/healthkit.cpp
index 99d53d35..e1744479 100644
--- a/dlls/healthkit.cpp
+++ b/dlls/healthkit.cpp
@@ -22,6 +22,7 @@
 #include "player.h"
 #include "items.h"
 #include "gamerules.h"
+#include "game.h"
 
 extern int gmsgItemPickup;
 
@@ -187,7 +188,7 @@ void CWallHealth::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE u
 	}
 
 	// if the player doesn't have the suit, or there is no juice left, make the deny noise
-	if( ( m_iJuice <= 0 ) || ( !( pActivator->pev->weapons & ( 1 << WEAPON_SUIT ) ) ) )
+	if( ( m_iJuice <= 0 ) || ( !( pActivator->pev->weapons & ( 1 << WEAPON_SUIT ) ) ) || ( ( chargerfix.value ) && ( pActivator->pev->health >= pActivator->pev->max_health ) ) )
 	{
 		if( m_flSoundTime <= gpGlobals->time )
 		{
diff --git a/dlls/hornetgun.cpp b/dlls/hornetgun.cpp
index cc63d6db..909ba342 100644
--- a/dlls/hornetgun.cpp
+++ b/dlls/hornetgun.cpp
@@ -150,7 +150,7 @@ void CHgun::PrimaryAttack()
 #else
 	flags = 0;
 #endif
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usHornetFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, FIREMODE_TRACK, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usHornetFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, FIREMODE_TRACK, 0, 0, 0 );
 
 	// player "shoot" animation
 	m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
@@ -231,7 +231,7 @@ void CHgun::SecondaryAttack( void )
 #else
 	flags = 0;
 #endif
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usHornetFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, FIREMODE_FAST, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usHornetFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, FIREMODE_FAST, 0, 0, 0 );
 
 	m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
 	m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
diff --git a/dlls/houndeye.cpp b/dlls/houndeye.cpp
index cedee258..940b68ea 100644
--- a/dlls/houndeye.cpp
+++ b/dlls/houndeye.cpp
@@ -155,7 +155,7 @@ BOOL CHoundeye::FValidateHintType( short sHint )
 		}
 	}
 
-	ALERT( at_aiconsole, "Couldn't validate hint type" );
+	ALERT( at_aiconsole, "Couldn't validate hint type\n" );
 	return FALSE;
 }
 
diff --git a/dlls/monsters.cpp b/dlls/monsters.cpp
index 953d1a69..3ff235ee 100644
--- a/dlls/monsters.cpp
+++ b/dlls/monsters.cpp
@@ -1208,13 +1208,19 @@ void CBaseMonster::SetActivity( Activity NewActivity )
 
 	iSequence = LookupActivity( NewActivity );
 
+	Activity OldActivity = m_Activity;
+	m_Activity = NewActivity; // Go ahead and set this so it doesn't keep trying when the anim is not present
+
+	// In case someone calls this with something other than the ideal activity
+	m_IdealActivity = m_Activity;
+
 	// Set to the desired anim, or default anim if the desired is not present
 	if( iSequence > ACTIVITY_NOT_AVAILABLE )
 	{
 		if( pev->sequence != iSequence || !m_fSequenceLoops )
 		{
 			// don't reset frame between walk and run
-			if( !( m_Activity == ACT_WALK || m_Activity == ACT_RUN ) || !( NewActivity == ACT_WALK || NewActivity == ACT_RUN ) )
+			if( !( OldActivity == ACT_WALK || OldActivity == ACT_RUN ) || !( NewActivity == ACT_WALK || NewActivity == ACT_RUN ) )
 				pev->frame = 0;
 		}
 
@@ -1228,11 +1234,6 @@ void CBaseMonster::SetActivity( Activity NewActivity )
 		ALERT( at_aiconsole, "%s has no sequence for act:%d\n", STRING( pev->classname ), NewActivity );
 		pev->sequence = 0;	// Set to the reset anim (if it's there)
 	}
-
-	m_Activity = NewActivity; // Go ahead and set this so it doesn't keep trying when the anim is not present
-
-	// In case someone calls this with something other than the ideal activity
-	m_IdealActivity = m_Activity;
 }
 
 //=========================================================
diff --git a/dlls/mp5.cpp b/dlls/mp5.cpp
index 8981d4d0..980e0014 100644
--- a/dlls/mp5.cpp
+++ b/dlls/mp5.cpp
@@ -195,7 +195,7 @@ void CMP5::PrimaryAttack()
 #else
 	flags = 0;
 #endif
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usMP5, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usMP5, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
 
 	if( !m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )
 		// HEV suit - indicate out of ammo condition
diff --git a/dlls/nodes.cpp b/dlls/nodes.cpp
index 04705638..6babe01d 100644
--- a/dlls/nodes.cpp
+++ b/dlls/nodes.cpp
@@ -21,6 +21,7 @@
 #include	"cbase.h"
 #include	"monsters.h"
 #include	"nodes.h"
+#include	"nodes_compat.h"
 #include	"animation.h"
 #include	"doors.h"
 
@@ -44,9 +45,7 @@ LINK_ENTITY_TO_CLASS( info_node_air, CNodeEnt )
 #if !defined _WIN32
 #include <unistd.h>
 #include <sys/stat.h>
-#define CreateDirectory(p, n) mkdir(p, 0777)
-#else
-#define CreateDirectory(p, n) CreateDirectoryA(p, n)
+#define CreateDirectoryA(p, n) mkdir(p, 0777)
 #endif
 
 //=========================================================
@@ -1701,9 +1700,9 @@ void CTestHull::BuildNodeGraph( void )
 	// make sure directories have been made
 	GET_GAME_DIR( szNrpFilename );
 	strcat( szNrpFilename, "/maps" );
-	CreateDirectory( szNrpFilename, NULL );
+	CreateDirectoryA( szNrpFilename, NULL );
 	strcat( szNrpFilename, "/graphs" );
-	CreateDirectory( szNrpFilename, NULL );
+	CreateDirectoryA( szNrpFilename, NULL );
 
 	strcat( szNrpFilename, "/" );
 	strcat( szNrpFilename, STRING( gpGlobals->mapname ) );
@@ -2375,9 +2374,9 @@ int CGraph::FLoadGraph( const char *szMapName )
 	char szDirName[MAX_PATH];
 	GET_GAME_DIR( szDirName );
 	strcat( szDirName, "/maps" );
-	CreateDirectory( szDirName, NULL );
+	CreateDirectoryA( szDirName, NULL );
 	strcat( szDirName, "/graphs" );
-	CreateDirectory( szDirName, NULL );
+	CreateDirectoryA( szDirName, NULL );
 
 	strcpy( szFilename, "maps/graphs/" );
 	strcat( szFilename, szMapName );
@@ -2386,42 +2385,47 @@ int CGraph::FLoadGraph( const char *szMapName )
 	pMemFile = aMemFile = LOAD_FILE_FOR_ME( szFilename, &length );
 
 	if( !aMemFile )
-	{
 		return FALSE;
-	}
-	else
+
+	// Read the graph version number
+	//
+	length -= sizeof(int);
+	if( length < 0 )
+		goto ShortFile;
+	iVersion = *(int *) pMemFile;
+	pMemFile += sizeof(int);
+
+	if( iVersion == GRAPH_VERSION || iVersion == GRAPH_VERSION_RETAIL )
 	{
-		// Read the graph version number
-		//
-		length -= sizeof(int);
-		if( length < 0 )
-			goto ShortFile;
-		memcpy( &iVersion, pMemFile, sizeof(int) );
-		pMemFile += sizeof(int);
-
-		if( iVersion != GRAPH_VERSION )
-		{
-			// This file was written by a different build of the dll!
-			//
-			ALERT( at_aiconsole, "**ERROR** Graph version is %d, expected %d\n", iVersion, GRAPH_VERSION );
-			goto ShortFile;
-		}
-
 		// Read the graph class
 		//
-		length -= sizeof(CGraph);
-		if( length < 0 )
-			goto ShortFile;
-		memcpy( this, pMemFile, sizeof(CGraph) );
-		pMemFile += sizeof(CGraph);
+		if ( iVersion == GRAPH_VERSION )
+		{
+			length -= sizeof(CGraph);
+			if( length < 0 )
+				goto ShortFile;
+			memcpy( this, pMemFile, sizeof(CGraph) );
+			pMemFile += sizeof(CGraph);
 
-		// Set the pointers to zero, just in case we run out of memory.
-		//
-		m_pNodes = NULL;
-		m_pLinkPool = NULL;
-		m_di = NULL;
-		m_pRouteInfo = NULL;
-		m_pHashLinks = NULL;
+			// Set the pointers to zero, just in case we run out of memory.
+			//
+			m_pNodes = NULL;
+			m_pLinkPool = NULL;
+			m_di = NULL;
+			m_pRouteInfo = NULL;
+			m_pHashLinks = NULL;
+		}
+#if _GRAPH_VERSION != _GRAPH_VERSION_RETAIL
+		else
+		{
+			ALERT( at_aiconsole, "Loading CGraph in GRAPH_VERSION 16 compatibility mode\n" );
+			length -= sizeof(CGraph_Retail);
+			if( length < 0 )
+				goto ShortFile;
+			reinterpret_cast<CGraph_Retail*>(pMemFile) -> copyOverTo(this);
+			pMemFile += sizeof(CGraph_Retail);
+		}
+#endif
 
 		// Malloc for the nodes
 		//
@@ -2453,11 +2457,25 @@ int CGraph::FLoadGraph( const char *szMapName )
 
 		// Read in all the links
 		//
-		length -= sizeof(CLink) * m_cLinks;
-		if( length < 0 )
-			goto ShortFile;
-		memcpy( m_pLinkPool, pMemFile, sizeof(CLink) * m_cLinks );
-		pMemFile += sizeof(CLink) * m_cLinks;
+		if( iVersion == GRAPH_VERSION )
+		{
+			length -= sizeof(CLink) * m_cLinks;
+			if( length < 0 )
+				goto ShortFile;
+			memcpy( m_pLinkPool, pMemFile, sizeof(CLink) * m_cLinks );
+			pMemFile += sizeof(CLink) * m_cLinks;
+		}
+#if _GRAPH_VERSION != _GRAPH_VERSION_RETAIL
+		else
+		{
+			ALERT( at_aiconsole, "Loading CLink array in GRAPH_VERSION 16 compatibility mode\n" );
+			length -= sizeof(CLink_Retail) * m_cLinks;
+			if( length < 0 )
+				goto ShortFile;
+			reinterpret_cast<CLink_Retail*>(pMemFile) -> copyOverTo(m_pLinkPool);
+			pMemFile += sizeof(CLink_Retail) * m_cLinks;
+		}
+#endif
 
 		// Malloc for the sorting info.
 		//
@@ -2482,7 +2500,7 @@ int CGraph::FLoadGraph( const char *szMapName )
 		m_pRouteInfo = (signed char *)calloc( sizeof(signed char), m_nRouteInfo );
 		if( !m_pRouteInfo )
 		{
-			ALERT( at_aiconsole, "***ERROR**\nCounldn't malloc %d route bytes!\n", m_nRouteInfo );
+			ALERT( at_aiconsole, "***ERROR**\nCouldn't malloc %d route bytes!\n", m_nRouteInfo );
 			goto NoMemory;
 		}
 		m_CheckedCounter = 0;
@@ -2505,7 +2523,7 @@ int CGraph::FLoadGraph( const char *szMapName )
 		m_pHashLinks = (short *)calloc( sizeof(short), m_nHashLinks );
 		if( !m_pHashLinks )
 		{
-			ALERT( at_aiconsole, "***ERROR**\nCounldn't malloc %d hash link bytes!\n", m_nHashLinks );
+			ALERT( at_aiconsole, "***ERROR**\nCouldn't malloc %d hash link bytes!\n", m_nHashLinks );
 			goto NoMemory;
 		}
 
@@ -2531,6 +2549,13 @@ int CGraph::FLoadGraph( const char *szMapName )
 
 		return TRUE;
 	}
+	else
+	{
+		// This file was written by a different build of the dll!
+		//
+		ALERT( at_aiconsole, "**ERROR** Graph version is %d, expected %d\n", iVersion, GRAPH_VERSION );
+		goto ShortFile;
+	}
 
 ShortFile:
 NoMemory:
@@ -2558,9 +2583,9 @@ int CGraph::FSaveGraph( const char *szMapName )
 	// make sure directories have been made
 	GET_GAME_DIR( szFilename );
 	strcat( szFilename, "/maps" );
-	CreateDirectory( szFilename, NULL );
+	CreateDirectoryA( szFilename, NULL );
 	strcat( szFilename, "/graphs" );
-	CreateDirectory( szFilename, NULL );
+	CreateDirectoryA( szFilename, NULL );
 
 	strcat( szFilename, "/" );
 	strcat( szFilename, szMapName );
diff --git a/dlls/nodes.h b/dlls/nodes.h
index 52b715e5..4bc1ec1b 100644
--- a/dlls/nodes.h
+++ b/dlls/nodes.h
@@ -105,11 +105,14 @@ typedef struct
 //=========================================================
 // CGraph 
 //=========================================================
+#define _GRAPH_VERSION_RETAIL 16 // Retail Half-Life graph version. Don't increment this
 #ifdef XASH_64BIT
-#define	GRAPH_VERSION	(int)16 * 10
+#define	_GRAPH_VERSION	(16 * 10)
 #else
-#define	GRAPH_VERSION	(int)16// !!!increment this whever graph/node/link classes change, to obsolesce older disk files.
+#define	_GRAPH_VERSION	(16) // !!!increment this whenever graph/node/link classes change, to obsolesce older disk files.
 #endif
+#define GRAPH_VERSION (int)_GRAPH_VERSION
+#define GRAPH_VERSION_RETAIL (int)_GRAPH_VERSION_RETAIL
 
 class CGraph
 {
diff --git a/dlls/nodes_compat.h b/dlls/nodes_compat.h
new file mode 100644
index 00000000..d73567e9
--- /dev/null
+++ b/dlls/nodes_compat.h
@@ -0,0 +1,143 @@
+
+#pragma once
+#ifndef NODES_32BIT_COMPAT
+#define NODES_32BIT_COMPAT
+
+//#include "nodes.h"
+
+#if _GRAPH_VERSION != _GRAPH_VERSION_RETAIL
+
+#include "stdint.h"
+
+typedef int32_t PTR32;
+
+class CGraph_Retail
+{
+public:
+
+	BOOL        m_fGraphPresent;
+	BOOL        m_fGraphPointersSet;
+	BOOL        m_fRoutingComplete;
+
+	PTR32       m_pNodes; // CNode*
+	PTR32       m_pLinkPool; // CLink*
+	PTR32       m_pRouteInfo; // signed char*
+
+	int         m_cNodes;
+	int         m_cLinks;
+	int         m_nRouteInfo;
+
+	PTR32       m_di; // DIST_INFO*
+	int         m_RangeStart[3][NUM_RANGES];
+	int         m_RangeEnd[3][NUM_RANGES];
+	float       m_flShortest;
+	int         m_iNearest;
+	int         m_minX, m_minY, m_minZ, m_maxX, m_maxY, m_maxZ;
+	int         m_minBoxX, m_minBoxY, m_minBoxZ, m_maxBoxX, m_maxBoxY, m_maxBoxZ;
+	int         m_CheckedCounter;
+	float       m_RegionMin[3], m_RegionMax[3];
+	CACHE_ENTRY m_Cache[CACHE_SIZE];
+
+
+	int         m_HashPrimes[16];
+	PTR32       m_pHashLinks; // short*
+	int         m_nHashLinks;
+
+	int         m_iLastActiveIdleSearch;
+
+	int         m_iLastCoverSearch;
+
+
+	void copyOverTo(CGraph *other) {
+		other->m_fGraphPresent	= m_fGraphPresent;
+		other->m_fGraphPointersSet	= m_fGraphPointersSet;
+		other->m_fRoutingComplete	= m_fRoutingComplete;
+
+		other->m_pNodes = NULL;
+		other->m_pLinkPool = NULL;
+		other->m_pRouteInfo = NULL;
+
+		other->m_cNodes	= m_cNodes;
+		other->m_cLinks	= m_cLinks;
+		other->m_nRouteInfo	= m_nRouteInfo;
+
+		other->m_di = NULL;
+
+		memcpy( (void *) &other->m_RangeStart, (void *) m_RangeStart,
+				offsetof(class CGraph, m_pHashLinks) - offsetof(class CGraph, m_RangeStart) );
+
+#if 0	          // replacement routine in case a change in CGraph breaks the above memcpy
+		for (int i = 0; i < 3; ++i)
+			for (int j = 0; j < NUM_RANGES; ++j)
+				other->m_RangeStart[i][j] = m_RangeStart[i][j];
+//		m_RangeStart[3][NUM_RANGES]
+		for (int i = 0; i < 3; ++i)
+			for (int j = 0; j < NUM_RANGES; ++j)
+				other->m_RangeEnd[i][j] = m_RangeEnd[i][j];
+//		m_RangeEnd[3][NUM_RANGES]
+		other->m_flShortest	= m_flShortest;
+		other->m_iNearest	= m_iNearest;
+		other->m_minX	= m_minX;
+		other->m_minY	= m_minY;
+		other->m_minZ	= m_minZ;
+		other->m_maxX	= m_maxX;
+		other->m_maxY	= m_maxY;
+		other->m_maxZ	= m_maxZ;
+		other->m_minBoxX	= m_minBoxX;
+		other->m_minBoxY	= m_minBoxY;
+		other->m_minBoxZ	= m_minBoxZ;
+		other->m_maxBoxX	= m_maxBoxX;
+		other->m_maxBoxY	= m_maxBoxY;
+		other->m_maxBoxZ	= m_maxBoxZ;
+		other->m_CheckedCounter	= m_CheckedCounter;
+		for (int i = 0; i < 3; ++i)
+			other->m_RegionMin[i]	= m_RegionMin[i];
+//		m_RegionMin[3]
+		for (int i = 0; i < 3; ++i)
+			other->m_RegionMax[i]	= m_RegionMax[i];
+//		m_RegionMax[3]
+		for (int i = 0; i < CACHE_SIZE; ++i)
+			other->m_Cache[i]	= m_Cache[i];
+//		m_Cache[CACHE_SIZE]
+		for (int i = 0; i < 16; ++i)
+			other->m_HashPrimes[i]	= m_HashPrimes[i];
+//		m_HashPrimes[16]
+#endif
+
+		other->m_pHashLinks = NULL;
+		other->m_nHashLinks	= m_nHashLinks;
+
+		other->m_iLastActiveIdleSearch	= m_iLastActiveIdleSearch;
+
+		other->m_iLastCoverSearch	= m_iLastCoverSearch;
+
+	}
+
+};
+
+
+class CLink_Retail
+{
+
+public:
+	int		m_iSrcNode;
+	int		m_iDestNode;
+	PTR32	m_pLinkEnt; // entvars_t*
+	char	m_szLinkEntModelname[ 4 ];
+	int		m_afLinkInfo;
+	float	m_flWeight;
+
+	void copyOverTo(CLink* other) {
+		other->m_iSrcNode	= m_iSrcNode;
+		other->m_iDestNode	= m_iDestNode	;
+		other->m_pLinkEnt	= NULL;
+		for (int i = 0; i < 4; ++i)
+			other->m_szLinkEntModelname[i]	= m_szLinkEntModelname[i];
+//		m_szLinkEntModelname[ 4 ]
+		other->m_afLinkInfo	= m_afLinkInfo;
+		other->m_flWeight	= m_flWeight;
+	}
+};
+
+#endif
+#endif
diff --git a/dlls/plats.cpp b/dlls/plats.cpp
index b3e1c683..5a96a36b 100644
--- a/dlls/plats.cpp
+++ b/dlls/plats.cpp
@@ -1059,7 +1059,7 @@ void CFuncTrackTrain::StopSound( void )
 		us_encode = us_sound;
 
 		PLAYBACK_EVENT_FULL( FEV_RELIABLE | FEV_UPDATE, edict(), m_usAdjustPitch, 0.0, 
-			(float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, us_encode, 0, 1, 0 );
+			g_vecZero, g_vecZero, 0.0, 0.0, us_encode, 0, 1, 0 );
 		/*
 		STOP_SOUND( ENT( pev ), CHAN_STATIC, STRING( pev->noise ) );
 		*/
@@ -1107,7 +1107,7 @@ void CFuncTrackTrain::UpdateSound( void )
 		us_encode = us_sound | us_pitch | us_volume;
 
 		PLAYBACK_EVENT_FULL( FEV_RELIABLE | FEV_UPDATE, edict(), m_usAdjustPitch, 0.0,
-			(float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, us_encode, 0, 0, 0 );
+			g_vecZero, g_vecZero, 0.0, 0.0, us_encode, 0, 0, 0 );
 	}
 }
 
diff --git a/dlls/python.cpp b/dlls/python.cpp
index 90606c50..88aa34b5 100644
--- a/dlls/python.cpp
+++ b/dlls/python.cpp
@@ -200,7 +200,7 @@ void CPython::PrimaryAttack()
 #else
 	flags = 0;
 #endif
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usFirePython, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usFirePython, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
 
 	if( !m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )
 		// HEV suit - indicate out of ammo condition
diff --git a/dlls/scientist.cpp b/dlls/scientist.cpp
index 7e94b286..cc506b6f 100644
--- a/dlls/scientist.cpp
+++ b/dlls/scientist.cpp
@@ -695,12 +695,6 @@ void CScientist::TalkInit()
 {
 	CTalkMonster::TalkInit();
 
-	// scientist will try to talk to friends in this order:
-
-	m_szFriends[0] = "monster_scientist";
-	m_szFriends[1] = "monster_sitting_scientist";
-	m_szFriends[2] = "monster_barney";
-
 	// scientists speach group names (group names are in sentences.txt)
 
 	m_szGrp[TLK_ANSWER] = "SC_ANSWER";
diff --git a/dlls/shotgun.cpp b/dlls/shotgun.cpp
index eb36c6b7..fb5e0daf 100644
--- a/dlls/shotgun.cpp
+++ b/dlls/shotgun.cpp
@@ -152,7 +152,7 @@ void CShotgun::PrimaryAttack()
 
 	Vector vecDir = m_pPlayer->FireBulletsPlayer( 16, vecSrc, vecAiming, VECTOR_CONE_DM_SHOTGUN, 2048, BULLET_PLAYER_BUCKSHOT, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
 
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usSingleFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usSingleFire, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
 
 	if( !m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )
 		// HEV suit - indicate out of ammo condition
@@ -224,7 +224,7 @@ void CShotgun::SecondaryAttack( void )
 		vecDir = m_pPlayer->FireBulletsPlayer( 12, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 2048, BULLET_PLAYER_BUCKSHOT, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
 	}
 
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usDoubleFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usDoubleFire, 0.0, g_vecZero, g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
 
 	if( !m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )
 		// HEV suit - indicate out of ammo condition
diff --git a/dlls/sound.cpp b/dlls/sound.cpp
index 30c44326..6637fe53 100644
--- a/dlls/sound.cpp
+++ b/dlls/sound.cpp
@@ -1037,9 +1037,8 @@ void USENTENCEG_InitLRU( unsigned char *plru, int count )
 
 int USENTENCEG_PickSequential( int isentenceg, char *szfound, int ipick, int freset )
 {
-	char *szgroupname;
+	const char *szgroupname;
 	unsigned char count;
-	char sznum[8];
 
 	if( !fSentencesInit )
 		return -1;
@@ -1056,10 +1055,7 @@ int USENTENCEG_PickSequential( int isentenceg, char *szfound, int ipick, int fre
 	if( ipick >= count )
 		ipick = count - 1;
 
-	strcpy( szfound, "!" );
-	strcat( szfound, szgroupname );
-	sprintf( sznum, "%d", ipick );
-	strcat( szfound, sznum );
+	sprintf( szfound, "!%s%d", szgroupname, ipick );
 
 	if( ipick >= count )
 	{
@@ -1083,11 +1079,10 @@ int USENTENCEG_PickSequential( int isentenceg, char *szfound, int ipick, int fre
 
 int USENTENCEG_Pick( int isentenceg, char *szfound )
 {
-	char *szgroupname;
+	const char *szgroupname;
 	unsigned char *plru;
 	unsigned char i;
 	unsigned char count;
-	char sznum[8];
 	unsigned char ipick;
 	int ffound = FALSE;
 
@@ -1116,10 +1111,8 @@ int USENTENCEG_Pick( int isentenceg, char *szfound )
 			USENTENCEG_InitLRU( plru, count );
 		else
 		{
-			strcpy( szfound, "!" );
-			strcat( szfound, szgroupname );
-			sprintf( sznum, "%d", ipick );
-			strcat( szfound, sznum );
+			sprintf( szfound, "!%s%d", szgroupname, ipick );
+
 			return ipick;
 		}
 	}
@@ -1227,7 +1220,6 @@ int SENTENCEG_PlaySequentialSz( edict_t *entity, const char *szgroupname, float
 void SENTENCEG_Stop( edict_t *entity, int isentenceg, int ipick )
 {
 	char buffer[64];
-	char sznum[8];
 
 	if( !fSentencesInit )
 		return;
@@ -1235,10 +1227,7 @@ void SENTENCEG_Stop( edict_t *entity, int isentenceg, int ipick )
 	if( isentenceg < 0 || ipick < 0 )
 		return;
 	
-	strcpy( buffer, "!" );
-	strcat( buffer, rgsentenceg[isentenceg].szgroupname );
-	sprintf( sznum, "%d", ipick );
-	strcat( buffer, sznum );
+	sprintf( buffer, "!%s%d", rgsentenceg[isentenceg].szgroupname, ipick );
 
 	STOP_SOUND( entity, CHAN_VOICE, buffer );
 }
@@ -1369,9 +1358,8 @@ void SENTENCEG_Init()
 
 int SENTENCEG_Lookup( const char *sample, char *sentencenum )
 {
-	char sznum[8];
-
 	int i;
+
 	// this is a sentence name; lookup sentence number
 	// and give to engine as string.
 	for( i = 0; i < gcallsentences; i++ )
@@ -1379,9 +1367,7 @@ int SENTENCEG_Lookup( const char *sample, char *sentencenum )
 		{
 			if( sentencenum )
 			{
-				strcpy( sentencenum, "!" );
-				sprintf( sznum, "%d", i );
-				strcat( sentencenum, sznum );
+				sprintf(sentencenum, "!%d", i);
 			}
 			return i;
 		}
diff --git a/dlls/squeakgrenade.cpp b/dlls/squeakgrenade.cpp
index bfe17ed1..a7295599 100644
--- a/dlls/squeakgrenade.cpp
+++ b/dlls/squeakgrenade.cpp
@@ -508,7 +508,7 @@ void CSqueak::PrimaryAttack()
 #else
 		flags = 0;
 #endif
-		PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usSnarkFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
+		PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usSnarkFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
 
 		if( tr.fAllSolid == 0 && tr.fStartSolid == 0 && tr.flFraction > 0.25 )
 		{
diff --git a/dlls/subs.cpp b/dlls/subs.cpp
index 2a299ce4..e24a5c08 100644
--- a/dlls/subs.cpp
+++ b/dlls/subs.cpp
@@ -407,6 +407,13 @@ void CBaseToggle::LinearMove( Vector vecDest, float flSpeed )
 	// divide vector length by speed to get time to reach dest
 	float flTravelTime = vecDestDelta.Length() / flSpeed;
 
+	if( flTravelTime < 0.05 )
+	{
+		UTIL_SetOrigin( pev, m_vecFinalDest );
+		LinearMoveDone();
+		return;
+	}
+
 	// set nextthink to trigger a call to LinearMoveDone when dest is reached
 	pev->nextthink = pev->ltime + flTravelTime;
 	SetThink( &CBaseToggle::LinearMoveDone );
diff --git a/dlls/tripmine.cpp b/dlls/tripmine.cpp
index 94907bcd..6e8fc2fc 100644
--- a/dlls/tripmine.cpp
+++ b/dlls/tripmine.cpp
@@ -444,7 +444,7 @@ void CTripmine::PrimaryAttack( void )
 #else
 	flags = 0;
 #endif
-	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usTripFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
+	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usTripFire, 0.0, g_vecZero, g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
 
 	if( tr.flFraction < 1.0 )
 	{
diff --git a/dlls/util.cpp b/dlls/util.cpp
index c7feab31..a5160876 100644
--- a/dlls/util.cpp
+++ b/dlls/util.cpp
@@ -1733,8 +1733,8 @@ void CSaveRestoreBuffer::BufferRewind( int size )
 extern "C" {
 unsigned _rotr( unsigned val, int shift )
 {
-	register unsigned lobit;	/* non-zero means lo bit set */
-	register unsigned num = val;	/* number to rotate */
+	unsigned lobit;	/* non-zero means lo bit set */
+	unsigned num = val;	/* number to rotate */
 
 	shift &= 0x1f;			/* modulo 32 -- this will also make
 	                                   negative shifts work */
diff --git a/dlls/util.h b/dlls/util.h
index 41e86a84..602380ba 100644
--- a/dlls/util.h
+++ b/dlls/util.h
@@ -552,8 +552,8 @@ void EMIT_GROUPNAME_SUIT(edict_t *entity, const char *groupname);
 
 #define RANDOM_SOUND_ARRAY( array ) (array) [ RANDOM_LONG(0,ARRAYSIZE( (array) )-1) ]
 
-#define PLAYBACK_EVENT( flags, who, index ) PLAYBACK_EVENT_FULL( flags, who, index, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
-#define PLAYBACK_EVENT_DELAY( flags, who, index, delay ) PLAYBACK_EVENT_FULL( flags, who, index, delay, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
+#define PLAYBACK_EVENT( flags, who, index ) PLAYBACK_EVENT_FULL( flags, who, index, 0, g_vecZero, g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
+#define PLAYBACK_EVENT_DELAY( flags, who, index, delay ) PLAYBACK_EVENT_FULL( flags, who, index, delay, g_vecZero, g_vecZero, 0.0, 0.0, 0, 0, 0, 0 );
 
 #define GROUP_OP_AND	0
 #define GROUP_OP_NAND	1
diff --git a/dlls/wscript b/dlls/wscript
new file mode 100644
index 00000000..05a7d002
--- /dev/null
+++ b/dlls/wscript
@@ -0,0 +1,72 @@
+#! /usr/bin/env python
+# encoding: utf-8
+# a1batross, mittorn, 2018
+
+from waflib import Utils
+import os
+ 
+def options(opt):
+	# stub
+	return
+
+def configure(conf):
+	# stub
+	return
+
+def build(bld):
+	defines = []
+	source = bld.path.parent.ant_glob([
+		'pm_shared/*.c',
+	])
+	
+	source += [
+		'agrunt.cpp', 'airtank.cpp', 'aflock.cpp', 'animating.cpp', 'animation.cpp', 'apache.cpp', 
+		'barnacle.cpp', 'barney.cpp', 'bigmomma.cpp', 'bloater.cpp', 'bmodels.cpp', 'bullsquid.cpp', 'buttons.cpp', 
+		'cbase.cpp', 'client.cpp', 'combat.cpp', 'controller.cpp', 'crossbow.cpp', 'crowbar.cpp', 
+		'defaultai.cpp', 'doors.cpp', 
+		'effects.cpp', 'egon.cpp', 'explode.cpp', 
+		'flyingmonster.cpp', 'func_break.cpp', 'func_tank.cpp', 
+		'game.cpp', 'gamerules.cpp', 'gargantua.cpp', 'gauss.cpp', 'genericmonster.cpp', 'ggrenade.cpp', 'globals.cpp', 'glock.cpp', 'gman.cpp', 
+		'h_ai.cpp', 'h_battery.cpp', 'h_cine.cpp', 'h_cycler.cpp', 'h_export.cpp', 'handgrenade.cpp', 'hassassin.cpp', 'headcrab.cpp', 
+		'healthkit.cpp', 'hgrunt.cpp', 'hornet.cpp', 'hornetgun.cpp', 'houndeye.cpp', 
+		'ichthyosaur.cpp', 'islave.cpp', 'items.cpp', 
+		'leech.cpp', 'lights.cpp', 
+		'maprules.cpp', 'monstermaker.cpp', 'monsters.cpp', 'monsterstate.cpp', 'mortar.cpp', 'mp5.cpp', 'multiplay_gamerules.cpp', 
+		'nihilanth.cpp', 'nodes.cpp', 
+		'observer.cpp', 'osprey.cpp', 
+		'pathcorner.cpp', 'plane.cpp', 'plats.cpp', 'player.cpp', 'playermonster.cpp', 'python.cpp', 
+		'rat.cpp', 'roach.cpp', 'rpg.cpp', 
+		'satchel.cpp', 'schedule.cpp', 'scientist.cpp', 'scripted.cpp', 'shotgun.cpp', 'singleplay_gamerules.cpp', 'skill.cpp', 
+		'sound.cpp', 'soundent.cpp', 'spectator.cpp', 'squadmonster.cpp', 'squeakgrenade.cpp', 'subs.cpp', 
+		'talkmonster.cpp', 'teamplay_gamerules.cpp', 'tempmonster.cpp', 'tentacle.cpp', 
+		'triggers.cpp', 'tripmine.cpp', 'turret.cpp', 
+		'util.cpp', 
+		'weapons.cpp', 'world.cpp', 'xen.cpp', 'zombie.cpp']
+		
+	if bld.env.VOICEMGR:
+		source += bld.path.parent.ant_glob([
+			'game_shared/voice_gamemgr.cpp',
+		])
+	else:
+		defines += ['NO_VOICEGAMEMGR']
+
+	includes = Utils.to_list('. wpn_shared ../common ../engine ../pm_shared ../game_shared ../public')
+
+	libs = []
+
+	if bld.env.DEST_OS2 not in ['android']:
+		install_path = os.path.join(bld.env.GAMEDIR, bld.env.SERVER_DIR)
+	else:
+		install_path = bld.env.PREFIX
+
+	bld.shlib(
+		source   = source,
+		target   = 'server',
+		features = 'c cxx',
+		includes = includes,
+		defines  = defines,
+		use      = libs,
+		install_path = install_path,
+		subsystem = bld.env.MSVC_SUBSYSTEM,
+		idx      = 2
+	)
diff --git a/engine/cdll_int.h b/engine/cdll_int.h
index abfc43bd..8ab903b0 100644
--- a/engine/cdll_int.h
+++ b/engine/cdll_int.h
@@ -169,7 +169,7 @@ typedef struct cl_enginefuncs_s
 	int	(*GetWindowCenterX)( void );
 	int	(*GetWindowCenterY)( void );
 	void	(*GetViewAngles)( float * );
-	void	(*SetViewAngles)( float * );
+	void	(*SetViewAngles)( const float * );
 	int	(*GetMaxClients)( void );
 	void	(*Cvar_SetValue)( const char *cvar, float value );
 
@@ -195,20 +195,20 @@ typedef struct cl_enginefuncs_s
 
 	float	(*GetClientTime)( void );
 	void	(*V_CalcShake)( void );
-	void	(*V_ApplyShake)( float *origin, float *angles, float factor );
+	void	(*V_ApplyShake)( const float *origin, const float *angles, float factor );
 
-	int	(*PM_PointContents)( float *point, int *truecontents );
-	int	(*PM_WaterEntity)( float *p );
-	struct pmtrace_s *(*PM_TraceLine)( float *start, float *end, int flags, int usehull, int ignore_pe );
+	int	(*PM_PointContents)( const float *point, int *truecontents );
+	int	(*PM_WaterEntity)( const float *p );
+	struct pmtrace_s *(*PM_TraceLine)( const float *start, const float *end, int flags, int usehull, int ignore_pe );
 
 	struct model_s *(*CL_LoadModel)( const char *modelname, int *index );
 	int	(*CL_CreateVisibleEntity)( int type, struct cl_entity_s *ent );
 
 	const struct model_s* (*GetSpritePointer)( HSPRITE hSprite );
-	void	(*pfnPlaySoundByNameAtLocation)( const char *szSound, float volume, float *origin );
+	void	(*pfnPlaySoundByNameAtLocation)( const char *szSound, float volume, const float *origin );
 	
 	unsigned short (*pfnPrecacheEvent)( int type, const char* psz );
-	void	(*pfnPlaybackEvent)( int flags, const struct edict_s *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
+	void	(*pfnPlaybackEvent)( int flags, const struct edict_s *pInvoker, unsigned short eventindex, float delay, const float *origin, const float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
 	void	(*pfnWeaponAnim)( int iAnim, int body );
 	float	(*pfnRandomFloat)( float flLow, float flHigh );	
 	int	(*pfnRandomLong)( int lLow, int lHigh );
diff --git a/engine/eiface.h b/engine/eiface.h
index f6cf2f51..6a5f86fc 100644
--- a/engine/eiface.h
+++ b/engine/eiface.h
@@ -124,7 +124,7 @@ typedef struct enginefuncs_s
 	int	(*pfnWalkMove)( edict_t *ent, float yaw, float dist, int iMode );
 	void	(*pfnSetOrigin)( edict_t *e, const float *rgflOrigin );
 	void	(*pfnEmitSound)( edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch );
-	void	(*pfnEmitAmbientSound)( edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch );
+	void	(*pfnEmitAmbientSound)( edict_t *entity, const float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch );
 	void	(*pfnTraceLine)( const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr );
 	void	(*pfnTraceToss)( edict_t* pent, edict_t* pentToIgnore, TraceResult *ptr );
 	int	(*pfnTraceMonsterHull)( edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr );
@@ -219,10 +219,10 @@ typedef struct enginefuncs_s
 	void	(*pfnSetPhysicsKeyValue)( const edict_t *pClient, const char *key, const char *value );
 	const char *(*pfnGetPhysicsInfoString)( const edict_t *pClient );
 	unsigned short (*pfnPrecacheEvent)( int type, const char*psz );
-	void	(*pfnPlaybackEvent)( int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
-	
-	unsigned char *(*pfnSetFatPVS)( float *org );
-	unsigned char *(*pfnSetFatPAS)( float *org );
+	void	(*pfnPlaybackEvent)( int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, const float *origin, const float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
+
+	unsigned char *(*pfnSetFatPVS)( const float *org );
+	unsigned char *(*pfnSetFatPAS)( const float *org );
 
 	int	(*pfnCheckVisibility )( const edict_t *entity, unsigned char *pset );
 
@@ -241,7 +241,7 @@ typedef struct enginefuncs_s
 	// Forces the client and server to be running with the same version of the specified file
 	//  ( e.g., a player model ).
 	// Calling this has no effect in single player
-	void	(*pfnForceUnmodified)( FORCE_TYPE type, float *mins, float *maxs, const char *filename );
+	void	(*pfnForceUnmodified)( FORCE_TYPE type, const float *mins, const float *maxs, const char *filename );
 
 	void	(*pfnGetPlayerStats)( const edict_t *pClient, int *ping, int *packet_loss );
 
@@ -355,7 +355,7 @@ typedef enum _fieldtypes
 	FIELD_TYPECOUNT		// MUST BE LAST
 } FIELDTYPE;
 
-#if !defined(offsetof) && !defined(GNUC)
+#if !defined(offsetof) && !defined(__GNUC__)
 #define offsetof(s,m)	(size_t)&(((s *)0)->m)
 #endif
 
diff --git a/gnu.txt b/gnu.txt
deleted file mode 100644
index e587591e..00000000
--- a/gnu.txt
+++ /dev/null
@@ -1,621 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/scripts/waifulib/xcompile.py b/scripts/waifulib/xcompile.py
new file mode 100644
index 00000000..3244a95a
--- /dev/null
+++ b/scripts/waifulib/xcompile.py
@@ -0,0 +1,302 @@
+# encoding: utf-8
+# xcompile.py -- crosscompiling utils
+# Copyright (C) 2018 a1batross
+# This program 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.
+#
+# This program 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.
+
+try: from fwgslib import get_flags_by_compiler
+except: from waflib.extras.fwgslib import get_flags_by_compiler
+from waflib import Logs
+import os
+import sys
+
+# Output:
+#  CROSSCOMPILING -- set to true, if crosscompiling is enabled
+#  DEST_OS2 -- as some operating systems is built on top of another, it's better to not change DEST_OS,
+#              instead of this DEST_OS2 is defined with target value
+#              For example: android is built on top of linux and have many things in common,
+#              but it can't be considered as default GNU/Linux.
+#              Possible values:
+#                 DEST_OS2    DEST_OS
+#                 'android'   'linux'
+
+# This class does support ONLY r10e and r19c NDK
+class Android:
+	ctx            = None # waf context
+	arch           = None
+	toolchain      = None
+	api            = None
+	toolchain_path = None
+	ndk_home       = None
+	ndk_rev        = 0
+	is_hardfloat   = False
+	clang          = False
+	
+	def __init__(self, ctx, arch, toolchain, api):
+		self.ctx = ctx
+		for i in ['ANDROID_NDK_HOME', 'ANDROID_NDK']:
+			self.ndk_home = os.getenv(i)
+			if self.ndk_home != None:
+				break
+
+		if not self.ndk_home:
+			conf.fatal('Set ANDROID_NDK_HOME environment variable pointing to the root of Android NDK!')		
+
+		# TODO: this were added at some point of NDK development
+		# but I don't know at which version
+		# r10e don't have it
+		source_prop = os.path.join(self.ndk_home, 'source.properties')
+		if os.path.exists(source_prop):
+			with open(source_prop) as ndk_props_file:
+				for line in ndk_props_file.readlines():
+					tokens = line.split('=')
+					trimed_tokens = [token.strip() for token in tokens]
+
+					if 'Pkg.Revision' in trimed_tokens:
+						self.ndk_rev = int(trimed_tokens[1].split('.')[0])
+		else:
+			self.ndk_rev = 10
+
+		if self.ndk_rev not in [10, 19]:
+			ctx.fatal('Unknown NDK revision: {}'.format(self.ndk_rev))
+
+		self.arch = arch
+		if self.arch == 'armeabi-v7a-hard':
+			if self.ndk_rev <= 10:
+				self.arch = 'armeabi-v7a' # Only armeabi-v7a have hard float ABI
+				self.is_hardfloat = True
+			else:
+				raise Exception('NDK does not support hardfloat ABI')
+
+		self.toolchain = toolchain
+
+		if self.ndk_rev >= 19 or 'clang' in self.toolchain:
+			self.clang = True
+
+		if self.is_arm64() or self.is_amd64() and self.api < 21:
+			Logs.warn('API level for 64-bit target automatically was set to 21')
+			self.api = 21
+		elif self.ndk_rev >= 19 and self.api < 16:
+			Logs.warn('API level automatically was set to 16 due to NDK support')
+			self.api = 16
+		else: self.api = api
+		self.toolchain_path = self.gen_toolchain_path()
+
+	# TODO: Crystax support?
+	# TODO: Support for everything else than linux-x86_64?
+	# TODO: Determine if I actually need to implement listed above
+
+	def is_arm(self):
+		'''
+		Checks if selected architecture is **32-bit** ARM
+		'''
+		return self.arch.startswith('armeabi')
+
+	def is_x86(self):
+		'''
+		Checks if selected architecture is **32-bit** or **64-bit** x86
+		'''
+		return self.arch == 'x86'
+
+	def is_amd64(self):
+		'''
+		Checks if selected architecture is **64-bit** x86
+		'''
+		return self.arch == 'x86_64'
+
+	def is_arm64(self):
+		'''
+		Checks if selected architecture is AArch64
+		'''
+		return self.arch == 'aarch64'
+
+	def is_clang(self):
+		'''
+		Checks if selected toolchain is Clang (TODO)
+		'''
+		return self.clang
+
+	def is_hardfp(self):
+		return self.is_hardfloat
+
+	def gen_toolchain_path(self):
+		path = 'toolchains'
+
+		if sys.platform.startswith('linux'):
+			toolchain_host = 'linux'
+		elif sys.platform.startswith('darwin'):
+			toolchain_host = 'darwin'
+		elif sys.platform.startswith('win32') or sys.platform.startswith('cygwin'):
+			toolchain_host = 'windows'
+		else: raise Exception('Unsupported by NDK host platform')
+
+		toolchain_host += '-'
+
+		# Assuming we are building on x86
+		if sys.maxsize > 2**32: 
+			toolchain_host += 'x86_64'
+		else: toolchain_host += 'x86'
+
+		if self.is_clang():
+			if self.ndk_rev < 19:
+				raise Exception('Clang is not supported for this NDK')
+
+			toolchain_folder = 'llvm'
+
+			if self.is_x86():
+				triplet = 'i686-linux-android{}-'.format(self.api)
+			elif self.is_arm():
+				triplet = 'armv7a-linux-androideabi{}-'.format(self.api)
+			else:
+				triplet = self.arch + '-linux-android{}-'.format(self.api)
+		else:
+			if self.is_x86() or self.is_amd64():
+				toolchain_folder = self.arch + '-' + self.toolchain
+			elif self.is_arm():
+				toolchain_folder = 'arm-linux-androideabi-' + self.toolchain
+			else:
+				toolchain_folder = self.arch + '-linux-android-' + self.toolchain
+
+			if self.is_x86():
+				triplet = 'i686-linux-android-'
+			elif self.is_arm():
+				triplet = 'arm-linux-androideabi-'
+			else:
+				triplet = self.arch + '-linux-android-'
+
+		return os.path.join(path, toolchain_folder, 'prebuilt', toolchain_host, 'bin', triplet)
+
+	def cc(self):
+		return os.path.abspath(os.path.join(self.ndk_home, self.toolchain_path + ('clang' if self.is_clang() else 'gcc')))
+
+	def cxx(self):
+		return os.path.abspath(os.path.join(self.ndk_home, self.toolchain_path + ('clang++' if self.is_clang() else 'g++')))
+
+	def system_stl(self):
+		# TODO: proper STL support
+		return os.path.abspath(os.path.join(self.ndk_home, 'sources', 'cxx-stl', 'system', 'include'))
+
+	def sysroot(self):
+		if self.ndk_rev >= 19:
+			return os.path.abspath(os.path.join(self.ndk_home, 'sysroot'))
+		else:
+			arch = self.arch
+			if self.is_arm():
+				arch = 'arm'
+			elif self.is_arm64():
+				arch = 'arm64'
+			path = 'platforms/android-{}/arch-{}'.format(self.api, arch)
+
+			return os.path.abspath(os.path.join(self.ndk_home, path))
+
+	def cflags(self):
+		cflags = ['--sysroot={0}'.format(self.sysroot()), '-DANDROID', '-D__ANDROID__']
+		cflags += ['-I{0}'.format(self.system_stl())]
+		if self.is_arm():
+			if self.arch == 'armeabi-v7a':
+				# ARMv7 support
+				cflags += ['-mthumb', '-mfpu=neon', '-mcpu=cortex-a9', '-DHAVE_EFFICIENT_UNALIGNED_ACCESS', '-DVECTORIZE_SINCOS']
+				if not self.is_clang():
+					cflags += [ '-mvectorize-with-neon-quad' ]
+				if self.is_hardfloat:
+					cflags += ['-D_NDK_MATH_NO_SOFTFP=1', '-mhard-float', '-mfloat-abi=hard', '-DLOAD_HARDFP', '-DSOFTFP_LINK']
+				else:
+					cflags += ['-mfloat-abi=softfp']
+			else:
+				# ARMv5 support
+				cflags += ['-march=armv5te', '-mtune=xscale', '-msoft-float']
+		elif self.is_x86():
+			cflags += ['-mtune=atom', '-march=atom', '-mssse3', '-mfpmath=sse', '-DVECTORIZE_SINCOS', '-DHAVE_EFFICIENT_UNALIGNED_ACCESS']
+		return cflags
+
+	# they go before object list
+	def linkflags(self):
+		linkflags = ['--sysroot={0}'.format(self.sysroot())]
+		return linkflags
+
+	def ldflags(self):
+		ldflags = ['-lgcc', '-no-canonical-prefixes']
+		if self.is_arm():
+			if self.arch == 'armeabi-v7a':
+				ldflags += ['-march=armv7-a', '-Wl,--fix-cortex-a8', '-mthumb']
+				if self.is_hardfloat:
+					ldflags += ['-Wl,--no-warn-mismatch', '-lm_hard']
+			else:
+				ldflags += ['-march=armv5te']
+		return ldflags
+
+def options(opt):
+	android = opt.add_option_group('Android options')
+	android.add_option('--android', action='store', dest='ANDROID_OPTS', default=None,
+		help='enable building for android, format: --android=<arch>,<toolchain>,<api>, example: --android=armeabi-v7a-hard,4.9,9')
+
+def configure(conf):
+	if conf.options.ANDROID_OPTS:
+		values = conf.options.ANDROID_OPTS.split(',')
+		if len(values) != 3:
+			conf.fatal('Invalid --android paramater value!')
+
+		valid_archs = ['x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'armeabi-v7a-hard', 'aarch64', 'mipsel', 'mips64el']
+
+		if values[0] not in valid_archs:
+			conf.fatal('Unknown arch: {}. Supported: {}'.format(values[0], ', '.join(valid_archs)))
+
+		android = Android(conf, values[0], values[1], int(values[2]))
+		setattr(conf, 'android', android)
+		conf.environ['CC'] = android.cc()
+		conf.environ['CXX'] = android.cxx()
+		conf.env.CFLAGS += android.cflags()
+		conf.env.CXXFLAGS += android.cflags()
+		conf.env.LINKFLAGS += android.linkflags()
+		conf.env.LDFLAGS += android.ldflags()
+
+		conf.env.HAVE_M = True
+		if android.is_hardfp():
+			conf.env.LIB_M = ['m_hard']
+		else: conf.env.LIB_M = ['m']
+
+		conf.env.PREFIX = '/lib/{}'.format(android.arch)
+
+		conf.msg('Selected Android NDK', '{}, version: {}'.format(android.ndk_home, android.ndk_rev))
+		# no need to print C/C++ compiler, as it would be printed by compiler_c/cxx
+		conf.msg('... C/C++ flags', ' '.join(android.cflags()).replace(android.ndk_home, '$NDK'))
+		conf.msg('... link flags', ' '.join(android.linkflags()).replace(android.ndk_home, '$NDK'))
+		conf.msg('... ld flags', ' '.join(android.ldflags()).replace(android.ndk_home, '$NDK'))
+
+		# conf.env.ANDROID_OPTS = android
+		conf.env.DEST_OS2 = 'android'
+#	else:
+#		conf.load('compiler_c compiler_cxx') # Use host compiler :)
+
+def post_compiler_cxx_configure(conf):
+	if conf.options.ANDROID_OPTS:
+		if conf.android.ndk_rev >= 19:
+			conf.env.CXXFLAGS_cxxshlib += ['-static-libstdc++']
+			conf.env.LDFLAGS_cxxshlib += ['-static-libstdc++']
+	return
+
+def post_compiler_c_configure(conf):
+	return
+
+from waflib.Tools import compiler_cxx, compiler_c
+
+compiler_cxx_configure = getattr(compiler_cxx, 'configure')
+compiler_c_configure = getattr(compiler_c, 'configure')
+
+def patch_compiler_cxx_configure(conf):
+	compiler_cxx_configure(conf)
+	post_compiler_cxx_configure(conf)
+
+def patch_compiler_c_configure(conf):
+	compiler_c_configure(conf)
+	post_compiler_c_configure(conf)
+
+setattr(compiler_cxx, 'configure', patch_compiler_cxx_configure)
+setattr(compiler_c, 'configure', patch_compiler_c_configure)
diff --git a/waf b/waf
new file mode 100755
index 00000000..b35987aa
--- /dev/null
+++ b/waf
@@ -0,0 +1,169 @@
+#!/usr/bin/env python
+# encoding: latin-1
+# Thomas Nagy, 2005-2018
+#
+"""
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import os, sys, inspect
+
+VERSION="2.0.17"
+REVISION="da8474e646911ac5657990d535080c54"
+GIT="31da55afb92d9865019eb5193e874d1ffb86c522"
+INSTALL=''
+C1='#9'
+C2='#3'
+C3='#*'
+cwd = os.getcwd()
+join = os.path.join
+
+
+WAF='waf'
+def b(x):
+	return x
+if sys.hexversion>0x300000f:
+	WAF='waf3'
+	def b(x):
+		return x.encode()
+
+def err(m):
+	print(('\033[91mError: %s\033[0m' % m))
+	sys.exit(1)
+
+def unpack_wafdir(dir, src):
+	f = open(src,'rb')
+	c = 'corrupt archive (%d)'
+	while 1:
+		line = f.readline()
+		if not line: err('run waf-light from a folder containing waflib')
+		if line == b('#==>\n'):
+			txt = f.readline()
+			if not txt: err(c % 1)
+			if f.readline() != b('#<==\n'): err(c % 2)
+			break
+	if not txt: err(c % 3)
+	txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00'))
+
+	import shutil, tarfile
+	try: shutil.rmtree(dir)
+	except OSError: pass
+	try:
+		for x in ('Tools', 'extras'):
+			os.makedirs(join(dir, 'waflib', x))
+	except OSError:
+		err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir)
+
+	os.chdir(dir)
+	tmp = 't.bz2'
+	t = open(tmp,'wb')
+	try: t.write(txt)
+	finally: t.close()
+
+	try:
+		t = tarfile.open(tmp)
+	except:
+		try:
+			os.system('bunzip2 t.bz2')
+			t = tarfile.open('t')
+			tmp = 't'
+		except:
+			os.chdir(cwd)
+			try: shutil.rmtree(dir)
+			except OSError: pass
+			err("Waf cannot be unpacked, check that bzip2 support is present")
+
+	try:
+		for x in t: t.extract(x)
+	finally:
+		t.close()
+
+	for x in ('Tools', 'extras'):
+		os.chmod(join('waflib',x), 493)
+
+	if sys.hexversion<0x300000f:
+		sys.path = [join(dir, 'waflib')] + sys.path
+		import fixpy2
+		fixpy2.fixdir(dir)
+
+	os.remove(tmp)
+	os.chdir(cwd)
+
+	try: dir = unicode(dir, 'mbcs')
+	except: pass
+	try:
+		from ctypes import windll
+		windll.kernel32.SetFileAttributesW(dir, 2)
+	except:
+		pass
+
+def test(dir):
+	try:
+		os.stat(join(dir, 'waflib'))
+		return os.path.abspath(dir)
+	except OSError:
+		pass
+
+def find_lib():
+	src = os.path.abspath(inspect.getfile(inspect.getmodule(err)))
+	base, name = os.path.split(src)
+
+	#devs use $WAFDIR
+	w=test(os.environ.get('WAFDIR', ''))
+	if w: return w
+
+	#waf-light
+	if name.endswith('waf-light'):
+		w = test(base)
+		if w: return w
+		err('waf-light requires waflib -> export WAFDIR=/folder')
+
+	dirname = '%s-%s-%s' % (WAF, VERSION, REVISION)
+	for i in (INSTALL,'/usr','/usr/local','/opt'):
+		w = test(i + '/lib/' + dirname)
+		if w: return w
+
+	#waf-local
+	dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname)
+	w = test(dir)
+	if w: return w
+
+	#unpack
+	unpack_wafdir(dir, src)
+	return dir
+
+wafdir = find_lib()
+sys.path.insert(0, wafdir)
+
+if __name__ == '__main__':
+	sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'scripts', 'waifulib'))
+	from waflib import Scripting
+	Scripting.waf_entry_point(cwd, VERSION, wafdir)
+
+#==>
+#BZh91AY&SYL7���9����������������u��� 8�X0E��bQ\{���*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#3�o�K�mCam�vu��eJ��wt]���Sf��:��l�ݶq:���}������S���۹N�Nݺ7�}������ۡ�{;RR�]#9���ט�ͬ�@aحٽy�_>��g�v|��a���xoy�z��w����#*�Og�����������m�����o�ޏl�{��3w�|�#*#*#*#*�6�>=#*��N�{���r�#*ݻaݭ����w�����+Z��57:�٦Im݅��8�F�#9��CM���w#*�DT�#*���"��DPTz�R�J��nT׽�z>������w�s�K�+����w*��ۮ"��j�O[�p��p�wc�T�>���J��z�z��$������cg��׾��ٻ)n�m����fl�&v��N���k��uu��E���۞��R� {7��Z�ۮ��Vm�=�zǽ��X�z��t���n9��EQk���^�E@��^G(c:uJKk�/y˙��z�v�>�-�5��΃'�#*�{Ghν{{'$����}��)��#9�9��4�A��q�0���v���<w�Y�p��AS}p:�Y�#*�R�}Y�/��[{wvۆ��Zwm��;n�y��l��sm��wg�;M�n����WkB�lK9ëݽ�н��x\��޴a��vt�˞��>���f[����5vNͶ��뾷�z�d��.��o}]ә}uCَ=�)ƎN�8�r��#*7����zu_w}�F�z�Ks�H�(%;5I�B�kl���vv�6ɗ�K������ݹ���Y�{ݞzoy��������(W��7�U���v����#*#*&���#*h{�{��^w��}�}EOp[���;nøşj��=��ù� ��ٯZP}Po�5��z�Ski���Ts�����ڽW���iv�o#*V��{wl�)�����N�wGk�^�غ؅������#�Y�˛X��.�+�7e��}�z����m��<�ow4Z�羾=��0 m�(>��M�W�J[p^��t���S�t�^��{�;{={��v�^��&���U!ܓ���2��#3�n�tX{�8z��k��N�{:���>���$���ۭ�;a�}��c���:4#3=#*{�t�t��o;��s(�X;��g�:w4q���oy�gl#9|�ꁧ�#*$=ws�`�x#*#9w�e�5��ۀt�T�P*�=.�Ֆ�1���w���ε�=�f�c��=�jc������:#*$H�W&]6�t�v�Uf7YƦ6�t�8�Ot7��:�|�x�wϞ���۵���ؚ��Gu�x�2����^Iٝ������oc�O}��^�Z�n�p�����^���_���4�#*@#*�#*��#*FM4i�6��56���!�#*zF���� �A2hh�z6�S'��=OPyL51#*#*@#*#*#*$"M��4$�L�LFFLO%G��Jz��T#3<�L�@#*#*#*#*'�RD�LM5OBj�QH��4��4��#*~�#*#*#*#*#*#*"HBh�#*M�4Ę��i��4�?�ҏS��z#*L�S@��#*I��  #*�#*D�h#9m���Ri�FjzF�l����#*#*#*#*��K�ڶ����s��j��s:����DK%>M[N�dH���$����ګD��zV ���?G�o�-�[�F2��V'Ֆx�*��Xu2F$ý>.b���z�t��^ť�����b�g���TCz#9@Eo��t\�W��|��+��;$��!'\������e����F\��K��3����Ls��՗O�5���5����]˄�3����Ţ�Ģ�k=5Wj�wk]dɲ#3�WZ�[Qm�j���k�Z��kZ�U���k[�R#9	""Q'9�YD��i����!�BG85[ ��(�"|������B�[^UڝZ5E^��ݴU��DsQP��$eYL�Z� �4֌�R��i�l�	�IMX���2-)F�R�&‰�,Q���mY�6њK&�Dhͤ�B�"jR�@��MK#*�I�����Rl����%�Jfam#*�M-!�C#*�eL�h6�6���(I��lH��+1(#3�K-#JZ-4��V�mm��X��2���U�Yf�)i4T�MMlfԶ�ٖ�$�H���MFM�fh�*#9$�"X�"F��i��1&������IS"3J��R����B"B�#3��FIR&B4�B���"E(H�2#355f��A%"�K2�5�b��YHd���b�M �RdSL�%&M#31"f��H��cY(ڍE��fI6�IL�66�؉1M)���mI`����P�I)6-I�(����Q	"Q�HE"�0E��d1�RDa2���JME�Rlk	��jH�b	iM�$	1�[E�e�2J&�dX�#9�dF�Fl���jiD��)A�,�#314,b#c,l�&-T����)D�-""m4�0�64!$�%�A�FL�6��A�2�ցP��#3%��F,��L&�H�#9(јL�P��A�F&R		���1���ʄ�l�*fme[)�e0���b�͋(Tl�EI�1&�I6H��2T�-3E��ғ6L��Fmi��D`�Q&�`)��i�2�R4A�%�,Y�)��"Cdd�&L�VCE�F2���,EMQI&$�JmMF�"���&#&j4�"m�f�	����3!�"	J��Ɣ*i���eb�KI�$�# �-Eb�iBȚ‘&C�1 �L�jK���D�M2mJi@ɣZa�&e&)C,�"2�$S!�4�15��3&D��Z�մ`�Bjf��I��Y��2H�h5)l#9Y��RiBYR���mL�-�1$b&�)J"f��&����Y��0�o��՘�eF�[#	SJ�h���Dm4��6�4ڕ�Qf�)�f�E��XK� �Yi���#30��Q���jKT�a�FLe���T��"�f$3L�Kh�%&�X�QHZ2i�KY��,,m �k4ɓ5&���V�QSe�U&YMc+0���f3*��dF�M2�%L��Y*Ͱ�i�Xڤhb����4J��&��)j+�*��kE&�e��5d�MZ*űh��b�DSIbŋF65���F��l�FJ3`�Ѱi��R	Q����I�i�lh�bV-I6�H[Z��Y��d&S5-d�&�ĄJZE��E����1J[5M���K1Z�m��Y)d�jPlam$��f�ƅ��k+6��6��E���ME�$����`MJH�#9��j���S*J��!*(dڊ�4�E&MT�M�)�H6DVY�LJf%�EM2��P��i���ͦ�b�Ʋ�)�Dąh�Aa�� �Z"�h��1����QbJdFcIe��J�#F�a)R�$&�ђ!#936�l�I(��HS1SY")��X�jMIaEhH�T!FKEP��E!��F�2�2��3Y�Mb�Y���cR-EQ�Z3DT4jSI��,Vej4	�bQ�Q��T��(ce4��!I��L��TRji,��m(���d��X��hY����b, ٳC6Ʀ��F��&�LB��MI	�h���QF*�e��aIXFY4��R�j(��ʒ�S(��FCD�YIS"-��X֍����YTPV4E�I�-L4B�a5�1Q�-4���B�4I̒��cɋ�کYITkf�&�)�B���̕�J���m����h��J�S4�+m3�5)k)ll%��l���4ԒBA ��E���,IDb6�HjC&d�� h!hҚ���SmIl���i#9i)��$Q�lM-���I��b�h�#Il`�#3�F,��-��&Ս�e(�KT�!�6Ƥ��"�"����R#��$�Ѩ�KY*Yk&�%hm�DTQ$Z��T�mEb�Z�F֓1�f&3��Mh�m4����l��M�Q�l�#)#9��h�`�*,i-F�fX�-3RVœjRf�#3%b�Ec&6+���b�2�Q1%��X�6)�MES#9)%X�ش�[F5���42��Y6���!mF��4eDh��IEP�jJ�36X#BDbI2�dI���E�+DS5S�?�/���5�#D\�;�S.�j�߮J-���?�쟡�j>�lcCHƿbf؆�������]���M�D����cx��?��Kzd2�i#9����2�a�����.CVΞt`����F��\�h�$-*����	/UI���h��T��������G�&�Mxdƣ/��1�硇�{���J�P�>X��ql-�J�J�%=�Aɚ�i���陏��+c�F6�va�'%����l٩8U��#9JLU#*�M�z4,�Mb�G��6%#�&H�cM�#2�RD6_�.�ܲ�.��N�9��T6�S	�ɚ!��Ɨ�RR�(�UԂ2F,�Nm����Fs�m,��eAL���i�5�E$E��+���Mp�q��,��m�qp��c#9G�t\��דG�X_Wk�Kb1(*?���/x<^��A;�[b�`ShR,�<�U��-C�EO���pk�c�(`�q��:Ԓ�?6�x�l0�N�-�BJ��J�y��ٹ���\��RSo���ؘ��ň5�K��Xg�yݼ�s�N�ƙ\�4ʐ�Uʺy�D��ξY��F����O���U��r)��9	��n\����A�&8��m�_#9�Bd<O�G]%�.�I�0却�H�'�跻��{���h��r�NQ�w�ݒDFztj��6�46�8���wTnQҹs%�@ҳ�@��Qd#9�4:ic�b/3�e��`���`5>Gļ��#9#�EH�c�hg�,h�QՋ}�R��#3?kF4������̆�+�)��:i��H*8�����d>�}���g�!l�ȻQF(�n*�3�_ns�s_V,[��i�tEY�IP8x�26`����^���$Pi)��5"�V������e��?�9nN�Vm���՝ɣ'6I}+�u��C2������PW�}��:��>8����|�ݭ��s�m� �6�m|�l�ɺ��F���F� ��b�#9�P���TOd	��e;�6�j4�<\m��QKi����V*v+�E�5K*�	ڇٜ\O���S�\-�Ee����؝׷y���}M�����Xf�D�EtP�1��PX����+W�'�OWn�^�{���z��0�C������y�8�O��E�#a��p��/�7,���j��_uX��KɠFCD)b������҈�j�R��#9�Ru���&�i1���R|��Wxꄡ�4���}�,DM��R���.	E�sQ��wѽz��J�T=h�ٚ��v���,YAg�H��F�bZ�T-�cQRm��Sx��E��#�TX)4�@���ޢ�Wf�ـd�%N5��M08m@Z?�CNe��kf���L ���UTAQ#*FE�P6J٨-$�{�xh�ܮ�77��=u�����!Ŵ��T�]����G����e���JEzwլ�����Х��ᡅ9:2����	���AM�(SvZl� �Jv��J�*6Kn�)i6I�.�/����(*�̣��f�<$��G��5?v�onj��G�q�Q�EO�%xxXZ<����(��e(��v�EՄ;���ɗ�^��~[�N��:���M��:���J�b��.8���\�WHa�*���%	�w3$�w���bZj�V�f�m����صII�Q�AQ�p��|�#peKb�M+>?�!y߷I}������d��h��I:W0h�UUP��B�Ј����͝]1I¿*�����ϣn=l�)]=3FJC�2MX/s{u�1\zQeU�~��.H�$6�,�X}�n�0�g;�jC�kwy�=Bl����uFɌ �,~�2�.z�:��\o�Ǐ��.NM�(S�?�;珢�X$M�&ѳ����-z�sP���\��:�k�n����J~\�D�aڟ�YXF|�	��W���U�0Y�+d0����'�%����)l8���b�d):��#Ʊ��p��:a�Q����3��*���su{Ӻ.A�Ht���"	&Oδy��.2�>�H�����=v��o������HyV,�t�]�iBL8#9���.�S#7Z����8��闭���fS�ߪt�C5=L��p~���J]�`�!��#.r��W	�>i��M!�-��ΰn�c�2���?���f��Z����ԩ��*r���/��N�i�ϳ�`WVo>�����l��t�eG�!c���7�Cj�� ���)f��a�L}:s��6qå�W��,�ܛbpn=��(vѕ�[�t##3ȱ�gY���%$�����LB����;�R\<�P�ϙtjI#n(��p���JG�Q�����h�.�n;����YӦoԄ��Ӄ���c��Xg�]R1#ۿ�8������lI�U#G�G���!�Ǚ������!C�ƶ�ѯ���v`��q6>�uXƬ�!K��������TJNm�*�z�]�8W��	�����O��G?�G[�\��tlE�`��JDN�����)��!�]z�ϙ�ʋ���m�&�]�^�_�ϼ�����]4"�&|���_��������^:���"���Ԗ�����u׈�#9#g����KW���O��w�`��zU�ʏ+��Q�����C�}w�x���ʙ$Ms#3�������K�P����x*���)��_�v��W��d"�I�]ڪZ����!(�̳e��w�FK��hP`/N�k���o"9f~H���8�4t���)MEoj�O#f.N�'A��?�.����1b3#3>c�(QPGWv��� �`�G�E"���`f����QQx[1H�4��ヲ詥Y�Ҳa>m�;�x��3m/�c�h��=�����E�SҸv���������ߢ"��[]�݀9J��'�p�\��PUj֫9�5d���2T�(B3	��xb��\J��W�e1��59�5'�aC��)2dRf�qm޿I=�g �-l �T�iت�U��:�8�ŕ�fދB"��Ic��3H����j Ï�*Z���T��7̡"���۹��f��k�Q�q<n�I�̐��m�����G��A��VG梳m/���.!�ӥ��# ؟�A�}��"#�@�Qh����ʲ�G?�֏M�H��)r�PV&���d�C?8�_-��B��˜r@�vr]��m��B����]O#*�a�s]6������v�+"�)�HoNI/�����M��-O#9󼕿t;G��v{���BqeB�U�r��zw�8W�=�^��h��h��\�v���z��%���vtS���G��H�﯋�q�DQ��⃙���o�T<������ޫ���4.����S&rk�~��,�#3�u����ʧ��&<���T�D3\}>G�C�#9EX@ܪ��65���k�oJ�4�1S��}4D� �K���Wʞ�\xP���xy����[ڭ�9م�D�KRa���H��(k~��W,����@�J��{*�)�9������B"��R�"�M�ttm���(=}CKcG�p�l�&��N۳�;}XU��w�A��j��kˏ����6�U�[�5f�;C-���A�pqĩ(�zn���n���=�:%b\l�ݿWeg�>U���q���J%.���	��á~��US�1"a������Wt��퓯ߛo�[Q�/"�Q�n5 Eu6��IDp]V��f��Ag%7�M��#*�4U��S�O�A�",��E#���_+B���^�������0���(gv6�o�m�գ���ž%�9!�����C���g�F���s�#3�!�ە/�|#*�?w9��S����v7uR�0ϗi�?:�3C4�H>����r"P��1#*�NN�I�ꃭ�	P�&�NA�q$��N�+�U0D'�&�^��L"EB��<�aC7jr��9ӭ׮���ɶ)օZ|�1��Zi{�z�]ݶ�y/#9��#3#3�UG��=i�\���5���zC����pr�!hXҊ�=ʠ1y$j0)�8���Vb0�\9�"6xA+)��o��S�4�[����:��ܖ�%:`�����Ƶ�^77���Ƽ\�0{�M�xb�Z��뛗��}�<�(�f�Tb�Y�]3od;�#���$���X���΃J�}���r�����J�8%�rC��٩��bh���α#3j�J"F��B�|�rL�<���P���8B��ƕ���㬾��#3��r�#*�ሇ�x�ǵH��L1�6o������݉����rm�,���L��~�����8��(�:�\�(f��OƔ��֓j��{������f�jIzJ�'j@ӥV"����V�Y�T��F}U.���,`��c ������v�m���3أ#`#�����E�䴱�<��-o#9t��#*�b㳜����j�~�Gm��L��v��<[]���)'D�e��H�j��[8o1���~Ű �EBr~/HM%�#+�U10b�]K��#3�R�~jzҙ����m3,+�k���sg��E�Ck��3�E+m"q'��3!�"SB�T	�x���m�W��8[�*6�� Je��`m͑,�g����9��Y�`�#;����5����ȹև*�ŊۡIQ1A�۟�-h��a����4��6�nH0�p�I�����Ο,kJ&���?��2<�#9��5�Z��k�S�H��NjDuq�x����+b>p���J#3�#9#3�Ʈ}�Ϋ��T�eM^;wno�ȥ�U�']e�ѱ���kLF�o�����h#3>��s?f=����v[֎��1$�$����n�V@�>k��B?.�|	Qq�RM���=wv|D���#���!�o���h7���]Z����BE�f��;� ��p����`x����rd�h*Qő�7� �FW��?��8���n��69F�<�7m��E�L�c����E��y�����6�k@2���9Er�tSU��ohsz[�Q>��)��f��u�]P��f8u���[�4팍95w?g+��i)se{-pҦ��g�7�V`������Ѵ�m#3�t���#3�8���`�X*ZQ�g*dC�X���q�C��Yo�"���zVm���b�o�햚.��4��]#*̠��v>v.5bգC�m�Q��8�����������>���V�/�[�ȂoI.5���#�Y����ܱ��t��\J1k��h`C|������i3Z�S��TB4�aq��#����c��Ar�-C�O�����b�n�M�uҟ'�[H�����2{%=��w/f(2G![�q�u;s�^e1�Ql�a��$�k�yb�qv�w7�I��Gˠ���I[��O�Y|'�U2�����`�'k ��s�JFS	���]��F�e��5�Ɗ��E��`AH�W0q��f�HeN���̽U^�4���x�*Efh�4����=���2�Ӿ�pS���q@��v��<os#3��A[�Bٗ�@H0\ּ��}�Ù����FOqm�d��/�8�碨�@W�E!���fp'Q�a��0�=��,���^���Xw9���R���AK��Q��)q�Ƒ�`�����(I�g($�R͢�b�FR��r�%3��.(����"�FI�>��/Z+��>:�����f����?�Z�:rm~*�Z�e�k`�q�a+�h"[N]EU8���(���!�<B@se�X*��Wl�})`��}��\��)��^u���f�:�GKpҷ�f�N�48I��!@�"��#*�'=�hl{��c,W���V�y �P�����P��>��D�?��CO��g$6�1�܂EA�b��'����wv����=h��q�<�ۋg�����o=s��ƍo��5��>P$RF�@���^���:$��n��!ft#9`:\z����sdJ��|H�'[1�� Ѓ��h[�;7��?ݣ��Y�?#3�[ٰ�l��7�Q�XʎZ_r	D�8tNf�+"Y�E����)^Tq����dON�כ��틀�r�b4�s�2�_eҝ��0:�	w�7ۆ�'b�4�)v��'�{K�v���yu��B偻e^y�9�k���C(�爻T˂�2a�^���m2u�o�׫֮<�����C�ז��j,s7XS�q� $43��{��^�Ȝš��r�PٯD���%�������Sm���� E�j�,�$�ߵZ�m����O�x��x<�e�s;b'���zIV�HlHt,񽶉ű��9��TT�#9n�iww%\�՛�:��c#3���͔������c��Ϛ����x���:M|������c ���?����fB�+Єd#*�S����`Q:�8s��}��ٸ���L�#������|Uݧ��*||�>^49h�:Y�l�d,*�0F���o�sR�\� ��7�5������$BD��	�������%�c#3.�ج���ݲ���#92n��8�Cr]#9�9�J	g��,:AJB����bw��HY��x�݅�&����g�ݿՇ�v��k�o']QP0w��������[)�׏�N��p1#3|�y1��#9�I#9/J�m�K��ps�>ý&Z�y@�$��B"P'o��_�#*_L�e�@�%�o��	W�L��#�-��*T�1��f`5���U?�����Z��K�_2.��#ư�n#�6��t��E����ߦNQǵ��C`Ƈɑ{�(Ȣ)��>�9������MSF�S\E����#3xF�R�:n%���q�:"��4�P[l���#35��s�J�>�}��"w���X�d"£:7�c�5�6�ÿ3ݒ�aI}����6y�[��qT6���Kc��<A3C��Z���t�����f:b��Y���%e�=��}����G���_0���̏�` l��a��|q�=yq#3���Lfն�B�wa�h6I��;�/�������5OuRBd�����.00�A�o�P�	<Q��T#*9��$���yb�=#@�@��#3ofI�����ٵ�6��.r�9�W�逿]�i���w�j�#3��#�j]���;�K��}�G�t�����ä1�7m��N���}���w�: ���ʣ���D���=3�<w��OH� nv �]ى���0怳��ϻ��"=QQB�IP7���#*�H�丅�/a�h�U���q-c&�R*�yt��d�#}'�\~�HbRVR�c���:�KѠH�b"PZ��s5Q��C}��9e�+Tˋ���{�������a�9���.x��8�!	c(q��Ѷ1��>?xZx�((H&�;���6��M2U�@TA۷F3�C��/�'��&��L�]�#3-&IK��6g,���dI�;��1S�}��#97߱��L�^2�"��O�?0JfB�P�^]���^���mJ�l���7�>�Q�-��o(!q����U`�B&f�<�#�ӥ��垚��1W���4��t�=��OL���i��=�΋�?��\�B�s�G���>��߬��.ߩ[S0#9��d�T��P��'K2ηG���z{v����鹴�9��d��kA�����,!n��m�(��l6=b��~3�<����:��$,n�nJ���]�X$ݙ�E�X���?�Z�;�z��)�8��c ����p�"���{Ѥذ�4�t��n��ַ��N( n���!�,4��N-��ż��pz���nL�<��RN(X�����Y�)%��[0���]��x/�=3����@���m��>Vo��,)��3�5���C�V���)#M�����0�ڻ����ŭ9Ҭ0��m��''�`z#*���1( ���4ygR��]����͜��M���H�#9���#3�io3��&��L��;Kc��v�='M0����F�M|ኟ�ƄOJ�u��o�4�ɃoU�	�j�!�o����a����e��F��ˏ˚ZV����(F���,ab�H�Uy��W���me��ᴇNщL�<~-HI%�ɏ����P���#pb.�\*��c@����7+N�[#9��#�P�FP���Yږ2�j�N��~�a�n"C6��a�j�{ό�?�`zg7�0I�����!��LJ��s�=<���J,]@��A#����c����{lem�LL�̕�#�J���!����W�3�ڨ�ճ�XԺ,5��H$w�PN����G��|z�ۅm}M��s����Rd���n�A���Xޠ�\�<����j�!;>N���>�.N�J&dDb���a</m>�sW�:8��2Q`4����Y9�%5�C�"�bSJ�l,al^;8�Ʀ@���cb)SҦ7�8��0c��\�f�����M�xq�:f=�Pi�9�-��	LǶ<2��>}��|s2�H��#Q���߷��7�9�l�����s��?�3��*#9�:A(#9#*�S���{���c�����z�5�7f��<�+�#9��(ؚ�H#*�^�#*���`,�7P � �fB�y�<hCm#�U<�YXDZ�t4(��\SA�0�E)<�r�63�2�M��^�b<`|1�G��).Iԥ�V�(����[T&R���Z\,J2�s]xt�`Vbp"��W�y�W8�kF�H@(W*�#3Q2�"���������"�(X�bka ȩ��{��@th[�\��WcP����hc%E�Y��F��;B�SZ�#3��dș�į�y��n���'x}v��c�<�Gw��5��=��(�t�#3�Nr�r4��+:un8z�~����%��1<����w��2��8$��j�swF!�1��I:����:2�#�C�����!L;l�*��;�����R�p�f�A�{��4{����Y�^W=�)HH╎\���ĵ���d��W4s��7He�w|#3�ϯm�%���.�+בѺ���ɷՅO���z�Fu㑺W�	!9w!2����'��ƒ�X��:�HV<��	S��OE�>��`E64�G�tP�,�W/WZiw&���:��6��q	�(�c��^X������=�#9͖2x�B%�]�y�k����a��F�ݺF�ܴj4�%9�~���'�~�i��j+��|�x�F��CR@2˜EʅUP�e����#�Z$gOw�^�	��0mP���1��@6#*��N7�h�l���y��O>�ɪ�tō,o�Ӫ�h�D��n����k}*2;�QI�I�BiV�jHb�����=9���;���bEj�d�4�P���nz6�p�6�Ƅ>#,��o�fLcLJ5/I��c����c�B�朆$�@���L�A�p��L���)���"�d�`P	#9�'}�4��Xh�ێdY�66�Q���J�5�˲���Z\ev}�R|�<�C4�}}({T�r���8��t�����{�����*�a������$q�!A����f�c���w��䞬١�~���K�<z�\	��Z4���up1zj[�*�wy�vA7�T��{2r5���kL�}�U�ip(�ܺ9+�����c�R�z�DFƢ�P�8���[%0��e�'�%@p�� ´�1b1ʼn	�(]e�d�`ĉ��m���;�w(�'��~��ds�=EF�h��m��/�צ6���=���F�ʼn�-{$���ƍ��j��c�+c�uR�'��X�U�#9��BDE#*X|�����[�N�V3;1$o�y���U�/i�-/�^������'�x�-g�7��_Lߧ���ǙX��ꀵA[�T�����Sh��>憕�7�2�9` F�9�g�;Psq����>d�5ƽ�1Nm����eN�2|�,Q��d!�9ż�ul#9?�/{����(�Z�� 6}��z-�z���(a��f��3�ԯ/aOR,	���]Ѹzdp\L�x�ǘ�#]��&��h��q��`׿a����T�mjmș�ʺ��Qa��>�[;q|w��#9����fq����oy(sO���-��C�Kl&H���0A"�;v�8Y)_&`�/a!�� ��zp�H[�Æ��G������N��;h���*rYz9	Dw�cT�X\���ko�f��s�ۊHZ��وɸ%g�٭^�sΡCKձ���RS�W|Dz� �2�NN��$��������km�O��#�@iÅg/!��kT�AE`�A����Kc�q#Vы�Xw#3e��Ŵ����d�̇~�����r�#�rHQkO$�((�G8�~$�\aEA���G�#3i���ٕ�%$Ma�Mn�VT?�gr�e!���Hܷ��f7?ؼ��D䋟�ߒ�0Ci��4���N�h,���F�Jf�$=�#9�����(dY�$��E�4'�F��5��F:Ep[̐�A7P����\ԈmZP�9e�0 4B0\8�b���JEڥ�4�Y#90�7��iRa�2ա�#����U#9�Ǧa�A��`ZiI�.�|tA�r��"�݊�CӦ�zaS	���G�!3�E��csƋV��4�%7~յ™O*�1�!��a����),j]���ڝ����j@�tG=*��0���J�v�(�db)4d��L�TE��.��䣻�o��7��͈WPs";��O�~p������^�ls��I:�����3B���X4�p��#��>.�{O��ioﶔ����p�:;�PRBH��Ǻ�G�_�;��x��ugޜ��I�%�I:���c�b}Nj�S�#��4R��	n�7D�g)e�˴b��OI��,�;�`�����r�KcE���đ���}Ӕ��'��4O���{u�|�Vr��Ӷa<6})�n�]F�~�cnz�_�lV>��k��l}�1��S�z�R�B��>�5���~�ţa!�a���N#7Q7U��M{v�i���0�8h3��P�{.����2��?���A���x}��c#e�����J8�CZ���f��\�L͊<��u��b'�u����ϳ~���FnX����a�L��V�2D�ݬ��RJ���}ܞ������:��}9l��5-��F��Fm�reZH�QB�UQC���ᬹ��6���P��D�KQ#9r����<!GJD.��XY�.-��1�#9ܒ߀T����r��J�'����3ý���Y�/G�6{�ꔠH�U��ـ���ABN俅t>�"�ۡ�#9n�"R!���9U��c���9dIɷ�;�p ��#3�q-p5���Qq�`{m�]��ȹ�ˡ��AIF@�-ͭt�H�ͺV�����"4���f!���1�ZYiOe#}cVR/�p`�k�k��I�K�Cxw�2��@�0�-�F�,�-k�e��q����A��	�׬AO�"���}E���ȼ��sˬ?!z����x�����|#FG/��ϕ�����ha�aΥٌ�8j������J-߷`�����}�����3��Wt4>b�"����y������6�J�>��{XY���H�5	�-T���x��A�ޫ�Nd1HV���T�D)��wV��o����/%%�ԃjE#9"(�>�͉*�X(��f�ņ>pr0�#3#9x^-6��#�O����ϱ�׊/��7'��|�n�����!O�(��Ɓ,0��#9DNd�I>��5 _)�=7r���{6�/��Ⱥ��,�0Y$��;�����zE��#9������[#3�Yd�"#*s�m����^~�8t���c�=���)u�R����x�$vÐ����|�8����j�V�oA����!�G�0��ԬC����T�y/rM#*�]����tE'�ηy*:��H��'�v3�y=�������#֩g�z_��U�Q���eȍ�A�5��?�ؽݡ����������g;Ww:o�2yxv���b��9�-�#9�Z�������?�v�V�$8���΁L_�e�g�����OB#9l٭	?sAd�����u�������Tz1��ɷ�h���h).�w��_�o��j���޻b,*[��kAͩ,�$�l�bQ�bh�b��^�۵k-��K\��#3��)1�@�<)��>$���i��j#9aD#������_[~�I��ֿ������6y�h6E)^��qJ�N	a:i��i]=(�����粍\�E͊��()%*A>wB�3^�k���:{����.��(�1����g��f��4�k���e��kn��6�w����K?[&�01�*#�'&�����Q�ޥ\Cm�$��*nB�TQ<��z�N��}z����{lj�m6#�E��Q�iؤ����f��g�~���y�0�rE��xXʟ���M����f�ɧR�A�Q~���q��?�D������4��7��V����ks«#*ߙ@��Xs�,�G1���C1�u�4T;D�f>O��$9u�m~�s}�u��X�'�HL���٧�W����G���	Jy;��7���'��#����B�#90���M�#3����'V��Q�k�=��b՝+}Xϟ�I���1G��O�����H��6t����~��`�?4��۟��:X~���4�o|$_���$z��;>�7������!�����}!�Υ�s�T���h.6���t#31���}���D��O9��]>�����냗ퟘ�u� |K���E�dS��f�����c�6j���x�q���_5�:�م���	��uG"y�3ɽ�ɶ�v�=��V~]w��is��};��??��Z7��mK������Y�'�;��i����&�x�����6��i�z`b�"�UL���������T[�r��!ݾ����b��@S'�����(���FoZR��,>ek#*l9h6�(#܌�X�0b�3����#9�7�˝��w6�?��ƈeNê���P\���M�08��v�%��j����'����C���-��f�a?���v��z����?Q�O�3�ϥc�'�	�G�p�P���[~�#*���T�a���H��ҽ�o*���	�Ө#�w��� 2	����a�и�QX�"¹|�����x�Y���1�Rt�l<��m��k�c�da�����(�5z�Yi},P�W&=Lz������{���B@i�W��+ʀ���X+MS���� �?���s����'i��S{邴qA�<^�e7r?�Tj;����Ƒ��;l�~`=v=i�(/�H��y�#*������2�A�1BD��ڪ}�M=}���d:�ؼ�8�쓻�ɽ�)�GA��hm���r�㩀��E:Y	>�^��"���7|/�i�Hs�����$�>�O�F;�C$���F��s�ɪT�#wu��4�g���$<���ȷ��SՕ�>yΨpO�0�eܡX��fl��{/�A�!L��#9H���<�$�h�W�`X���Ā���%�o���t+~�����CuLlA�����.O�w@��K��߇F��������X�G�o>�����#V�����4oW��6���v�o-�W7@��/�4�}�VN�_�Fe/[5�U˧}����/���g�b��_.���/����{��o�Ϡ���Jp+��c�dTJ�{n���w��K�����'�Nw�|h����n~�C��⾹����jv;W�?Ç�g�F~ch�;ӎ��t|�;x0\�G0���v�N���o&��G��ۗ�!勇�IOҞ��9�d��>T��|.�_�W�[��=Y�Vt�d-àW�r��|^:�1-RC��ɐ�\����[)����˺#3t-�����c��0�����W%����ͮ�ӊr����lc#35m_GD�����ݪ���q�W��R˄���zR����m���Z��X�J.�6�o�G���,�+l�j��m悌i#3~,�Y�ytqa�F��[-�W�(��~�]|�s���ph<ȹΪ���{�����f��u�ܞ�nLw[��͇�Iݬ����yȗ����W_�9o�lwl���a�b��Y7:�=W�o�'��;9'�ѭ�)2C��'P�O	���r����M�=�Gɵ���e6�Ӳ����6'8�Wy98��6����u/���#3��O�{]��|�j��kI#3&<�\v��c��+��p#9��]��g���ׅ�:���;�67U�����.t��k�D}���f��؆6e��?9�@eh���ƙx��8\�x�|{��r�����,��y(���n��9������,����5t���cLE�����^��/w�T��.�Z�f��(��Q?�+�:���Só.Ǝ�xL?1���&6j�A�հ_�M?}�#Q��;Ϧ���R-#*�H�m�O��W��u0ݮK�[GͷC�g����zz��#�գ��+�#3�p8�X�O%�jycO�~X8��3���hdTǕ�����x�_�䝗W��-��m����I��������{�m�e����#9�?��=��,���T}��?�t�/�Rwz�W^���/;iiw����[Z��������#9(FAs���(]���ឃ�N����n��$��E#3�ƮH#*����Dh³��D����ax�#9/2H�vTgݮ��6�j�|�?�ϲj��{B~����p�o�5�8�j�}^�����b�f����e���;�";/��D�>�Z�.�f����.�����"w:z�p�|t�w�}]?�]�������A�<x���?XP�n-��L�\��@6~�;��(?�~��o�(��L�����W�6��*ّ�o��ջ�z���6�B]��o��p��5G�o�t��A��Ty��Mi��`��k��KP���!��������o��b^��� �B^��~�\�����#G�l2N�c��ڇ���~�d�ߐM��D�H"\�'&���g�;�Or�m<��#ͺ1b��qv �l��]����Y�%�ϊv��4Q��<��adhH�<}�ʪ1Ӈ���}��}8�r�u?|F�	 >IaQO^�aP�gyT��zƫ�Q����񎪨i��0&��qu^M�v`LW��N��>t"�:�����LDֽ9rk�q�f�_u���<)�w?#��iP�j�����lpz�@�]|��%�U3壈�z�v$\=S3�$�!�Kܣ�t��Z���ڛ�.:wwHyi�������~����T9#*�&���S�nK]=��#*�E{�w��0k�T��0��qN\���#9�N�ϕd��l�Z�*;}��g8z=��	�.'�wr�E�kX�������uwƱq��g��_�i�2��N�y���qOd]�|��Q�Z6���U5�ȴ� P�wV��M�����M4�D�,���=�܂�ԃ!���E�Ŗ��%�:'����=�����*�Ȣa�|��=�^�}���A	);����$�o�#9#*��Sq�u��.e���>0o5��h�5�F�G����d(���~Br���K����5��m�ÏH�z� x��+dWkwY}L,�#3_A��qy��Q�G�N��+V�ڕ�����~�#QG^� V�Vi���l����Waٍ�_��4��}��TտU*[���L���X�pf�y�|\���O q�*a�󍀎)�(�O�gI�^�m����;�ϵv�<�������͚mk�/���(��z��$��_G��C�å󱐤�'�1�A�Z��<��99�;�g�,d��~^�#3��o#*3A�K��c�Ē���a���*?��d�S�!�/F�����%<����#���2#*��������o���?7�F��d��ʏ�\?�Z,̹��,0�!1�#3AȑFd�|�+Z�#3*�m������T�M��ǒ�H*������d.�����,�f��SVe�H���0�%i�[�M`��cX�L�� Ց447B�K#3X��++#��p���Ѽ8��	�`�f!�IUD����|уa	��#oh�W}UR�#3�X���/u��}??��]�ga((>߷�~Kī;��7�@w6�c��[�����\xV�3�={-!a�lar(��e�a���<�?�o�M���,�C�3�C���yB��V�1�#�����]�-&�2#3�#9��$��j�&��l��IT���&�$�f�?�j����n��F?�+ֆ�*iôO����8`��ݯ*��sx�k�a��R�s��ݕٟ.�<ݯ�J�/���~ݾ��^A�U����|�^:�?����^��w�7�❟����s�����G�<�"�!�V�}����1����y�v[bͯ;-��{c�p�ɶ?X���8\Q��"�CbA$I>�}����==����_�n�Z��"�@�!W���Ǒ�&�USo�����W��S�p��ה:p^��������qs��r�NkCξ������Tإ������~���]��ݜ���&��&�����{�-��	���}�o�@ v,�$�!�~С���i��x��|�����lbhͯ#�޵�<Up�VҋP���;�v%F�CC(��/Z<��c��2�M�F���f'�h1CbGV�#9���"#3A�6��h���$��^B���Ƙ:�#9�V[?g��F��RV޵GMf�#3���^7L�'ɮ�+��+r�G����7<Y�#��J��#9�)X2���il��h'��6�l��4Dl�b��P�$�13&���s"�H#N㣩e-�g$��8o�B�P4�#9,%1���rC#*!���&9\H9w�q]���LH�dJ����n���6=&D�J,ҠW�E#!h"�;�ޡ�cF�j`*�p#��R1�l�`�p��G���fpW��x�#9I$Q� ������*U䱄�"���gJk�@`�����%�~ql��y:]m����E�������w4d9��������ਧ�V������O\=��c���@��1��<��C����=���Wag�=�z5E­�O0� ��׭�i̢�"6�:뛹����x��gX���\���!dDD���^���e��?~��#*�5�Z�{?������p_�Nsfc���G֐�����Btď�}��f�q��a���#�lA�}�r�]*#9�$�eUV��G���hM =,IB�����<�>��9G�/��^Q�B�/�D����pT�n��t�����UQ�?ܣ��J���{x��_����J%ٰc^��FV�cnF�z;:f����[�H��\��S]�y$�$%��ٳW�y9#���3#*����F�?���w��*�H����('بb��U�����ڤld�q",CQ/�b�?�.�ʹKˣ�H�7b�����>��/��e��l�������aW�T������#*v,� 0X�F3׮,=I�"��e_���'�639f4Ɔ%��F��Ԙ�*G">i0�-�#3�T)8#9�X�"��)�=e��VƈS�#J�R0�i�IpE30�B��j412��X]�k���^��Mu��C�7��y#9�FC�Ѣ�b�~��f�ɸ��#3�Xن��kV#9>ũ��ۜcX1�H�ٮϔs��Q��7Φ�a�2�fV�Z�K"d:�\l�R"H(��h�`a��ш0�#3��6��h�fԇV"��p��I���X6�jn����[2��LQnj����L4��`�̼�B��a��%*QT*th��.�D���>����t:w��(�s�GHO#���!�?O�~�d��*5#*!#9*���v�ng���x��>���5$3�i��ަ�3#3�x�l�e�1~�>�)���O�d��#3�q�o�>;���_�{�ӷL枞:�f��`'�|c�y��ͯїJt�u������k���<y+Ed�Ab�X�����Vʪ `ӌ��{���"#r:E����cH�:}���`��.�H�)FD���f�lj���j�[�	��/�NU	�~!����0��b尰��St⊗���ʊ`4��R�h�D�р�L�0�E����X��*�EP�T������c1�O�T�Rn��Q2�c�Q�g���q�_]�}|���r���㋾ZE�j�'ψ��o�4�$O���_��)�c��nϮJ.ZV�)jip�ln����	�2�6B�.��C���St�;���廉�֘Hy�#C�#����UI��ud�)`A��<���h�#9F��*��j#3��+�q�����tF��pV@�k:���(7ߘ-���s+XpJ1��P�E�XJeJMA��Ri��GP2'=�`�vE�I���cր�ѻ����e]�ÌcL|�hGb�G�|����5w.�I�������Y���֬i1�A�=�>��'�q""v��#3��hW�Q1��#38�H�F���SX����`V�qX�(G�I�H�Zb9B�*���k@W����n��F�w�cx��L�k�������>V惩�uO������a�|G���?ve�m�NG������c+2&t�:�����҃6C��~$��m��`��N��N,��݇��5�H_��;��6��}�ś0��	�vo����Ud:#T&�m+;�h�j��w���u�O��IB��ۀ��7�Sú��wv�Զ��L�|Xڭa9���odM�����׈M��@o���f�{y6񬰱���7�:XĐ;"Q@�teJf�ŠP����y�Ab�>U�`�5/<5��~+����/������j��aXRRga�1f����8|K"�sm�ә��17ԩK8T8���~g�uŢ,2эfqFB#5;�Q�J��u#3S�}��yX��6㍼��L����J'�3{����l�����2�E�;	�A�Ħ�N�>�q��L����N�Q���	zqy�r���}�&�����[ț���ﷃR�'u�:�d�J�/;U]�ʨ.g=�p�A��<r���)�\�v�. ���~L)��K!օ���=���w9�i��Z�]D|䜸kq��"Gw�������|E��K��m��:��+&��X��lsynƸM�e���!X	�Pk���l-�,tc�t�ՎЉъn��8�d��͕2���F�nj����mEk:�'n��$f	�LkB�ˑ��䓝��B[��Z/�.��P�#3�]��,���y&֤��#3����e�{�V6'�A��~�հp8Sϓ�kT�u��@�@������='����@t��:9V���q�C�q���,Wu|%���[#3N���4r'b.�z#����Q��)SU��#3%�\dI��i��Q']?��ݓ�4��=���?aT'��!Q5|�؋�V���Ï,�����]QY˔������P��C��h}$���D΃J���njl�����J��7d�N�0��t)yW�>G�.�O#9ì=z��-v>‘m��/ʷ��j1`3����45?��IӥR���٬:&��l�^�4���I��p�9���½���4@�̶Z���3�+�/��u]k]V�ӰB|	�#3��[a����B��#�5�o(�|��J�}�g�89mA�����m��&�R�=�3�6�߃��Tq��Π�.5Y��#3q'm��m{��B��E�8i�d&���!z�Xm���SL%ZW��p�i�K�W|���D0��TT�9��aĉ9⅙X��NR�L��6��<��v낞I�Y��3L�s&ƳqcjP��9��h��(��Qb�;������m�<���>=�On���'���i%0��f4٧ԅ&�M��-�Z�͆�0Z���#9����l���Q�m�����#[�RE��W�q<j�^5#�[��H��E ��&�2fF�y��B5�1���r�Dz#y�2�x�m-E�����7sh�28����;���w�/���[�F�����t��XY���ݧo���"�_�����+4��Ǚ4��t7��]�����~���ж�Ri9�a�����nR��ffysp�@�EK}�'���{�F��q���+��mlO��nvk�3��w��A���S�K��,v��0>��&�ँ��{�t�u�xC��j�x^1KW�(��*R]\���|�~?�|b�e_6֠fB��-��2[`�x#9@��̲�W~���g�{8]�v��i�����rc�{s�#*�U�>\��G�W�73�o��΋��5ݥ'ໄ��$����;���d���w9*=�d�*?�с�<��#3F}a���d#9���;?@Q��M�STu��D���5T?���h;����^�O�~�">Y"�d�p|jj�m�&����K��90���䌧aW9w�1�p�ހw���DŽ�#OV���qB�����&�zt�ny灲)IQ�%�ar�(AF���%�{� �&�5�U�5�h��D�p�+P��b��q�A�4:4sUo#�8�0�%1RnLD�6���#*��1�3�$T���#9��6=C�M_��0�Yi��d�R��/��6�h��:�G!Fm���3EI�Z����>,�.��$�0�Q�~�L�5ΰ�ŝ�0R)�0�#3T��dk�W�"B�_r���.��wn��Q��:�+��>�H^�e�&^`�D�G%3�`%x^~�4!6[�`2���YGQ�E�_t�&����I=�K܂̈́rl�d{�Ŭ_#3��� ����	�϶�淟J��s��Y�SI#u��)���F�P���-��u�#*�Ywr�G�CM�<�Ԥl�Ѳ�Si����z�+U�N-<�����:�����.zt��G�)X�ޠ�5��O���xCl�(��ld6��Ԧ�84I|���6x?��G����w ��'ܴ$���Z�Y��Dx38/,��9�\�O|2ݧX��Oն��#9l(j�j�wI7(�R}2gVU�G��s����HZa�hXy׮Xyu���k�Oצ��"�!4�~kvͱ��Q�3���h����#2�9�4W=�(`�#3{R{���gh����F��T�]R�����=�@�4���3"�x`71�TJ#9�M��.J����%�1U#9]Q�۫�nMF_��f�FIo�,�1ט-Q���DV�YC�Qv��	�s�!�4ո[��#906��Gy��S�� 2TO��jan�k3]��2��4]� �+���Na:n��r�OWo$�H�x��W#9�咧ׇ����K=��}��6n�N�tL\�語m@���F<�E#9n~��6���Q�{l�;�t�t�&����*��h��"Bj~��9���o=m�H� f%FA�a��9[ô⠘��,�?��q��_�C��zdόa�k ��V�t�a.��N��-�i�)�El��޾6�G�>|G]��ih�iZ���������x��6m��e�HBs�SAd��-�%lW9+S8$g�k�o�;R�Zv�|���O�:��4Fىv��ߎ�(g���C�ռ2N#��u���tc�����t����t���d��r�NH���:������T�,�WE"řr���#5��f�WK])��V2b��Ɨ8@�%��)��zzj�=���v0	��2$	��4-�Y�V� ����kn�HA���N���$#3��Aٹݍ-�0��-��W)>�v�m'��r���g��bn�[@B�j�ޡ�f�u28H�Y��ɮ1�6<�0D���n�H�R�wۓ*f��6��9�SHq����'տ���O|�/,���FIN������ښ8x�t(���M9�?���hwg�r��D�6�zl���d#3x3������o�j�q��z.+f�i�_3s&p�t�s(�/u��w;��~)����H@���#3�SA�����.����b֯B��f�#���?�)�2����}cϧ�g�j";�N��^���r��K�U9B����e�������{��oF�3���	�?6� ���E��D�O���R @}�I�ۨ�=���"�G�h���3�ǐ��o�\�t���0�y�"i�fز�Q�f�G��ԎlE8��yB���څ}��e��i����l���J�{,0`vy ��L$Gd]���.����=9��n��S<J�fQ�M<���#3�^�p����.a+�p�Ow�l��\��劙L��ޞE������#3��;�dM,��H��3��-�4�d�>��Q��L��� P�"�A#9r��R;�Y���������BM�C����������"x��շ,A���M@W_�iR�X:�N��C_`���w�E�b.b¡�$�����߂�DU���sY�-�y��SBj�>�W�����{ѬU���ۼ΍����q%0���q?X�= �y^������D��g<{�I8�w�D$�ã��R��`��b3F���� |��~��܁���8�rs��Nތ5�����j����g�j�U����Ĩ�&���T�G���ݪ�W�b\��*�R�}���γZ�jX���n��Е�:q�p}��C#9��F4�p�P���t�ζ����Tp��^�kFo�^*$���rz��Ol�b,�pQ#9�]�/l��<�Db#3(-i�\�rɢ��	�E!E��ގ����#9e!O,u��#T�������Q�|d��pm�g°��F���=�#9ے�tWN8YI��,3VUc�B�VX�Sϲ�_��[7(ZK���&�f�����\�>�R��P%��aG��!�y0���kA��ܳ	����5���Ud�Y͆�j0�Y��X�8it-��%�0u�E唰\#��Ƹ>I�]��㫰\��k�,���!M����OjC1#*��^��B�r�p�`􀾣��8�����h�e�U��Z\Y7AӘ5�b� �h�"wB���J꽇�Tn��L%h��B�<�	0�_{�0W\�؝��R)�%I��D�Z��㱯���S>�u�u}�VA2�ݢ#*r���3��Y%��ѕ���_�I&5��Ӫ67;=q��e�E�3SO5�""��'��sj�^4�����M*�aFf66��`U��<E���PZ���AZ|Y���QƳ2�(i����P_�_�����vz���\�קT����w�Y��L���h�΍�EO�#��X=K�M[n�q{�dJ��qn�A�/�5��JN^bvӎغ;e�	���@��ࢵg��\j�Ŋ�d'����g��!%��U}����GMC=���=�����'���w��{����r�OM#v��h���s3J��<�����U��q���B�v�hT[?a#3.���Q��%�{�����m`�g�	�`{�m����,�d�#9�s�������}Wd��1u���w&8�9D_╮�o8����;�5�� �U���h{�s��_�J�Q�h�9��®s��O�9�njKWM��NW�4�n�?4x��sy�[R�E�TuVl^/_ë�c��ʺ���E�#3��˒��b�,C6�-A�IC�M��l��Eg����}�/j��)����LQ���]�"��.�J�ѐN�#9�n���STy!H����.{ͅ��G�����q:.Yh雁t������惄�B3��sd��ֺ��J���9λt��#*_U��~ǃK�q�V1ѥK*�[z�*�Z��v�����6����{�庯l-�W2&ʍ�g��E����_(+�,�A�s�Y����۞N}�� F�N�j���/�A��EY��l��-Ս,U��J�H���F	2�i:V��'@�������(ϞBT`�y������s��4�{��g��u�<#���9�@�tY��mQ��-l���D�8b*��~Q�9Y�n�x��;��ذ�Մ�����諜�JO��U���l2�#9HL�G#9���s��Wc���R���v���g��(�#��tl�ߺm.<J�j	�[9�X�V�Vkb=���ߝΖ�҃Y:]�����0�gDg��~���W#91G�նz�qVZ�]%P��6`K?�����a�~{���0�����1�X�ӥ�z}5,�rT�Ƃ�DP����T9��:�pʶ�J!l1X8F��1����m�k_�n��K��߶�����V6��iP�Y��3�4e�����d��C�Dݝ����el�Zpt+l$�>���k���S�ZSjUm/�)���5w���6d���Qu�y߾믞���w����wjs3�;g�&^H<�L�>8�Vs�{qǕ�*5�T��h_�t���R���$=���{�>*,;N�ڪx����tM�����ZhQ�#9�J���3�8#9c�)��&΁�-b���uimU�U!��fC�W%DsS�’�7��t�0B���}�g��佪�uJa�C{v�7_fyQ�?��5��o��V��v�[�%`��IE�F��qxp#�̴"��f��G^e�^��.���VҨ�9�9���'���+�?B�Ο+y��=�S���t~8{���k���u����9lP��fDt��]��Q�#9M���w���n8G�T"���8�9��K����Zog�����fS�pr�^8���#3)���˵�/�m,%X`�)��k�+)=�)	����nz��2�uy��_��r��@(��h8�_9cX�y�1L6���P���Ϧ�����G��������R�xw]Xz��|b<p_�8��{�@�[%�E�9��)t`5X�U	�����*Ks�s�6_���r��	�&�#9z7w<�97�}p{���s}2os#9�O�O'�-�򛏱;���q�`�L���T��:���6m����9M"�e��/�o9�e5Z�|�jUL$���N�Rc�v�.��r�ۋ����gS�DM�b�#9w4�X���#��w��CO6\�ō	��t�+~Ռ�Tt�Á�"��ņ�E��43�NbnIS޽ٕ�]�эJ�ҏ5�H�ejᆧ2u跱Ҽ��wP0�v���#3e�Y��#9Q@�s�7wui�)�>(��X��O3�,#3q^#9�G7$��ϻ�f��{��[q>q�_m�@#9��k���#u��#*ͱR���j�S��+�S�|౉Z!���?�N��՜ް*��Cy�P5�Pd���_)�#9��v�W��c��Q)}~�K���������AF�JC����H��j�H^emg	�͔D���#�����hq�X�&�&��8�'[�RȎi�6�ᝯ���+����k�#97�m��V�IJ�VSs9��/�����]�����d�-�:f��ë�˭�I� S�M�Tr����\�g�()�ٺv��Z�X/��4���{���s�Oߑx��J>oP<l����ݐ�9<C`�x<q������E���^�"����?O��Uʉ�3�ݭ#��bl��������	�����)__E#9�s%���@p:Ǣ�����5��p�]v��E`[V�����;�g�VUf��%���Ҏ�сr�+�����T���[2�(F`(���]#9������ܲ��bs�#���=�]��3B7��TM�.�>ΜW��G��灌���4f\�2�y�o��ل�0����=�b���n�XH��0=">�Մ�߻�M=&���j�+񃒧���̫�������7���}T]�C�����۵��l�m4�Y�C�GQ�<�]���#9د`�v�/.�.N���Av	+���M���vU������(�R)T%��MѭD��+�Z���5���w�G;�H���]V<��8��d�ݡt�<&����ݗ�sd�Y���3��=�O�5K�zRI��c�r�)����棟�+�c��o@��k�]�,��b�R	����:e�Iw���$��]]�r%Y�Nv�|����i��3#3:r�}_+�|�O]��nw���BD��q$�֟���κ)��4���5�m��lm�caۗ3����9�iQ�6���fv�#��|g���en�7���#3�~�/�66��ӵ��\mL���7����#�����=����oƐ�j����-ы[���Dq�`|C�#9�v���<���GN�Y��n��D��K��d�N��bA'���1�/g��u�$�u&�]�N�b�g�5s��$}f���v�z1@}*�<��>:"����!l����5�h�h�L��=j���0#â� �M3����'�;F��Αߍq7��G?�0r��b�Aͼ/�ʹ��҃j1.+���?��Z�3���t��	y�1e7��+���0\6h��R�e;�^�o�$H#9�m�tSaXu�=��	��	[��R��١�.x�j.���у�@�����)��ȼrg�\S��;����!����#*�Ed��o��p#9d���c���9&�_��x��7���y4��3�x_#9s[c���Wd�Z%K��M~�l��s�#3�*I>(�<�7��m��b����#̶j=���ߞnΦϧ%A�7HG�>�,q=�1i�PN�W�{��z5J#*���k�s�5)"[��]��xX�:pu����|�����]�m�G�䇷:�õP�J���j��L:m�Of#���SdK��Б�n�-�K�/K������h��3����q���~��,r㐜x�F���_:�PN^p��<�rM�!�׈��>K�=��l�Fɇ�p�%��,�t�F�n_�\T	R�z���RH�r�������>s��=J���C�����;��#)�)�����)i��P����]�z&���B�0QnJ���y�Sש��{����5OK��锫������yj��޼�7��ә�Hb#9H+����ˇ�V���>�;N�^T�uL鸘#*Ŏ��/L�޺hV��փw�m�E�(���V��A��,.���Ԩ(���:#*�IA��E�Zv��k�x>\��6p�P�A4�Ymt��#*�XY�U4T�i$�[���э�^����><����Znei����!n����U=�n�4����J��N�/��ֺc%R:��3�)>�i�J��L9���#9@�Z'e�8Wku�9��˭��|@ԓ�<�?�(�t��y�:��a���(.[4A��d���T�/<q���;��IN`[�H�]J�����?;�����$�@�t�m�inm#D�M�Z�N`�W�8��P�$�~��ԟNBe�l_PSp����Ӈ���E�#39�a�����#*�_���ύ߫�x'� �yz�\�e+W�F�(�!IDNaԋQ̎.��^���	!�����A��\�$/�}b��M��y����|�Qۣ�#������\�C?B�L���Ͽ��b�rψc4���?�1���-p��+�<�~�s"K;���s�V��u3��%���o��_��)��M�kh֮#9�^����V헥}�TxL	>�4X��o��s:���m��H�qp��(k���L���m���ɖ/�����H���I#*��`o@�qv��g��n�Ԟ�&���,Q)��w���sR��guvZ?�y�#���̓��BW.��؂�[���|�o����`�F���W�8B&ތ����7�̱c��!TiV�V���ޤ�TI$#3�JeB�d�k�����7|���h\K��f����o_}|��|\�RD䜖Q� )o��;��k|�f/��>!g���Z#�#*��w��9_�G�ma􅻂3אm?�������}`l��X����Lt�c��L#3�.����;�ՂE�%~���‘�A\%�)w0��'vh TK�aP�-����>YɁđ?G��ڢ�A�<�l]r�Z����G��a�hbD#9}s������K�mZ�T��.5y�����1�������g��U���_x"�B7e��_�N��B�(�:l5GV�8�����Gk�Is�/�x���T�к�O0�E�D��`��!��8m�w�F$m����q`u#3�|g��D�@6�B��ԡ� ,��eN�uCT�����=���+��s���|�<MjN�F��Y#*C߶�(w�2`��h�,�����J�$&�#�E�|+F3Qi3�@3-J܁�/���:Ġ��X3%��n#{lK+�x�QS�C8���ӷv�g	��5��z?�:^����#35��m%z��0�Eyc�B��0����tp����_�タ{߳�|�d{�� ݌&�M#9�CA����m�!�O*��BߕYq8(mT">д�F$�#3�����M�"��w�#9Dh�}[��j�I4*��y�/H�8���$�*��Ǖ-��kv���C�(`L$�};(�;6�G�ΠJO~��=~��9����q�|��#3��#�=E�u�%�$Ys������f>s�5�cJ���"�&<i�H�;�#:�l-�"9��BQ�o��#�={7�c[_sl�k%�W���\���ETܿ[s���#3F��Sѽ�:����َ.Ƥ;! ��0�r��ק�<d�A4�Zd�8c~=�(k3�8{�M �-6���Erl�;	�0�f�E�R1#����3�P�K��p"���Vy�_o��Iא��^s�t���빀:�B��Zu�{b�Z��]Q�"��1!-�A S�W8�1��I!`@Y(VPw@���`�J#*l*��N��@?fC*!!tq���80Ë��ߟ0 �1 i>28��8N_�II�;(��q���͢��	PB�	�#3Ꜥh�XږD#�a���L��MJ�?U!��&Ai�m��~_/�:m�o����ͯ2����!���� �c�P�Ʉ�(�\�b�C��@�qߵ��R����,-�:�#*fQ%Š�=H�Ӷ���>�&�D.Mu��Û�K=��*5#*5Q5�Fs� ���+�%�-NAևs�ߐ��+�%:���	������\:n��/����c�<��`IÛPxJe6�W�y�N����@���0�L#*2R!�6�J\�x���2@��;�-3t\�G�v�����J�t��+(l#-����z�/0���t�|c�������t��E)����ð���'<@�B[�S�n�-��\�N��y�L�҂���<��V����n!��@�Crp}���=��B�T�[Ǜ���'����O��7X�0�f�.'8���fY��w�m|�!\��L��I��G;�!�`K�����K#*�m�0M�hK�s\�h�.Ivv�OYD�(����t_т��t{6͐o��¯�SX!�~e���zT��� �K|����L�$���Cn|�1�}��?.WmT��"��ɘm pA�LÝd�)���?U�<��m�߶�h8,����?H��T~�(!eR��we�켨�Y�#3���S{�Tz���ߠlj�����+�nK$��#|`�9`�_�rB��Qɋ�bZ�,e��������w�������E�#9�#3qnǁ'$�[#*nK�	Qp�r��P#�j/�0��tng�����_8/4��{�[�����%�&⒒��dWw,/�m/�z9�N���#3����vјt��!�K�����g�Ri���%��F*F��e�Q$��Rb(^�P�,����G���!.C�	 �����F�v�0�w*��)Up�K8�0S���{�I#3'�#*���ó��3P������ڼ��n�i��s���VQ�;�i�`)D�}13���G�y���MT�m�#90)���(��ꮊ�r����p 7�`ʙ��<!N*R�O�t\l��вo�R@�t�ƨS@�Mc��}�R�\י-�nn�J�A�B �y;�����N��\�M��!�����z��fӇ�d]��z����t`�aZ<����#3Xvz���=�Gϲz�xv����Y�QŃ���mO�A�F�r�P`\���n>��b��]�m+K��a#9Q������UP��M��.���C��q���]�y�����Ԑ�h4<�r		�PB%3緔�x/��lE���S��W�U7-��gl�m�N���h������M*�3���:�춝���!���u�����CL�v�H��1�i��e�7m���� ,����IFF<w-{P#C���s�J+��R���6ҟ����!�>d�Y�s�SW��;2#*� A�l�#3Ac�!j圉�uoS�lz�Cw��A���̾�����٘F�;�=�G�V.���*� ፞’�1Sf�ZH�60�ӧn�-�|��0���3��On��_h��51�PP`��W�E����]�JL#9J{��!]H����~F��P��%1�#9#9�G���R9)���]T�ϛ�5I)�	�EQ�{�fJl8����MRa����l��)Z#�*)��#9�Y�"�Jkv�ߡ;u���?�QhJU`w���~j��SL��@6��S�.���W�P��!�t�aQ��Ί����FI�=^��HL�T_��؂����o4R{�}'�ݻO�~a>t�R|/?��F�K~U}#9�je��Y��(�$�P�?�����#*&>A@>�c<s�S:�.2�#*��֨Y�	ީyIw�o�{��m���V�8\*;�{%:D�}�)n�; %�[�McP!#Ѻ�Hl��r�,�;�{]�v�o�m��״���y������꜡I�I���gq��kE��Xr�'P�����F�T�ӏwz��f#[5R�ȌbY��1��k{�����ۉDZ�yg5@�rYp��>8�����!���|;�{���.{�0���VA���E�>R��"���w��(��z������M�#�_���0R��:�<�~oٴ|�F�h�n�E	n#3�,R, �򉏯����M]��,��(��z#9�<oN^�o�����2@r����A�@ ����0������/���98t>�jvL2��U��Ho�O�'H�R�߻/Y�Cbx�i@u(e�����Z��}��#9@3,��t�Y����w�w�l�4gaؖ#*	��E�wB����ј�1R�Q&���叾#9�!��%��) �e�GE��t�s)(#*�`���V��b��(j�5J4�/t��̶Y�;�Q�a� �D�ܔ�����j$��$'��T�*�Z-�t��{I>�2��;��=�+�+ ������ ���e�w�o��l8�ƶO� ����?|�Z�*�ۥ.:,l0�E*��><��=4Nz�_�~4To��*�-b&Y3�Bs��d���S�]����Σ�M!+�AO��=��{�.l`Y}d���#�p�@	6�����[t�|���O�C���ĸa�H)6�~-D�Cbl�/;%�r�,S���n��K�GaH�6��kO�r��QC������y���`2�%ee_�%\/b0��uy�V���R�*8��*©����h�)Ӥ�\2N�V0�RUT������pd�CFj�T2���YǥS���8���:���yb�l���쩢���y�Z�_Ν�ULBgL���8|�g�zQ�Z�C�1��i���5�{�?0��lfо��mJ���Q!#9����ɸı�X�hɢ���E$%3J�kL�)��^}7�著%UP�U0�N���sp���kg��;�H�rs,繶��\L�&#3�Ltɷ#9B��*Tq��H���Њ%��Ev{(`m�;ῲ�߷]�S�xޘ��ȉ �'7��ʆ��{��Ý�$Db#9r��60N�I�xbV}-H%�7	�]��!���;�hg��d.ô5���I�Dq#*�z9Q#9��U#3�T�	��Ԁ�F�:m�����(o�qú��t#9�Mr����N@�T�¤�I�/u��w�p�'r�M	�h0�N�|�y��Y������l�&U�gQ4�v#3����|<���bυ/^�7J�:'�z#�֌��%�y1C�5.P�1D�ŭzƯ����k\�V����KN��0�a% B� S#*D RBH")y��i�p%�s#9�I'4*�0\�:)6VP\�"m0�Y�9�Bf+�M5#9%�EJm��2&c�l##*��9��9��c鎉�v�d��5)�k���ȵ�48����N���q�[��R	Ҿ��Cў��KSꕏ*���x�Mg@l�0U"2#9�"�#*�j;bZG��.��ق���S�_CCy��O#׸B�����"��ٙ4ށ����U�(ڌФ���*�RZ�T)�:dq��zg}N���v("[�S1C�ٛV+l� J9vƥ�$�#9�2�"5h �*��dY���#�P#3D��9����*�7�	TBT���{���Q8gK�'d��~�#9�ZB��xuɐ`TEXR�M��FLD�q�ђ̔l!��^9(���5�K� �]��N�w�ʓ�Ɍc"����f�&�X L�ߧˏD�_.5�O�|�A~'T8�%N���~LY�bP�ו%�.��� c�����UX���7��!�u�V��b�Z��ĒH׸�m�	ԓc�J�xs�$�)֬T��{^y��?m�U!R"�#9E��-�@�Ӈu#3pe �"�(M�PB0��ѕ�S�n����5���"�{q'P�RLp�R��5Y$"(��M瘧)lk��T��LZ��k�tEM�^�y|Q(PUz�V:�s�$������M�]���Cs&^#U`:SQ}<x��{+\�H:-ۧ����|,#3�)3�iu��@�n�����ӛ��`�z]!�2��«ɚ$��iDΙ�H�ED�Ci�����7��r�&�W+�KY����"|�v0u�?�G]m��%��3g`}��;�i��SU��c��wY1��I�3#3���tff��G��r�6veϧ��8�uN;�wG��{��ij�T�Ic`���y�������ͬ`g�*���#y‰��⦼���ا�Ƴ'��}�ƞ!r�D�����:���64�S��ɩ������N��eɷ�+��di�Hg����k�8n�׵���|��kgm��r�*�Q#34�$EM#+�a�xEʽ�s�H܎H�$l~����?i$=ip�z�X���z�qI^/��at��1�tر��^�����2Mn�oTw�Q#3�c��H������C������� ���S���1����O�m���Ux��x���T�=.�A�yh`��6L�b#3��H4���Q�5�!��&FSV�/�������Nm���o��G�)޳F�$��D��ť���ֶ#3�)f�-;Td��!zX@�V;�ᶱTÈ��*D���f�ۄ�Ҕ_,��K{���7Hpp��,#"�8��IJ�;�Y��p6(1���Q�6k��N�85_:�[�^�����c[�;:~T�0~�:�Er���MQ�G|�����u�P��ѷ��	�9:�Y�1-�HS���{Ym��:v��(_}ʁ��erGɃ�j)�T}�8�G��DI϶��Xn���T���.Ҡ�i4�"�j�O�������N2��S]Ae�:�v	��6�1�#���EZg�Sq2G¥P�[-����$=4䠢Ŗ\f���Ǝ�o	��N���ؚ�ȯ����N>��Èr{�Y���:MJ���"0c_��I��`ƙqBȗ��w�G��Y!D�'"H�_#9�=1�΄��@=W�r��u���E�=����P�$�:b�/vٺ��9#9$����M�7}�4�!�� ]�b�=�ۓ�9��3�V(>Q�a���A��U|��ZƐq�$8B�T��D�7�s���e5���;#9h+�N�ئA�V�)Y�rP��aP����!��!���~K��3}�aͦ,�k�^O��'c�i��ޯ�"����r��#9: g* t�z��e���=�I#900dh=t����d�#��i!dK�5C����&N��f��%�ڹ�D�R<��yMQ��Sc5������mXQ�T�D�����CNJ3�=u�~8�I �ۣ$�:�#3@99�<�@_��w��*Z��C���m�=m��.��/�`�Ĵ<�#*�GʠOM#9��r��N�jKN��+ � z��g7j���l+����*��k�1����E�eP;�N�-�؝q�uk�>�����dlϷî�̉�/������c��yL�8�`	�!�������DC^+|�JNi�.�(e�#9c������Z:�?�;�O��}�(y���,��dM�8�����v��C]�!���S���~�L$���f����N�|,�L��E�Rʂ?��0�扩�U�BZ	[��/cE|J��N���`hgD�X�o#3����2�7=�_8��t���c+�Ђ���$iΫ2;bb~��%���,t[�AK��^�<1��	�N�#3Lzs1B�c�8v���:>f�)*���s�cx�*�~ �-�z2dq#ꌖ�Ln��	��L4AO��?���m��.�����Sl�A?/󦰼JAQ,��兹޺O���V/�N�n�*	^9ݳ��Z�mΉa��c:R������U,�	��z���\æ���ɤ�#3�V����g�B\�e��x�o9�@�"\��#*?����og�����#�e��V#3���c,J~N�{K�13/ƣ�W��7;���_�}��W���1N�����!t�UX���R"��~y�7�9�|l�l�0���>��(��L�l���=_/�Ҝ�ަ��rL$<�#9p���??�$�}�P��T!�~@�������=58�����@����_���ВQS#9^T~�A�_C����R�j˖���>�/��/�t�m��+ם���t��A������G�>��SzG��� :� �)5Q���v���~��eM�=�.�9�UΌo��x����7���#9�1�G̳��%�L_Y�ֺ�n�	�a�"�tGe#*JggP�܉�WliP���}8Asպ��T�?����*��u�j�Ɠ{�v��V���K�`Z�]�ӌ4�=��A��V�^#*��#9@�+xT[�G(m�.G#9�e�͝XG��L�}���?�'l�e����G�+�i�����#3(�ۙ�[�K�@�ª1��7�|}�5�Yi���}#3{�!��:~?F��jL�d�$��P��Mh��<�~?��������������j�gG�ҿ��X��R����OSb{�j(��-�H��p�/�B�>�L���?1r�O����MY�?����k�﹪�S}xq�h�Ilz)TWe�������?^� v�����O-�?�4�:��Cc�/_3��_\�}x5�iDY�㣫O���<:��A1jy��h�wz����j���Ʊq*���i�����Δ�#�g��/+ca�#*Q�4��•��e�#9�7Vy{��>+Y���v�w��~���� O������/�|#3��6ε{D�ϷO���!L<D�x�0$AFKbK��{�����p\�+ŵ���i+��b�� �{���6��Yȧ:�X��� nz��z,�l�GV��~k#�6��#�b�K�4\���hX{@��G�P��?������۰C���n�O5m����#Ҹ�(������m��2�(+�!�C�:-�������_�wU����#�#*��r��mp�P��'���u9��YD	2#*��yuDEM%0�9�o�@����7�H'�×w�y�ydEJ�%�j�t���n�Ts���� m.Һ�����"#3��ء4#*Gv�Z�H�)�{7��!�-ON�À��nÿ���\�s,��/�W�/^7_�֯�Ʒ�W'�Þ��K��U$�n>��LD���#3"�1��7������I�*7�,����f�Z|�`	䢺�`�����)�a�T>�,���$���W�va����~�p���%q#?'Z�B?L-g�ì��B0���fB�f:w��*3���96��V���b�m#9Q�����9��x������?|��?��m獊S�P2���g#����N˩;q���\q��`����T!G�s���g�9=6���rs��w!<��촮�}}�P{�*w'�z}Ò1O��Mr�	�����������1�bj6r/װ�U����A#9'TR2�ן��(�� #3��T%�6�/=#3���6����z4�����%.����p��Z��e?�ǟ�k���7	��P�1���� ����v~n�<.}h)6�|�6 Ȑ~]s�f7�wgDf0_ٷGGO�?$a@���	W:���#*י����`�|��7lÒ�_t$������El��-O��D�n�"F�_F7e�/�P#33��o�0������a��u����}%&}/�#*���y���}\%$P��>6~f�BnL�W�]��03��{agHuͬ_���k�'�9����*1����C{��)UR�0Є��H�?S)�!#9v#��>��{����6�?�9�X����<dql�C`��PP�6�).zE�����7���s0q83X��USijx1�����ɞ&��^Z�F+��}G�#3�BKaχ�f���$tƱ��R~��N�����������ʾ��ń��;��F�u��M��D��tg��z�l�h�}�r7���]Uͦ"��n$�dE[�'�m���R��RZ\��-�{[ɶ�:�����Q�F>�(�U�{��_{��>�p�mVbA�C+<?��4,56��5�#�WY����$m��x� ����q��?ܝ��A�?��_4��~��r>>W�970�̠3u�N���pϝ�oǓ�W����WYR��:�ou��u�,xe��\j���Uly`���i?�g�Q�٦���f��Q.���`�Q��A��"㧛�הA���#*��/~5�����&V�e|���x�4�U�~���=��MՔTQ��n��"���Vrѥ2�3�d�,1���k�2�(�W,�%�M�I���T�ܳ�&Ҽvߣ�NO����xj�st�ٷ�!��~�d*��6ˊbR��cc�B�X���}�w���|��3���:�+9n}"�=�����Vc�.�wĸ��;t��v��=BX��Ҳ���w��#9x��:������ݖ4h4�	�t�g���!.�l3�+�>�;ht���&���i���b<�Ԧ�S��V���\������/0�X�K�:�=��}�u�DJ|)#3j��BL�8@Cn�=(�Q�Z+�h��?>s���	�!�g5�T�������4�l<+�Y�7�~������x�_Ƿ�!�!�j���0�����i��Nj%�$���U��}�]'m>5����h�5EÁT�}�xe#9|�:Y��l�|�Q����O�GI~�U4�\7����	���؉�1�k��̾=9���elQ�����n��o����Zu�#9�Dt�w}%㢑���A���[��s$!�zlc{�B�P������NOs�t���_O7�g�1�fe.$A#*�F�Y��K��:��	*�%���䷲L�����ʮ�Dra��sJ�9Q��k3�H�s�+4.H@��lt��|Qh~ܺ"��X��`G��s��vC�yW=���J ��H��������#�rl�;Ӵ#���VS&��L��oB���$ WA#3����W�bC�„���������Ť�k��`P٬T�*�b�Cڙ��JS����.;h���.�1�V|~�3n/'��峞N���f�A;a�\o�z�6�9*"}�{݂�����_K�[��"-?{$��ph�8:1M��gȹ�3IQ^�&�Q�= ��L}t�~pD��;��+���գ��+��#�k��n9�����m�_�G��ŞC��%���K�%���#95e/����ָ���Bu�t3���]���7�3ސv�k�R*6��6��c��#9���W݆<���o����L��4_��a��̝������8��g�?���GQ�^C�������Gd&���_p��.ָN������5d����skKGt����ўah������;��u��i�HB8U¸��BY�1����=�#3����Y�����\;(�{XJJE!�a�ެȜՊn�aJ��Ov�����m|�}c	�:��9�ވ�E��K�:��2#3��2�wY�1ˆ���#9���#��g'#����sD$s�#9��'�*80v��/9�[�U�QAI)�t@�J!�<J���P[�*�6JJ��}���*�6n#*1�)b$��]�_.����S�=�^���mB��h�3���s�g�d��ў+�`p���9��A��2���m�����R�.�{�(�ÿ�t2�E|é�˫�pl��u��CS�[�TTB��tN�d4Y�qߵ��:O7�Bx�;��;m�wO?��I��3iW(z��#*̍#*Ȃ��V#�%����<��u��L?.�ܾ�{��j������e�)CT�F�A�t�D�3�a��4BZOb�E&,V)i6����G����ǥ��C掹�����#3��y�a`pq��0�� ���of/���aF�(%�XCI�3�"���dm�6"d#*����x�J�ȗ�-�#��Q֫S�/�!��Q�ܕ��;���A/ɛV1#9{|ҁ��s�3�r�1�H]p6Al���"�W�},'f:�t�GE���pX���ji�����������0=?iX��[���y6b��<p~U�3냩���ӣ���خNÝ���a����5���z��ʙ����_�"@�0�1D@rS����G���\��� ���7�_W�8`��^���n�a�l�	Q��>�u����^n���N{#9E��̲)#*��wW�����<#����qO�#3;2T�F��'��S�=t�ÿ#S#2Օ����Oe���V��m��I;l���e8���Y��0�GN3�ٕ�5��z�������>����ë���˷%{�C 1Z����;�?<��~&�x�������O��M���u�G�������Q�]��]:��y�6O������ܡL<h0��Ɔ~R'��8~o�_�m�I|C){�lu��%��:1�7c-s���M;Wdm�J� `�O�S��dx��E���(�E�؟/�O?�YN#9�DƎa�CڷX��H.)���H$������1@w���7���� ��s#*�f���'�&���~�QE#9#*��z��� �����֍ݡ?W���17;�;j�Q]n�<�8���ox��:C�.%����0����g�+���$?)i�n���t���$FC��� $J�)�r��{��gG*�7y��?l�fe�!����YSm����C�Ov��qv8슑y\��"p���#*�	���^h������#9>��ۙ�$e���ո��8;�'�x��ҋ^��>�:���]����mr��)�Dd&�2�V�����^�U�q�y�<�����#*X��˖Ĩ(0ÙĹ#*QH4<@���#*�Arppig��2�C#*�*�ǰ�e^'ep�B�{��H��f#9�y�xs�_��^X��7ͱ:)��r �K�m44�E����=4Ff�k��[�>�;9�CT�~�r#*����$���ł��ű�����{���f��	�����C嵺�r��SRT��,_����?��i��{QC��k��j�,��Q�~D+&ѱ2�@�Y��(��݆�l�p�M�~Q�Dp�}��l��.}���/��w�l�L�,�&�T�Cg��e;#8���n$�c���Ѐ��:�#*���j�9jW$��O��zD�e{푢'���6�[�`������H`���w>��o-qx�Y��w:��{4ۣ����Z��I#*�T-o��<M�?L�6�;J#��<�U#3���I�=��g׸[��������O����y��-���ȉ��ʬ�̐J7�N:#�]�6�B��O�ܲh������:�����G��U#*����Ua��9ާ;�f�D��)�(p^}ʓs�7�4��xLo�!�b1C�t�X{��0�#9GSwdlf���f<Y�o:�'�#3>�[�Ď����b_���h��\Ag^�rм�Wɿ���s�`�5o:��SW'M6�%��*�Tz�qP[#*im(Ԑc3␅ ����ʾ_�l���%�0�P�nD��rɏnG2������C�0sS1+mʗzH�4+����q@)RH�c�04e%#92��G�+m�*7�yw�\.1-��P+��b�#9�������E.����\�Hׇ��#�Ŕ���҅��~��G=q�p��R����9т�[C7��{YS&�K��-��9�|��ip�N�k��vZ7s$q�L4����A8�`i�`�	pYG�#*�_�"_E����!&�߮���]l��0�DQ���5�۝z�M�jjJ�D�������Y�0;5E����c[�z2�n�"�[��U���{��꾯���N�K��6�[�Z��t�#O��=qր0(J0���T3u��d���R�U\6g�w^ܾ����RJӲa[wϥ��9���J|_qN;�׈a���d¡��|  ���[qsF��٦���%��g����T<.XC��q/9ŖZU�����AD�'<—���(Sn`��s�q�4t��Gج���U+�o�]|C�gm�;��a���'O=N�L�\���W`��	���e���A��q�'���P=J�ΰ吵��̇A��}��\�w��iT{��&Ԫ2���(Z�j\Q���&�~20��>�>g��ᚘ�ǪO���,�E]�p544|^�1�JN��z�֐�Ӷ�\9*g��.�G�G���"ޔ+C����&�{sl����W�.��c����zɑy;g����n���#�#3$�̔��F}�)���.u�,�S�D�,��fXd�/�=\h6�i��Cb��m+PS2|��n���IOd#*s��#*�`���f/#L����ھ��=[�py-Q����{�_N��l��r�9g��Nj*��y�a4!�5:rlQ�!�3_$b>j�c5������l	iS��0�̞{Ҿ����ϲ��KaX�#9�C�!6˗%�ݴ�m�alb�~O%��(��,`��zH��f�H�E��IԒd�K��F�,�R��$���l�x��+�(��HAȪ9F�.g-~:�A�k�щ��@"����������/ 2�SX�9�l�˯	1@�@\�����#*��3�-ɒ3�0�,�k����&��d0�JDp��c�^9�14&� 4-�b�����6�0�h7e�*�������=��nd뗊�I�@�\HI��ǓG\��_�U�7e�\6�"��/F�m]��$���-̷�n�,�ڼ�����k#3�h��q�^��\�A�[��s�J���x�M�#`�v�rڸJ�wa��9�.����"�Y�V��#9X��c� �;#9n��2�Z#�C1��|l��g�Z�Վ����?q��+�ӹ��g����̢VK#9f�TH`���#**���Q"�*�[%}x4�oK��ݨ�����Z�YcL��>�][Y��@2�T6�H���8D�&"���6��[f���_e�Rk� ��a8��OIFAjo<�jI$�p�go4��D�������(h#9$@���!�0���u��}yU`�$QAK���	��p��y��;�"("rK�,�8<\U�.�ϊ�?(�Q��f�E�>0��p�)#9>���ٙl����i�5��։c*ׁ֡v����Ph�=q)��Ԃ:���l�y�Z���5M��u�(]�0���Q���x0|�ڃ���k�Ќ�\M%x�(*7e|�?�2�%۠n!��Z�t&�eۆ�]���zE��0�Yl՚{-��p��w���62���솰�z�,�y�#9�ֳ�rD$1a� ʿ8��t��`1�t0��;u9O>�O�=�������2܇=Xܳ���p��6s������h(@4P�D���T�~�\SA�#pkē�$S7Ii'�Ց�m�y!�lU9��I#3x��ɓɁ�� %F�xrC����.(�B��"WK��|؇��k#3�-�@1#3FDtu��m�^�%�B�d�OfBu9裝�g��E��q�p��}r�*Aqu�Ќ��鰠�DA�߾��?x��0�=�.���T4!�bS�3e2��x�:�h2Q���L���2)!�t�2�|W��&����،���IZ�6樝���#3c��{놑ѣ�Z2��Z�\��	L&��G����c_��1�Qƴ�hǔ8]��T�mQ����C��4� v�Ǫ��bߟ�:f���F�ht��I�U�Xu��k6_S E�Ty'��=jx"��Fd�-l���u7B:AiAmoB�`[mX�D����w��N�1�8�Qn%�i�ԖZ�P�6�YA1��:ĴpQr;n�w�F5ׯ[��`U�E¨��'D�e���Bq�3�פ�.���"���K�<I��V��i�B��đ�C8���Q��[���F'�Qn#*xDL`;k(��3^�@A��9��ߕr�9W�@�#9���DO��c���V������A�M!�K��[�����&�Mʀ�8ptu+*��#*���ߖ�_���(�>߰h�}���b?�����@w�vx��W�^C��ͷ�Tt~5L$Vt��FX���0��RA�8h��B�暤�@�7��튍u�Esk���_�;vv#�T����x˭��P�T,�l�i�x��͑jh���X����Ї�����׋]a�9#*��Vo���y���kN<#*}3���ܛB�#3N٦�5�y��^_�W�wO��<�п�|'��C���!�P��.�00?��~0�7�mt���M��gR���C˔��R�#3�K7?��������)UU���/����o�,#*�u��U(��02��JW!�Ƚ����z��z���ח����)�'���aC�#9@�@�ǬR���L�(b��f��S�_�%Բ����j������x�v��ܙ0�M�rb,#*��v���#3�mg����ެ�{�lq>�e�	ݡa��N�M�p���Q��70;��pt�#���8*�S46��p��G�1+��ړ����y�,<q(�C\ѽ�*�W\_�J0#*�Cl�Z���tyUN�3�k��`��;����#�$:�|�����[�����W��#3ࣼ�#3�#9�������?;��ȇ�`�"�C�����8%��х�\��wxf���f�[X��G��0�@��P�7HA;��߽��u����=�"	��w*�=>V݅8���3S:-p����I�]�G�7�}<��Y.�N��7?�< k��pSR��{m�B���Z������h�q�P#*)X�p��W��%;R�������9��}�o�W����y�u{�62˕���(���ռt���r���=9{��j���\�f�ήa �P,�*�d#9�.����}�f��5n�})j#3l��l�	zxй���H[���>�7�������:�P#9.!f)K�Ӎ]�rI����,#*?[a�����E9	��x�L��-Eb�� p2���a2u��������MѲ�\��X��3>ZT��r����������;��9��t,x�]��7����&�p�܍�7�)�Ġ��Q�y�p�c�.�	HRϭ�T�hD�@�ł�#9D��G@�^���KJQ�$��l��Pu\�N��k�#�J��;K\̬��U\0pqlF�Ы�a��z�I-���|R���41�'��h������+�q��xe� �?��������r鷣�ι���&��h�a5L3̳��ƵR�f�C�ş�μ`w�������j+���A�8�?�����5\Į�H%܄���B���Oӄv<�?U�ˬ��d%*=1����j�X<<1��>-�� �&$���3�"�H�JKC��ژ<))Xzr=�P�U���j+�W�kv�9uϧ��L��цר#9w��3~k�5k?A���-�#3А+dG�ȟO�w�8���#9'���{�=(�t��O]@��S����B �֥��}�Na��g�|���0��W�%C�����s���g�ʪB޷G�5��t���P�Gg��zJ�J�j�����sq��!�M�6�T��u�!��R哗*���X����k�I���v�?SݎRˎ�lY���$�RUS�I$���į��5���t���)�]��8��>/:g�^��p�# �ï�#(m9�Fk������jY�OJ! J��@sGp#4�=���<�����}���:~��~zo����1O�8��I?a�0���2�)_����}�?3��3��0}�ǿ�`cڿ��16��u��L9�[Mo�h�#3Ь��lP+-"���H�zz�X�$�m����Y��?_�~���Xo���G���<n,��jvi�-�x�&�vwμ���s��n�v	p��A�O��$� W�c�{=M���,"F#3�gW���U�l���p�1l #HB	�6�?��.����L�o���&�t��;�5~Q#9#3?O����#3�{�:��$(i�^]jmw�O����S�������%��8 ["�!���d�9�8��#*B�~Գ�f`6�����D?���0�\��5��o�-h�\9�f�SMHI��De�#�š3Sz@���#3��n���#9�SX�v�Ot ,<��R&���_Pk78'_(I�.�ҏOTS�0<�����c�FɈ@�5$�B�������}��B߁��!��cA�{��ІAw��Wd�����#9�?o���Co��ƺz��&�d�LȢLc��`ޚ����Y���p�nwg[�g��,e3D��6�F�OZգL�F�n�Vj�O��N*n�l�]r��Q�n�^��I3uk���Z���y������Yk�c�+00��e�1׬ `��=S5����xC�]��1՚5�m�u�cQ����W3������Ţ%��}Q#*���T�N�#bi��dz���d�?i1�J��&6^�mC����c�Ȅ�N�S�z�gP#�"JnI���0���W��Qb�쫈�'�e��{?������:)��;9��C���-����M���!9�#R>ǐ��׿��i.�|/ݩ�����#1������ҝ�ȝ#9�ܻ�k	" �-�Rm(2d�?�ۍc97�����U��W��lF����)k�ݺ&W�f^%���%M���)5ӌ�]:��~E>G�btm=QI�;��vE�3+�\�/~Jn����f���G3�ӣ})���<�$� ���~�t�7jSr����I���D�����l0Y����h&_�>53���r������/�7�}~�4����Q� ��<i���ЊJ��J֌_��&���K��_��������ߦz0�]��|�G��Kr�%SE-HT$!!��#b����{&�[�#3n!l�|Uovj�T/%(4��*&G��n�Y�gS]!ťxm>�Vx���Ξk��x{��-$���������}�of��$��y��(��@�[P��I'��O�XKb����b�����&�������!|CG+#*k�;�������b�+�?�o,#*���r"9�#*@#*l������v�T/�G�o�9۠zva�$ �}�Ëb�鯺�'݋�+��ǹ#*l��Ah��_q��c���ȸ��?�OT������&����I�G��W�6��`X,!���pȡ"B�;sAcϥ���8僟u�,cN@x�~��;0�ڧ8�����������!�#*��"�H����Ǵ&S$�Q���)@�p��]�/�9;�0#3�G�ӣpB�q�O���Si*~�A��5���<!I�H�+ � ����i�;U�#�.	����$�So�˞	��~:�8�A���#*�)�Hh�C�>�����G���`�����?>c������&?6~��/�'ء�b�2���@ w���#*�;ɸx,1/Z��+�h}��'���=O?������U�[��0��|T��f!!��d�I�@�����~#*;��`�X��t@H����JE$�;N��O��cq��B���~2��cD�j�:*4�F2r!k3/�v�|�ȹ�t���A<�D+����#�\�+�~S�RV	�:~��a�<3����|J�����:��'�H���C�ʟ����L�,O�*�^��9����r�C�r��ȺV�O�d�<u�q�VD/ej"4��IG&�@e�%�mUM(�xlk#9�&$hJe��TN;;�(q5������ʽk턙��	vō��;��4LJ0�Z��m�ҋc�	s��+�o}|}i��C��8��x���"�#*H.��$�ZЫF��O�:��J2�/��z�L��`Z6:UIV��� �'ë��z� :S��>�ޣ�;Dr:�ytN��D�#*��m�=����KlzC@#9s)�T��<W�>S�:_�?ǁ�@�ó�����?����1�ȓ2��[#����������4D���*(�([��Dpuwe΍(�`i��x��`i�$n3�-P�hx��k�{}���<���5�Oa�Q�	��)�dhU��Fm��=ȕ��V�Ͼ���G(��(����W��;Ȇߔ(T�#*��c�ED7m6��I�~�����h���g#9\�vmP���N��/�$\�#*k���;>�I!Gg"t�73׺k�+���zwX�^h�ڗ�����v�=���s�L����:@\�,)BB�B���"��3ꕠkE�#*�=��@��� ��o���2� ��(��*������M�U^�U�	UE{<���	�3�a�k�`��٭�a�]˗#�[֌eb\y#IS9��#*6�L	bl�E� !�{	����#*DP}��RBn��FѓE�av/eI<b. �1R#*�(�"QT��uL�pH�qm#*&�?̪��K�λzm:��>�o��l2�_њ>w۩�J�U5��;��T#3� �e$�v�rv�0�Q)߼ئf�C�jX�J#9Nd܍�0�~�����;Ut U_�Eû�rK�z'r��0+��!쭿dB�5���z�|�uơ���d�2Q_�ʣnj�+��km�*VVj�j-f),Sh�"22ߙ�-��=���/���p�2���=��>��pJ#9�u����$Z��")g4���aI����0���3�7�s����0n�#*iЅ�M*���@�aH@��P1#3%wt�`��q�J �_J:����J^OD�;kǡ���]!%�FGQ��:y��p�aދeizx�#3v8r&|��I9VȬ����C�i�!�������(������t��By�'m����1�B���8�l-�*�G3n[p�s����{L1Z���<4��I"�t��Jb��(��NCz,���=�Gi@=ʼ��$��~n#9��'S�y����[����>����Ԩy��(Iܕ���ZZy��ԅ�l�!kģ�[IVI$}��&��t38w�֤(a���]C{�pK�HQA�ET��ϕ�Yn��ӒGaDs�'$/�_�/6("N�!nj�C$i�7�AN�(O�o����������G�;�2F#I����q)c�h��$�#�'��1G�UI��Q���2{+>�g_��G����B0����J�78�[,�c$����0��[@�T�;;4�L�P237��?#`�����Fcg�����~�I�B���?J�^_��9�VW�B�y�&�#9|�p���%޼�#*�D������E�'���S�E�n|u�d�v��?'������A�J�EQ��3�B�#9r���|�T�W�'Н�	��XQX�hM&���Rd��gp�	�{�R@�R�W�!p�d>�uP|���+������j����ZE)`�\\���fǁ��\Ng1��@����wvt������n�>A(#*�Ӓ���\�%R����Y.)S#*���=��������f�F�اX{�K�����Y�q�H�sP#3 ��"�D�#3��@o�K�s���p�"�x��2��t�QU�S1�C,(���>�0�!@��g7?Њ9vx��ED��T����o��qVq����j#3�@*�J�8i�!�T�}�Q#3�v����S���B��E�"�3�!�~��F���F�<c��#3��{���I6�Cq���i&r��70li��yމ&�v%�8�(��w_�{���s�q������!�:���*�*�I��#�+��U��ԍ=*h6���#�Ij�`Œ����=�%��/���+�â�˫q��7���*�8�Z}�ws'vE��RI�U������Nu'`|vHA_aA�u�Ϯ.�NȬ�;��f}ZvZE*!�~J���w�<�e����r�܀ �7p��61���[�`�iC��SPt<����i���$�mR�����p�s�#�����^����&��;rx�r2$�2��i�a����"��K۴�6#��	H?����e��7d��b/�څ�<�Ê�P��'��=c�#3��KO�j3B��Q��X(����bbnp3��'��u�U��qGَ�����@��M�������h�f}�Sd���H�Q_k��ՄV>۳?�N���C��b�'��w�3����x���������#9���C��Qy�k�cW#���D��?���~t�j��3�����0l��+���X�#*s�����g����7�5�moN��#K��Խ:@���#*���+)�B�h���bվ�0|�u���GX!�(4�$�H}X�#3�x�4�����T�X�{̊���<ـ��7���`���($��)C��5���_�Vߊ�WA^�޽)����w՘3��&`�*�	�gY���fmG��o��ٰl��֎�ʱy�(����+�rY�6��I�M��Q�+�q[�신mb�Tݒ'3q����ߐQz�K�<�� �V#*�Phxr�������P(v_����"�x@DDd�����Z+QA$>���وd�f������u��䬁H�����&CL�4�33�U������4����>�!P2�i�4Ol-hj�qp�~������W��R���p���nޠa�Y����؅`��^��QF,2��O��~�@���/M��^E�vwϠ���;�����G��+�k��?->� ��?BC ."�Y ��OZ����l�qP�?$a6��ݿ��<�#�3������ު5��T$$�������P펣>A#�C�d6�_�Y�1�i9ƏoŒN�/�y�c��]$�""!�/��BIG�Հ�럽�c m�t��������lnjq��U�0[�#3�3g�u����PhM���*�m��fJHF0"��Ԓc$�N�������#*���P��xS�����UT91�#�c�y�/�#�O���T��p���T�Eh����`�7	�7y·�����bO��AĢ2 �w����#9��G�-�/���wtK$��������ȡ�Iz+��9��J�U�ڸ}��L��sd1��#��d����4vR�<�v�Ǽv|�$g�����M���J�G���cĹ	4U7��~�|�){��[;z^%j�#9��̖��B��B�O3�˓����)XK���u�`uҐ���m���#90�"L�`Q-�d���H������_�$Dּ��#3{��#3|��%�Tb7=g������H2����#*7�f#9�σ���]#*h1�A�q�����(�������竆����ޛv���У�7�`�߯#�>��K���o9�L�d���T��%���W�Ja���xɠ��0��n��'��L���Ԋ�PҩТ�N���4�L�1ƬT��!6��|Y�f�!G��3�&ʑ��u�-F9�A��4�� /Ӑs��XE똵#3n��L�9��6Y���L�LU�4�=��[`771���%X������,b#3��84b1�`T?*�)�����o�n�ȧ ��+��S����֟�Pi��z�F*���	y�"��zU��(�I:��*����?����o�pM����ϘB�j)��%~��H~�����ӥT�I�5y35��4��-��(�5���"BNs%��=<@K�9t<#3Nڽ+	4U�#*��T[_���ـU�7z?W��Xˆ��8D�TB!�s��h�b0�w:��̔py9�w���1FѦPGCv�v�J0��F#��;C#�]�[�{ѼC��ΠA�@B���0��BEߤ~��4KI#*�(�OӇ�Zg2Dn����~��;t0�׆��{-��5���#-��¨�&�B��Q3��`�uF���� SP=2�>�#*�f���}0��CL�W=L3M�3x'�J�_c� kx��bh��2�2�b��2m�|����P;8i�||��?If��5n#oO�8"�6~�/�6n��I��f�-��ϭ}\떷C?���տ䝰�_i)�=��,z��2獝�v�5]�Q#3��#33fgČȥ���.ͣl�9��R��ڋ2NJ����M�0�#*�A�cA�%��&��Eؾ��ם��8Eb�m�{�u{��#3�~��	�Z<&*�ƒ���l(��s�R��D�С����v0�yc�'���u0�#*����w�����R�1��T@�#*�"���K�g��m����=��b�1�pz��F��	&�~ˇ��_G݃���#3���7�bA"���||SH4E�ej&9I_���wד�����k��Q6��P����$���E!�"C�`�@�A�EØI�vk�Zح-���������Ͱ,�Yo��A�ܢC�����@ѱç�����w'7�麗#3-t��3�-P���;��#{���A�Ϋ�7���?Ѓ:OI� ������k�?��.;�"ǣ�Y8�K�j��#9v<Ks���F���iW�(����D������Ńsm�<:�Ի0��bpv��S�G�d����1�éc��E��6���^�U+����\)Mv��M��e��b#*-Th6J+]�ѫM :a�����=̷Z���*��Y���*g7��t-3���R�8��^.ʚ&��1�:Q&aB�PQX4�]���\5����l�.��JT�<��J�2�j��SA%�w�k�8d[���Hݱ#*<4�߳�z���"�����I��Ky�)�&��z�o8����i�A֜]��˂Gz҆��E_�7���u�6���|�����κ��;n�; ���y����6�bdޖ{skC�T���l���F&���Ak���`D'�y'zo���[�ؒ�Uݜ���[��0��C';��жÆ��+���봘Zu|�4@#*�#�t~�'�}ߞ^�s⏋܎"�lv��b�JS�-{T���ӂ�I�*�����>i>*��@�$Z��\�wl�^Pv�#9����X�Ċ=T��t.��M%�ae����B��W�ؼJ�@I��Roz�?�.�]����8\�ɥcN�8�$$ߒbх�n��������m�-}x0��/5)yk�#�JyJ�	����6�m�p��i7�8@#���	L9�G3�?&��n#*v�B����|����Q߿��"��`)�����<�����0��nyHo] B!z�R��CƮM�Qb��b��Q�\��9��Mdav�l��d�_2�4���a�#9@�K#9�_�d>��`5��L3Y��H���)܇J�6�O��1����=k������e8G�nX�C���WQ|�c�W�g�GQ�I	����|}3{�1��B�ۊ�3!�nM��^�O��Cû��+]��VO/]|�vI�����K�zn�CuL�q�����룩���eb%��Pt㡴K˷�"ݩ����L(����:�e)IH���X��#9~3ٷ^QX�B�6T'<9���$7�Dw2U"�6�+��^q���蘫�o�9��ZL��q}p`�X��d�~ح2���G�d61A�X���̀H	���}���������}��կA�!����'��}qn\&���a�"�=W�O��uvhzv~�t��,R}pW�->��w�~,���nqd�������׃��<����󾱸�����4�{RA��1�omUU���s�`�>c#3��#*p��n���r+f����G��5#9wh�]���Qi	)1B#�v��l��I���*U��gbI/��$��C�m ��y���ٺۂ��v�b�;4.��q�E���ˑ8����U^>�ݐT]9w?�[�Q��<y�\��7#*ue~=����]y_t�	GR6�E�JIX{���Ė1�4:���h�a=�J�R���wI�v��#3�x�ll�(��q�a��:��l2A��o������hY���or�b8�'3�s��b_���v;#3v�o���mc#3��P�`�Yrz:�}��a�O�bk�v��#3Ӂ�c#3��՚)��Mꥡ�����2	`D����SI,B1�p��4�X>��BN)�$_�$�x��Ɔ� ���f"�%��^y�ж6��q���nWB����mU��U�e[�R�4xm��io�}�����H�����G�$)ן�;Y;/����ܟ������C�����ʹ�ϫw�������Z,�?�^���Z6pҋY ��m��R���2ԕH846�0�L�a��Z��؁�?����R#3T-����ȽW�?���j���e,i���,_���XA�[;Ά�΍E�J�Y?O�������P�}P�Qj�۳~�@�<N2'��航������T�B$1{���/o{X��I��ӿ����,?�����e�UEb$&�o����:K���F$��#3�B����n�Y���O��k@M�B#9	q�O�*�/mVڶ$ք/eN��7�[��b��	�4XPjlr��R4���{�Q���\>�)���^AQ��#32��d	#3.܍mo�h�#3l[}Sl�r��U�±���L}�M�1�1�!ß��ڈ�}^k#ۧ/p�Bn@r��	�����38����p�!F��c|�&���$�u#9B��i�]�}��m���C�kK&���<�K#9�_�w�d���;��dCYd6	�t��#9��H�K�N�$#3+�Ɖ�KCb�+ö�� �0�UBF#/��L����nO��Ʀ��8(u��]�V��V��0���L�:݇r�R���ky7w�d�#�q�Y��ad$[gB�&���Hܵ���um��^�K��p�'�:�Ԍ��|K�J�[\�87�2pWyCŅ2{V�r�,x=!���L�e�v���d#9ț#�����g 1�h����ށ���xW�����h6�p�}�h����l>��"̦vg��.f�����G�l����ǻ�ϿïbB�B�d#�$B�oz%�����&�n�k+,�{D�R����͹��˛@Ξ��R��=����_P&iW�d'�T`б�0�3X���Q��	���nPj�t!�,�yGP�������H�ov9�v=�np��x_#3�2�qî<�*r�<F�=M�smT|I�Bu����>�MP���x�K��$ܗ���j�@lU�;��ǥ�Ih�&O������MնА��P���la��Hr��1�N�!l��zg�o^ϳn^�8A��s�C����X<X��{0��C��`�*;�xb<7cS�!�|D�=�x̎<R��c]V�өAY�	�7;{w��kO>�BY"ݷ���г�r ^v<�J'N9�yGst�'#*�Sl�*	z�0���F8N���h<6E�gJ����hp��'&0;���L�,��F�M��>�#\����t��p�r2px��ѳO6�s�P)$��S#*�i�K���F��5t��M�]�<�#9i5�s|8�HL=�7r�b��4*H�*����G�b&���+V]TV1�@��hgLm��2�<S���i�.�H��C̢x1<0r9�NoE���hX�M�I$��5��J�(�3׌8躜�Tq�����c-��̸�3&\���f5�fY�$��<P��ճ<�ل�P��;��f(�T������z�k��4�/N����p6�#*B���^R?V\���S��gJgH��v���8��:4��Mkr����A���Yg�ź{�lX��3֨d1�Q �&��p�M�`����\�݀cvp����ii:h�b)G�V�u̔&�į��?aW�`�q4�6�����6I�R#*��L��pһ����AX˸-�#V{߲��kQ�����BŚ��[��sHƶ0>�v�:����c���=l�b*�D��׃��ɧ$�q��SE((����?�!D9ͻ�QV��ey��X#�S� W������r>���zt-%��p��e�r*��ȵ&#3��x��#30[�����Pb���'_�o�׊{0�#8���<y(�#9'�#��!Կ�O.��F�t�;s�	�D�[!����ڍ��\&��q��1ע���*:@�py	f�'6���ݶ,B@"l��ݬslyeˑe���1�;��\���(��BjqQ�E�r��d����Ut���6�"�N�)@SIDV	d!�7o2GyD���hh�(B����l<����D8Fli��Ad�#3��$*⦲Ěk��I��L���c����csC�˸Z24XID�L`lÁ�غ��&���D�p†�v�1w��p������C; ��pl��DzQ�CF`�L�t���z1�jzl#;+R*�GZ�H�F%J�9�� d���	���\�z�>��C�#*R)Rx�Еw��GY��Xx�Nf�.˻$��"Q����pA��PR#T��R�z�Qc�	C��R�L�����m$6�&Ì5��7#3E#�>a�3!�O����уI�#3Ƀ��I�!̴ֵz��(�屼v^КX�N�F�m��%Q.���:3��q�� �5����X���v`C�d	#3��Ƀr��H�AF#9��@�s#3D.�,����C��G����#3��U?��#9~�d�׆s7k�&�YУ������E�L�J[Hm^��R�Wv�#*��� �����\˔��9��Q������E\S�����A�ʗ�M|^�ҭ����^h���#3��"β�����;й���V6���RWϵ묞����j�֞oHcHhbI#*�Hn��4��tv��w��}��&�eY$�R�r܉P@�9c����F��0����R�qAL��&�HD�]��z��|��KaI&)=鵛gԸơ�b��g�e3$�����0��<y���zS��.�s�t��|k�-Ti��0�*_/=�����[�BG��ƌt��3�m��C��X8.�2�#3�N��j��7#{����Tb�R���o��q�V�z���~!���d��		cŲ�׹<��4v���r!�UJJ{�8#9!`ʑ�>^�{גzx.#9뜁H���z����O�e���\�!Ե��������)�_�mg޿7�6֯��6�����ٛ$�:����(;��^C�=��j�PA��m�ċ�:�#9t̘�~޴>i	�)�)df%on�$��-��e*DN����0��T��ǁ&��7�^gƪ�2�#3ky{`0�#9#�ެ�����O�/#*|����9�P�d%LVpcǿ�XI��*(���Wޒ�E�q�#�� b%E�QAiA|vР�oCБ|y�M�u�X+/���;�$#�S��C�-G�!"8�K�~��b	�7����S���<�R�+����=OY	#*�tQ�("6=֯d����dA��j�AJ��`�=Ԇ�#3�0"$ �AMw�#�Qk��wb��Fwj��ߓg"L���6G�r��T"�e"1]�Hԩ���C,�E���3�&��B��H0.�$nh��D[��gy�R�2�=�}6O����'�U˻q�*�'p� �KABd)aA�{�!PQ��p�P@j0@�a,�����&l������V�%�Ju#*�#3%��[(jd�	_�)[�f��p�\�FG~�GX#3��^���ݲQ�¯� ��{�\�C�(�V H$�nx��ް�#9��5������Y��&G���c�G #*�"�",�#3��em|�Z���+j�*�m�#9ҭ��֫��d�؁b*,V ���.����_Y��m3�"���X@pϢj��%q�A��������x�V�e�a�2�3� ���	�I���r�H��h�?̣�X16ײ"�ױR�L[��o����7��k�(�ݠ����-���ͼ\�1nq���VR�i9/kt��<�I�^�V�	 M#9��1ڂњ��/�M�hd�m�W���m�L�ɒ#3?�R�#*�#3�^��#9��hx�aО�/��O��������6ӄ�$(i.�����gq���;G���1c-���=�g�n��I��[��|����l�����n[�'[����!TI	��"̵M>�z�47����]�� �3[�j���k}:�X���$Bi����ΓJ���#���1-܂���_����S�Q?�z\;����0�\Z,��CǕs�(l�d�Ra�����VFѢ%*KM��"pt0SK#9K���\�S#*Gr!�k��/@b�Kѻ(�������ʸ���o������o#3"Bo��#3m֞���������ڐ��U���|�Ip<�k;x�HK==��?Xj��@@#@B@�|CǃߧG����߲�i�䴮M[q����_͇�m�ix΄���G���Ҭ�F#3����İ����h;#�w��S|�z�׉�4�=��!	U*��������tMPJ;v����[.ǗT>����| (#3� |�":�3p� 1"+��X���+�);cL����#9��ץ���^�%�d�&JS�a�4C����J�A�ϋ_�*���#9c2F�dU�T4���yo�wM��_F%S�Q)�@��[	'H 㟒)�*J��	���@�'ڌF��E���ɶ�l�6jƒl�J���ͥZ�ҩ-$���+YQJfUi��լk2BE�9������?�V��}y����bE�#*`�� #*s��� �521(H$.�_�m�vϙ�*�>�ɋ�+w`E���@�����늣�D�,��跤�#�#*���;�#*�E1�%`��e;�XO�'��L��!���ВE`Bg�6����ǂ�!�t�l`6�4<��%�Ű`!3i���BY	��Zf�hi��O\����&ڒ���2�m��l�@:�T�@�#*7#*A����e@�<�� �|a+`�n��X�#�,D�+���(��Q�,��D�]N���H���g�Gd��%J��u�Ƙ2��@�!��K�Ʃ#*��ml�Rm4����\�(��V�m�nj�L�)P�[3��-��c��E�}�����w��W�}=��7.�4H*����9��� j#�}v�__1���q����()����F\"o��Y�'��	�z=�#*��H#� �����T���������������-��*'�	"��9q���	#*,w���/#9#3��Vn�%�Q�w4E[I�҄`ϩ��*!#*��UL4>Ý�q��<<;��M�n�T����]CCt��E[�1������>���nf�� _���b��so�������C��̠��f��qWp4r���!h��:�+É����U�hE�����4�P�#�\���ooNg��EQ4�k��:A���C�PC�l�Bj�6���Q�r�d#9d��*[_�0��GI�5�6D#9�#9R�&I�.��??.��bw�g���� ����(��#*�Ri:��>f�VΗ�΃(a4Bث+��ys=D6���!y=�룘w/�9j��}�<��>���A�U�%N�y�5ֺ5|~̦AUBMRm���#9B��Ѓ�?W��<�Q(h�~�Ů~U��<�59�P~}%��]\�w�G�~�S�����r�\dI�|qx��0@�s�l@�E-�l.�D�	L�8���}�„.R�g�AcYm���3c*�M\1���4�eP�W8t9��p�q����gi�=9��c���EX��dGi6�cʺ������)3a@�d>"H�� "#*���X��=��E��~�]4�Jk��r��w��M� ��࿇��+ߕ��nr��q;%#*�ʣ��x����Ⱦ`UJ%R#9��F9��kDp�`'�(�����;7��;}\�s�5�Pg�F!� K���Rz$D��cm��M߻՘f]���֬z�%�s��	e#9(�}���% n(��Y��;��˘>�i�#*"u��g�"A	 ,�G���FɏJ�,���K)���r�K<q���/����r(ݗ����� �|���D���;+�x#%KM���.L>w��/�[�8��cs(�*����	·�wY�����4>m�i����&�����o����q�sz�G���Kn:v�˧�c���p�qF;j�t,��F�Cn��P�(��}��H�'mO9�:m��G+�6#3ץ�^��댩7<� z �A�-���nu��&�ڃM�� 2�d|6�w�f�#3ߥ��w3�S��(�ջ(R�n����Z��-F�� �G�F�q���{xb�jn�Q^��Va�L��{������y��,�2��2c@��#3���	׷������s������!�9g���w�1����(R~���n�Ѷ5v�T�z���ݫN��YR��������O0�K�.Vr�sD!� �#P�r�<Y,���l�����^���|�ٳ�P������l��ff�V��o�Ԓ-aLeP�Q%���[��	�APbAD7�d�#*����C�j���i��VeP�t5�un�6���=��͉bN#*�5I��xn^L��>Ikg�,w��gV#*ᥳƲ:$�]��6��	��㪁�����GC�q$��&�%:�"�T�b�0�vvxϫ��"g_��Mh�Yw^+"0F;4�Y,�n�Omc���ǡ�EJ=|7�Ȃ!�	�HOS$��Ξ��?G��n�cn��SQ1�0U�t=�2X9M���v��$'E���:x��3n�ĻaG9��<r@AADmI��`��!I󈽟���؊�J,��r���!֦�t�Գh�^>���5ԑ'"wۥ��GO���T�`�%wf�}�eV.,	��t2�{6��ȍ��z�=��p$��d�f�lNA��Bt��+W��-�’�����˪1D���.�s�43d��\�G]]M��rh��,��ԌR5	V*�#9�(�X���"!%CK���X�"8\��2Ƥݴd,�i1X�a�2@�3rH�ئa5�Qmi�_7�5��pA�ȣ{#9l�Ԙҳ���Sk��G��xf?>��z�[�)�{��5�֑e#*���(H��0��E���������!@BHA��� ;��.C�g���{�� ���Uwl)i�AaL�vV ��3��%�6vՠ���S�P��#9g|uYV�}J)���F�n����IEݗ#3Sh���L���+f@ePOL8#Q-��{@��S���΍ǖ��A�R�	���q�#3�:"�!�Ա�YTA`h�r#9"�D�R��@�i��K�R@(4��,)R��7i9�~S4�l`�a�P#3�3n�N�``q�P�@�̌FD$�j���F���=�/uŊ�e$v!�����wT}�{1������&��wj&�7=��ܹ��u�k��`caF��;1P�D�E7?����b�W�m)c[bf�UT�����& ��(2$$=Y�#9븸��O��&_'�"�+j^��2X|�N����60���n��'z0<GD����b�}'��W����D���g�՛�`)"h�f��H��BHa��~f���@���"�S�}]��<��^�:�Ä��oE�t�[s�S(mb�A�G�"Eg�����?���ӈ�}_J\tH@f#3i�^��%�OY#9�E��c�o�s�#3����h#3�!]��DQ�>	�3�g׋��p�.;�I�(D��������\uӳ�+���B#3��|�]˜#�ҐS}I��q!$ދ�����F1?^����?�]p�Yԡ�����*�m������\�KGr�AjNP8��d#3�wE#*�sO#3p�O!�j g#*������b:D�JnA�,M�I�(��rK5P��B�o%��JN��R1F@�$�K dN/�s{��_�>4E[9�U�h�oz�	�.#9���4!(�.�Ef*���`����7�cq�$C�H�d($l�\C#3#3v�B��QB��A��enQla���l���&匐���d���h!���F�,�#*���$PchF���r����j0��b���^�F��ᝆ��ݻ����O��T��"�S��ңJ!,x�����'�>f�ʅ#3Bm��%D��Xx����X�d�@��	D�n��o�^p�o���v�,�"�2|6������w��s?�E�d,��}�G�4� ~I8���Z������?9k�$,���ϳ����_w���kf�vm6�6u�gLx�;|3X���1+3A��7j`~��y����8Љ��lQ@��DF�|=���	�-@0CPz�N���a���֠�]!��R��oN�9��h�#*{:f�J��IdNM.*�(���Ec���A'ș(�&K)�`��6>���aETq����� �$�!�uAr@�Il��L%4���gk��{]׉�u7�@f����[H���0�ڷZ��j�*��"K_Ƶt�BbN~��E ��@Ʃ?��˶�d0Sd�D6�RD�!��u����U4���	<#3M���,V�^"�"���s�F��B~(�E�\`<9��S��HJX�H΄�m����FD���Ǹ����j(v��(b�����l�!I�yT�W�*�А�5�$��N��:BX�n�[Gj��v���R#A�Ɔ���-�n��_8d�A��m�Yϧ9,��$���&ј�\�#9�m#9���xa���]@x�D�Ε_��BϢ��ҽ2��,��������� �\�͒�TRk�����<�Ac&����Y�#9b�0�G�}C��#36)��͘�z�̍b�i�9k����g������]5�k�yE�!G��)Pf��R��H��Κ0hf��U�h?��o�[�]i�y潥5ck*6J�P�Ƶ�R�#9돢�,���M#�3g46p"�#9f5�0��c�U{NX��E�B��l6jV�@C#9��QV�#��w�����#��F��+|�o2|�w�LG�=��z�F�mP�\aa�Wsj.H޽.��Q��#��T<:��U�:�}e�����$%N��G9��������M��(MӾ�Om-Z��tB�]�#3�ڃa�$�*��L�ho�H��9k�x�\U7ї%e(�W��;[dv�d�u��,!�*�&�#3�Y8	&�6F�Mr���Y��e0�% mZ6#32�#9!�&��,5�022l�9t��#���z�fpq��-�)��]���d�'�5*)Pv�-�"����J�-#3���#3� ����]�#9��d3+�B6����]���1�yWR��x���n�rx��V�c��#9�z��E/z#l�oOP@.Su9r�ia���:2�2N�<KN#�xS�'8B�*�%��h%mK�#3�,�=��tL��ͤ6�#3H�X@�U�O�"D����0�k�1�=��PZ"�E]�BE\x�!���v�P��r�x�bl�Vd_�(t␛M�ij1(�GP^FÚW�]�ʃ����wX�<C�t���z�dMr��f]� D)����#3�}��Oc�X)v�Q5Ġb�H��k�>-4+.b�$��n1>�k4�8#3�rϗ�O��f:T<a���ގm�z���ږ0���3-]b #5Hn��>#3��˔r"��i`�#zO�����|PC�C�S����ng7�l~�u��}��N����^�=,�� �@`dM�">a9���mh�S��	(��&�1'<�4�ϗ����Q���fXD��15B�Ǝ�$�b�hC@���B�A�e�̸������)�� J&xsM�Μ(#3BP�X�F� 1"!bo"a0��^���%���r.9�H{<2M�c��T�<Q�?��#9��b��^��������DMs�x㰄�M&��O����Ζ��Yq��h�]�@�x�8�9���TF/�p8�a7�EǂO�*�4��ω��U6�����ɡ��0d�\Q!$E�t��ujn��?'o/����$�MF$�S6�}k����A`mF����ksm%*�ŭ�mm�m�[����մY��W5&�t�Z��Db����5�9q:H�_��rȢ�����_3���JYB#**�O��;Op�m���v`�}e�<�b#9�hDFY�%2�S4ɟ���J4���f*J�Ԙ�%������L��SDL(���+s_��&��Y&�L���b�Ĕ��m d�$E"���KK��#i,�f���0ɵ0�4j-*(�E3)�Q�(�%i�[!2�I��MAJT��4�i�I�4��&�%��>5�.�k�t�o&�+��Ph����#ʸYZ���*_[�����Џ��k�M�n�#9z��%���0ң�,`0vn$��	a���plY��&��Y����.r��9#���m��]��D����G��~�ĭ�`;�8Q.Xހx��Y#3#*��[�h�d<�&�>8E�^���4�]"�u�pߊ/A�P|�sn��H�e7�O]Q�����&X��������,.�q����a�L�•!5�-��׵������W�c$ъ��F�RH�Y�R�Tb6c-2����on͵�>��#3��o*ŀ���#*�&iO��Y�<�ʩ���=z0�i�;D$}L��#3����'�G�%�w���|Ā����}M\M#*'���؟<�G�J7�M�OHƢo�=R=K8>pځ̬�gu��P���haz�݂�%���D��j�������A���Y�#9´�"	D�#"H\(1z��������N�2�ھ�*��+�����"�$�{�n�I*"g��SqO���b�xq� F�����D�X�4b-i{ �tI-�ۅi���q����Bi҉]�+�{�1�5k��.R�]i����e��Pӊ#9�+G0��'�ɇ5�7��e�$�Ա�U�k|�kPK����溓k���sID��V�C)�:(�Q��������5�.�l�6��� ���"�=K�{�v�-�$H��1�䙚��&�B#*��u���e��~��fj<[T�wC�)14O1��W;�ͅ������'=u�q��j��9Ea��$��x^vpf3.4�E7{D�;P<���Q>�|����E��G!��#*2T#*������L �^��u�X����K�������v��!RB/�6��I�!��GP;+��<�41uA�[��gU�~a�+Ox�b6%	܏t�<��F����6V�_���s�^�d����#�	PS�ڡliWh�>�s;�Ǹ�����#3�ͳ�6�����<@�^(�*�����,��T̉�Lԛ����dyL��Q�\D��4WC��D`j��J������ �j�o�<#3�#*6l�d�*��Ua��r@���mJn�m�'���5��#38�H��f[ɭ$$�JP���p�'a�jN![�2$���3%�'�:N��'�n�&s��#3Rd��i���3��t,�3�|=5UjJKa!����"���u�f�fas��Zч1��%����d�!�R�R��3�'����_H�����12���w^��M��æ�5ݤ�c\��^Jrf<�;f�H��^k*���	��YJP4$��OU�F�bv��(Ⱥki����[�{P#��N���/h�r�]�u��a��}�m��M{5��ē�V#���z7�~U9��栙�_A�:��#*�2��M�'G� L`�x�L�YӺ؍H���M����9�e'Kp<-���A[}�u1�v�#9��4vL]e�S�4`�i��w|A��:�8+�4�(��w)�SX�0:a�(���i�̴��9�d�N�j�REITi�Eû�c_V{��Oh�M���Y�Ӄ��=5�c�#�0r��OKl�=��E��q����;�5^D X��}�4eEK��؉�F�҃@���Tñ߈/�(o�^��#3x>�^��w%�xo6���a	7Q��f���mA�n�S$1's�cQ��6l��zȱE-b��frkY�8ה�S:w�;B��ڌ�d�Τ�Unނ�%�#|O�m�G�J�T.��6�巇�.-B~��t��%&,w�m#��j�;�PFvcK.8$�F�1���ۘ����O#9�\�ڛ�hIBgdw�r����=]��^�*�ɒ�&�1��w����#9/�Lm5�j��L�i��gV4BG[�:�ewZ�MQ�f͓�CSD��Ћ�#3�ٱ�bB�2�kfb�����f.YcD����I��4�u*��,X@8jSmb��#9e�7�4V���WnusG�C�*�/Q���pf�"����uF��FD$$�L�&X|Af��W��=�Nq��~��^ȋ'C��̕�<��WΨ��~�I�:��a���5f��f�z�)�J��)��\x�3�.��;[4U��:�[��i��a��fD"�a�:��0�:oNKC���Sd[]��6s#*L�$��:�Z/�ѳ��U���Vv��:��nЄ�1�f��u٭D�c��XK��h����7��K�xH�6:�b	`�U�>G0�<�M��xޝ����ma`�-4C#3z1ss�u�����P+�Ɣ�H.1q!�1����UT"YF%3����I��L�`Z����G�a#*���'m�kb���8�p92���#*���� ���cj8�&��7��#3`>)xݤ&�.�>̖aoh�.�3Q���͖#3�7�p��}����Ջyy�Y{���l�TvYǢ֘ƹNqm>;����Y���n�j��ή��!Ņ��;�Eڜ;|>�oY[��&&�fP�d�x�6�1o	��Mr��`;9�a<����k(�p�G�Sb��&��|�7]��ͷ���k4Q�[�C�%��ޠu��n^|~9��ȍGI���nOU3/��$�v��)6XH<����R2�*#3箟tK�2�Fe�$�������,�m��"�4H�>��f����cn��e�2�a�4�8d�G�N7xš�#���i��$�#3���FǜL�%���+��8Y��Ǒ�]ne1�d��N�.k�fλ��fH�奍ͿJ���:�6����We$>�u�8Y�U��&�d��G������=���M�Q\@媫�0���c��V�Ra�騒�(���4�v=��7�"aN�(�J0�fD��� {yͩzX*mBp�"�8i�($��NV�3L##*�q�F��Xrm\1�&��ԯ�EKӦtWC*��(�T���Xk���a��p��6�a��b�]�ն�*���<�&A���Ki����M���x�"��`T�m)L;�ڎ�؛fG�h�P�hM�RA��ëӃ";f��m�K��0�v=Iۃ�T.��A�E� j0��Ґ#9*R��@�|3+�R���!���Asɲ�v}�D���� �`�2I�O�p��<��6Y#���,Zd����uH�q#3�9��O|[�b�h�s��H��lLb���0�i0�bg5��	w�t��V��=d9�$���^��3O@���ɻ85dц�kfa0�A�&��)��((�3&��gJ*jV�S-���I���09�Zb��)!�t���KH��#3��J�=Y(00u�9�W�8�#3Yl\�D#9L������Si*s@��p��7#9�����p�)R�f��E(�+��z;)�6ʹt`��N�L���c(3����3љr��C�(*"!������#�҃��5�]�N��0�6L>�8�O���#��:nu�P�F��j��fcNn'��[!͎	�@:�б�!�Ũ m����h����2�Fv��b���j`ӗ�U�#3��ߊ~�@4Lb�Ő��]"�����.�kz�-8;Ö���QA�t�z殉#9��í/�V@��ѕ���c�w�w�c�y[�e���P��M��S���Gi�3P�4�p"������a�Na��!�]HSo*5B�E#324I4���(��1�H�#33�`��$���-�,i�XlkF��͢gw'�\$�]�����#�$�#�jH�cf�������-�*�XŬ����;@��D4��#9PB��`qԔW:�t��X��gű26�D���!.���4��ˆl6Y��r�iS�L�������a6���4da��3!���vf�	b��#3V9�b���P�(�7b$c��d����f����2�������N�Ln:q�-#�ɕ�E6!`h���F8m���\L4�cwHsC9�8�q�I�x�6a4�Ttf!�bp%s3T2Kߪ�Ť�Рp81�MT2,�i�4�.f:��2�j:.�܄��ظ20�C9,i�a�#*��KRX`���m6RC,1�[sFY͆��q$�H�s[��0��ܹ�WY���*�R�Lѓ5f��U�T��P��#9�H� �m�f�@؀q`�#3*o�0D3,n�D~)B##*A������&���r�( ���y���뼫�X��%��":�����A��gX�0����S	��W���$� #3�Z�[�h�x�[��m����@G����4�@��IH;�i��l����M��ZO>��?w�}ލ�ه<�bjvD*�1�?�S�H�w�Y�zmp�R6ԏ̫ܳ��k�����kF�vu�QE�v��\��\8�V]"9y������J�e�PTŔqk�/d5n�eT��ң��ܖ��7�n�20��u8%��e�xn�`����{@�۳#*E��P#9d;Nh�:���,�1@��$#��þ�!V�ӍJJ�e[�"d# ��9��CB�C#z P���	Ce@�L,`���c����3a�l4y.�HQU� V���1�ץ$#3�6�U�w��W� ���V�γw�`��W�����H0�¡�`�AU@S��2���F��W�ך%���0�GC#3�~&����"�C�z���a��v�1�J`p^���J/�`���~é�����P���E�Ž���|#9~�?D���{t37/��%���L������h��a�s~���=��W��n��s�&���{�F^d��OF�T*�����-y.U���w�c[qW���-�t�GJ&Q���0s6�B�i(�m�D��G��͘�Qv��Αs.�2�d���|��8���D�j4x��CJf���CP�=�쟏�$�	R���M)(,U�|��_���*�-V�Be$���ţi#3mh��"��������"�	""���=���'�.{�)��#3#�����B)n�:7�y.Bd/"�x��jxAi��S�	�Th�2�?,]��ָ�FDCT�d�5J��#*ݩ4�9کKb�"riK9��2�o�`�=���v�e�N���8*��ǜ�����K�<L3��Pu'TŇa�-,lW���,��I=h)��z�b�	�l�8��#9�0����4B�Ɋ�p��R���8��I�e`���O߶�/M�rۥW��Խ-zi�V"�ų)K"4�X&�#9���Ō���q�����+�P��9���ih����M'�M���ոl�W�ϯ��㉑ӻ��eK��!�N��4 j�b���c&�Uc)\��8��:hw`�t�PrC9{�)s#9ɨB��I��D��;tCR�.^��!�Q��5#*a#9^p�0H�a4�1#*$A�	�$V�-�-�������Fm��X�~���9��;�����H�bKƮ�[����^V췌[xl���K�2[Yj�a#9@�U~VtU�b�P4<Pɯ� �ۏ��;�d\�r �ҙG�b��膵K0ʱ���f*4~�:Aha�V:�����V����m���\|��o]�g�R�f;b����`����4�{@�rD�-W����D�����ފ#3�P��C��م����B�4CT��_Ӹ<��:Ψ�W��fu�S1���)���X�t|�Ǯ08ю�f�ocsv�ְ2A�Zg0��(�~V[�}���eh�����N��l��I1��ؒݜ}=��� �9E$n#��(,v��J�H2c]M�&$2��(�;;��Z	��J�ypY�.ݘk��#3�tG4���q���{!S��)q�v��#3�x�g��F��l:�t�˜�,��B�^7n�l2�	E��	(#9A`#3�i�2D͍2��a��C3#*�.ຨ�2! *���	����m�~�f��Q��#9��h�P(�b<�����=����H#9�6dϵ\��R(�=�����Pa�>�@�H�oT���԰�k�;Zڒ��C��7D��(h��WY���& "2�x���/���]�����.:Y��kƾ��QmE���MZ�Q��Z�j��jZj,��G�mr��A�7�H��z��8�����Fo�s���r/�R���r>�sN���/�#9]i�oY_�KqhWF���IQ�����/	$�或��k�Ƴ���UNCQ��s0鴥�[�'̧�����i6P�AZ�*A�%�.��Uu�*�f��a�ތ��.2��3��p�ĜdB9>�X�<�ɜd�r9��k���G�ѝf-� ���f3���m���M9�L�N�tD��t8��8�k�T8&	v\4�Kt�m�528�S��i�S��k��&'��m)�7\�t��Kx�M�G�(�3�����.^'�.���ۙ"ӻ#f�*�}�Hy��Na���f�]%Э�ɴ��ѨZz[�NM�yC;�d�N5���j�|A����3>a�"Bt�WO���X�E#3mC�`��q�����f�r	�`͂$"0�aĝ�c�l�JPE�P��b,#*�Qi���~t�#*Xⲑ����T��XȪRR��)p�0u@hX2�����6�(1$�4�I$Y�@�X.�#9T�GwH�����"��7B%a).��G8,hX9�"�b�cY*#QIZٯ�s���h�v�ͺ���6f���:V�e���n(BYGm�/X��,�r��]m�\9Lj��FD�bC���[u+pخ�FѠ�eNp�ɴ����D B�b��⶯)[2ԒR��m��6�e�S6�m�me�Mie��V�Y��ܯ��X�d���b��6��TZ�%ET#3-�\���f�#*4Q쎗6[	��;(u@Q�K�� �ʂ?8�����ى0h�B�'l#��O�aTB��`T��G��(ca�|,�1:FC�#3?c	KC�рB�f�>&߳4���P�X1�m�_F~8�?-/Ϋ���Q�s#3`��;�z�奍���b��	I#3���&d��c6�M�'�O#�tn��ԛLP!���e@�`� �R-I#**e"6AH�6�S�#9�ɔ0`P����oh���{�_-L6�!e��ؼ�}Xl�,�S�@ᾖ�p-�"n�om.%�#*��@���*�ԩ��| w"@�?,�j$���׎�o�w��^;������|#9� 	#3�2�Ɔ�Ǘ�p�t?�:�� OEo\0���z)�@��K�7G��+�^&�x�Ln�#9Ѧ�:`+�a�IW��!T}n��$���g��b����0����l�N_#6[�$�,U�s.�(D�760gM�����/��@V��D�Ѿ�?8��6���UY��T��ȟ�|��l!]G����$��c��,�d�˕�$_�#9�hQ���L���b����IY~�^�[�N�Z*�w�>y��I��D�K۵�DL�o�mR��Ԗ�WdƩyJ�ɦ�إ-��FƤS)f���d�i�Y�)K}k�)d���ݛ�n�M�(��6�6��Z�'�(��jWu�j�{N�5{���SA�S*��-JkRU@jhƓ*���]m�Ư~�k�]U^6�Z�H�am5����M�I�fɩ[2��W�*&�i��a��T[-��zv��R�1�D���g���w$�Z�;&�̳]Y�J�]e��,�%�[\H�xMv1j[m,9p�1ǜ�1k�r=7����X�<9� ��,#�A���|���q:�p�U*��^Ќ�\^E�I4NN�>�0\Dl�2/�����>s(ک�ŴaU�������ň��RL��kQ�#*,@���wLԴ�XM5�m��F#*!B{t�,ޱ�Hv2N�Y�lҶ�Uk������Y��v�Z����k�h(���TY�k�*%����P �M�vni2R*; ��{6��d��f��R�3��U�BQ�I����M�L�ɭ��ѥJm��CI����щFQ��$(��m���-%M#33̦(,F2�QM��$�F��IZ4X�b�J���M�)L�5���J�2Y#jQ#3��ͦd(II�&Ra4�4�RʳlcTIVD�����Rd�f�ieX�%�JRk)��m�&�j�kk��ҳV�I�����	mk�͕ZX�ڲmm�U�����j�����*�5�(��V�UiZҥUoh�#*N���*;�5���OHsv���~O3��xq�JC"���A؝l+NZ�=64�6c�b���0{$���?ъ��Q5.�C�"�a#*�D�Ľ;����y�Rhy�OG�R<�r7��uKTI}�q��N�U��D��{��#�=p�Ş�ph]�+�xwc]:���k(&c�][M�&JQ�IC��EJWi�u^���^��+?��j�ߥ�c���(t)�#3�`E���X!!�!�p)��kHƘ���a0JSu��>���R��W�w���#*T�M	p~?� ��6냅Sjn��� '`�#3~�<���} ��g���&�u4��FL���'��#9$S1<�(����};5njo#�u.�J��ؘ��/0�`�;A&�#3ԝ�D>�d��E�7��6*��7P -ߨ��3�ۿ�Ȅ���T� ���P�U.FƩ�)i�&�+!_c��=NC|��$����M*�f>wliI�� �tg)��s1{�V�#�Q�FO��a�b�x��f���XP�e��`��#3J/jPtR6W�0�Ų���������i�F��#*�.�#*�M�5T`�|Ү��=Nέ�Z��#ȳ�-�=l	 AdA����K��5�����J+����z���=hi	"d�^!�&yL2�c�V�N���	��%�>��L��s��YT�b��76٬��x�^BBa'�:�ځ#*Cװ9M}/�r�8�z��y����o;4���u#3����9x#*j��3�x��4���H~�����E�*堳�@�,PP��Yf-�a�����,`0i�TPț)2~�����MWZ���H��ʠ�kKMkM��F�hX=�3S�����#3#3�6C�=�,kCh��6�	ʹs�bkX�c�*����e�)զP��l�E͉�D6'�hn��ɜՈ慊��T1��*�ȣ]�I&#9��$�eѕL�Hk�Ht_��l�BaTv#*,����]R沏B H�#9��Ź��N�5�,�f��ހ����A��bV�eMTLX�BU��g�r>p|'DZD��=p�*W����'A�cs�a�BHV2#�hfo���=�����w��K�KYK�h-�"��Jp���m��}C��+h����,D�����p"��;g ����'������/,�Y�!i1����Է�h`��/�W��w}U�%O	'kY��ik��qɹ$hXK�8B��J�M#3��Q����M)#9M�2�,���Y0n�����P!+]�7��[�e��s�����=+Od<P=��'o��lOn��ƀڜ����O���~Z�Ѡl��2�H����QW#��B�jWϣh��ߴ`a�7҅�D�+h�#3,X�T�\�`^�_��5��J���R&.R�CLB4��Lb	 4Ԥ��=���`�lnq"��@�0�:b�p�[�\u�z�0�e�d1�iB�h�)��MW"���y����m��='��\����5$&Jq%��j#���Z�+%��i7��tQ�|UA���w�ʅKՔ �	��W��N[mnƯ� P��dP�z��V)�Q48:LQ4�k@eIh(D�bB��ϧ�v���;����{�����gQp����G�c�8yP:Cć�!�L������z,�n��X���������b�};�Ʋ%����&#3�M��f���!����P;�������J��U���.���9L�Zr큞�k�u/|�.D�P�bK�!���1�;�(��%V"������^��<ONӆwu��ٞJ�Ɲ�t&nyр����0R'h5@�Q@�#��D��?�{e���O'LeH�,L�)#9���Nn�[K�V������8m�3"AR� >���A�T��`$"Ƞ� c�g��yq$P�#*�P7'#y@"l�R!94�<B"S$�A��cKyl��vr[0�*l][H�;���ʘ�3	T�^p�߻Γ4��NEb˪`��.�������t��Ԟ�;�L�|'A3��W2�O^���(("��J�>,ݙcg#9*]��ͮa�������,��7�#�q�krY��<�A�xy���X�i� ID�A�g#3kᅱ:�צF��Ԛ# �F�I�Z�#x�e�^�# ��!*������o�-F4̊���[㎛8/��z�(���o���g���B}��(t��Ʋ6�Ex�`drp��]���,'ǭ?���5T���՟X�P$o|��y�ב����Sp(��ZkvR��nB�M��<�@�HF@	��2��-~����k *���#9�0�?<J�U	�����lY��a�/#*�)#9�0geT�(� �u���˗x�K6��L��bH�z�oZ׭]d�#7Z�i]U�Z�ŬZ��S�����Yx�wn)	mˑ��ʚ�hj�D�)H� #3&�mת��y�Nc�#*��œ|v�C~�T�����#����E�|�55���9ӱ�*�k��O��w5�DbNv|:�e_�J���k�C(��*Å&�CLS���J5dګ#0��� `�֩��l6[o�׺��-�J#3�k�T٧gi���t\���bK#Qj-F��5\ƍbJ��MW�J*�f�^�k^76�Ϳ��N񪒵eS#*��	B1��4��b�O��5��Q&��|��҅�O�4����p*��ȭ��i�D#*�D�M�n`��/��HD���d���{��+A�dh�`��x�/9�$���A*I�Ca�0ŋC�����dev�l#*�'ÂK`�7���I񒊎��r���9Cd!Y"6�Am���ʩTe��ʂ�WK$���3#9eɋ"�����;�4d;H�#3T@���6�m�֍fc,��*H�(#*#9AMC�|�!���5�a`�ٝt4ŐЎ���]rJ�K�G�DB��҄������c���t����'NZ ��PVA�C����"#9�1�Vt1����9���P�D=~?�a�+�Q�u	!�.����3v?�%�`�T@R��7���5h8�X>6����J�j�F�t��@7	��GA�n���L�d7�_3~�+Vv��'۬υ}��z#��?;^A($k(�#�	�f!���~Ƅ�_���3�{��#9��g7����z�#9i=�n���r-#9��ϋ9Aר��Ө@a$AL�@�c2����p@ 'd�?0�P�N�p:q�5E6 �s����HE���p!����!�"��H��qRU)QDJ"���P �h�@�Axb�PLJ�#"�Y«*Rz�6B�����f1��� ����	��4+�K]#9�3�_��u9��4�}�>���P�=;U��O�y���Ԟ䣨9<M�gc�"�äz$�$@�%	#*�~%���}̖�-%"�iyHt�{Z��>{%�)�a2�_*~{�/�T1��h�	��&h���h���P������&Q@[x�׀����rdP�hf��|��%6��NYxe����d��D�"v�B1�X��H.���K���mW�t�0���~�E��"����"�v���Y�(�����H,TU#9��5����-4:�f�(�6�b�݄ƍ,e����@�2#9<���x��K#3�c#*���Pu�cIgL���ku%�op�Ux���"�(��k�8cg$���!��L�#92dY�L�[\K�0#H��`a$w��&`QMJ�Dl�F"ڬ�Th�i������Z0cR5	���ƺ��꠶#*F�B�.j��\�m�ƴR3����l�E�h0�#"�f�3�Izj��sV-�c^��dڼh��B+�23���=�!`�3����4f�--`�R�d��.�;����0��"�U�taZ5�:��X��U��]d��Gl�nx"1^N�ۖ�ʹm+�4j+Erܾ#3�yܓ=u�^7�x�����[5�-�C�.����Ap�jӴKƉ�Di:3���a�XH�|8�#3j�Ǝ���B�ԛ:��Ѫ��.�H�2� @p����r�3���єȼu7�#9��,dt�ќV�q������(h���=E0N�����Hm-�I�0!sDڞ�N�.��=*�?q�Ț�J�o�]�]yF#3H�Ɔp�O���R��1Ҳ���ۉ˗������:#*�t( u�Ъ	�#3���~0h��I�S�܅�Fe�U��VV����#9�N��n^��W-y.m53I5&�弚M�TcJ�2\�I��,V(�[I���c[j�Wr[d�#��Q�0��Gdn�$��F�i-��l���ך�����0)̰�Ԁ"��#*��*�?��x�����.����,̼?'���+Op�Qc/��h�!��ت�P�QBQ�����Z`��(@UH����T�������6���VO��{�W>���$#*I��؅��GUL���C��ЩKe��Rn�iT�[��kκ�Rʂۻ�5�V�m�嗧DQl��J�Q�X�������L�D�/CLR�55���W�o[��,Ĥ����DF�D�BʛASQ; ��G�1Ez�#Ν��c���bM�Q��I�W���0�b�"0�+�,ITR�G�4#*���� e�`�ɖ@2��9$����F2UW�Ÿ��#9lO�FDX$�51�Ju#9R��ސ3#3���e���zÒؤ�a=��#*��\q읳ʫ������8�v�{6��>�,@�Ԫ��@�,�}64��9��y<�$�!�y��bt<>�L��Y\u*l�ד����NW �,#3�m�v���b�EJ@���ip�z8�&W����u�%`�{�R�l㷂.�<Qb��V��W�[x�����HҖ��m�G��+Z@�ŤЁK"D$}�7\��Mu�RE$&�H����h/��x�����a�b���r��"@B��0�Пg̼"��G	�#3*���/�١�Ɓ��z��YZ2WI?zGӈ}�Aۤ�ͦ*�t(�w�i�ݵ��G��ܕ�n��U�0�H8T�|! �;fd���W	"D`�����.ن�CF�K���CLGr`����>�@��� (�m�J��b9#*?�r�#*8|���=)$ �#9��E�&�<�b�7��h�{�Q�-o_zde����҅��j9D�#3z��\��X���Jr��n�aj-4I`fO�����ˁ�Y��Q��Y�#*Σ���g4�~�#9(jcx,����T�쵥QQ���l�X���gN�ž����0�LO�+�F�4��L	��#	J6�HJK�3�b�*�	!?���_�s+遨��Q��n"0��X:��(;l�����@,�ع�C;/�fJIa�:�^Q�/�U[���]Ϡ�[5���x�u��OH�z�re��S%?��<Mm76�uy���_�JRZ#3��"��m�!#*֓F��f��jmYjMCQ-FF2��r� �h�S%5,�w*���4��I�Eb���J�R���Z�M�����I��eJ�Ҵ���١-���6*j�e�j�MR���6�#3���U6V��_���Vߵ�"?�h���8��ؐ��D0������D -E�TAh��P�����W6ݔ�#3^aQ�o��oY�jS|��KO�����;���)�#3����BA��).���-{}�m���ޔ�[��k�`�w�L���(�Y#N8�I���O����0�̏נ�I�D"<��I��d�˙�j��#94� ��=)��A9D	(��#*=��CC؝�O���'�i��9�@,E��#*�P*x� �{R�"��*{ʼ�ox��q�#*80c�ݦzq�xp�Yq����H]^GIjG�ӿʦTm�#3�C4#3�^��M�C� �d���>M��r�r≀��a`h]B�"j|�oW�"�'p4��y2A�@� ǰh���j��i�s���>�?A���CG��#*  ��匠��7/�,��Ίc��pq��K���5O�stWJEk�Ei$4��$p��I���;�9ʢ�,�X�K�O�.}�6�y��FϞ���2DE4ڽ����f�@�Z�TÏ�)�I�t)�yC�e�	��'s��>0�#*N�+�kPyq�q�����Ũ�V4�M�E$Z�Ylk��aB�����7o���O6�#*��sY{�;w���&⩝Yć6��a�)U����˼��&���.��4�@����M=F{7���Nt�E�X�!V #'�Q��(��c8�����N�Y�&I��bi]�����;�������,����-|:�nW\�i�;A�$m�&����IJB#3���X11� F����!d\UU)�	&�#*`�(^���hB�Q�`�է���u=R�5�&?B�Be�&	�Ҫ(�A#3��$�D�1JO��vGS�cG24H�1C슺`�H�>>h/:�E#�<eG��s��s�2���.D�s�&Λ��Ck�+i!6��)�#9L��S�*I�:�ZAx�%�T����`�n3��� ���2N����:#9S&<B#B/6�F�t�]^]ڔ�6���SA��`����O$E�r]�z}�虪:�w��!�_2�'��aꪡb��Qb hU#k<&��G��Cڟ�1ܫ��Q��퉮"��B�y�	�揽#*|���k�w�A�7ad����pf@r�gO-���Ed�*��7����g�����yb|HsUBtv����t�yw�梭�����[ޅ.x�7�)����<���t�g���ҫFpj����,�ָ���U#9A@eA��D�.�bo���#�]�̚�"`�ѱ���`�DqM7FI$�Z��)���CǨ9�c��@�ό\���!_L�F��d_T5����8Ѣ7���һ�R��P	p���Oh�X�z��"|�T���]0:s~�������;k��^�rk#3�_'�N!��Lσ��Yv�� �[N�1C�j�.,z##F��`�R�H� �ߢ�ş���DƆ��^'𢵍��a�kI����ÔA�$��0���+I�&!j�#3M6Ӫ��풃~f�״#3Bɡȵ)�֭K?>w�Q�Fi��zU��X�q�o�!ŗ�iY5C�����5[k���B!9a���Ӄ����(�q��3������c)S���mȷ�l�PP�h#3$�8��I�I�B��A`�#3!Ih�XpK�	d��'a�a[���Py�L���#*Y�@:�&�^���*�s&�>�݆[p�A	��훡�3#3��u�7�b!��Y���L#*HEDP�4]a �0�ӞJ�(��l6����6�L��M�J�Mk�A���6A��Gh�0{�4���f�vo�x�6p�����&�"�_o��l�$��#*F�|�L#3�D������)�����&n�^+���ל�n�6ҶZƒ�lkF�KY66�1�L��5��W.������P�(�!`����:����h��}lXN�'	krJ�4SM$$��U_��&!j2���[���S�V1׍"0�l�$Fm����X�����ܗ{oii担�\1cXd���#9A��	l�#9d���f��F�J2Ǧ���ww�h��Ǚ͎�3��)((D����lI)� �͹�VuLX�����9���6�E-�0��#3�3l��D�H�ݵ�R^�#9p�6��]�@�T��G������wnT�Ͳ9PêPnb�[1#*7(�x'� ���o�/i�L��&Đ���b;��D\t��1�SÓİ�*�o�J�������([�ޟ@���j]���t�h�#*�#9Я�Ҹ�eV��)�V�w�uv���:�� j�F�}���X�3B�ZKlL�6-&�F����E���eu֩�|�E^+\j%D	��gq�)����?[�<�XJ.n�mS�9o�M⢠=]ֳVB��C"�<�{yt�;�~Yt��.���W��1�&~t�^�4�e�,dO���ʪLbzg���Ua��a���uiv�f���t��Ԟk[�f�L$��A�K�e��{.��L���8<6f�!���&�sZR��zm��jH�@�:�<�I��B��Vgy�#	�q�\yu�k��h7����gI��@Xj3(]��M̘4%a�\���lT�0[E2� ���_w�ն-ϑ��B���Y�q���Gz9��%��2u���3'��[\����8JyO��X�h ����\��s^{Zҵp�<�_�)�j#�/��ȣH`#3�����DS�N�0�~b�*B@��v�`i�5y"Sw׉t��0fo�#3>Obc��_)90.�l�C7���rێ%�]ೕJ�B���:��O��f66v��1��JX/U#�G��/����c|���L�wL/c�B��h�A�)�����`2�AKm�#3�������\��[�4��S0�yҁw��D=�`�v��P#9��.�"�RQU2� ��8��,@YW�dҨ����#9DY!/�Th"�!�7�v^�E�W#3�p������I-G��,l�]6�UR���s���h��!Au�d�eqR$�`�i�@N�#��J \�A�(7��>�d�!��QD�8#C��(��}W��ˌ�"���S<���Ҝ�ģ��>i�@��{n��5LŬZ���Ї�W�B#*�~x?O�]X�7���Wz�t�TC_�}m#3:���Hn�V,����&���q4�#��PbK����T8i���0#N����$�[~��i�.�>��XHk�ҙ�!����jOA�BX��	��$	zxġ��D�����N윚F"SP�ir�2;,�V�#*#3���b�F�����J#9K4�A�UZkU�lh�f^.^]�Kun�[�,�bSR��ZՋl��`�uS��Q@����J�^��cP��en�9�.EI�A#���dB��jD1Bk�Ӟ�����f�}���djC���!`���<�N�S�{T��jE�(]�O�!i's	���d�<h6�Bg5�#5��XF�Y��͇s�jΦ$R�;,X!������#9���O� �i3���ọ#~��7#3���'��d��\�=��@�{g�w����UI�.j����څ��[��t{uy���������n���Z����Y��ʯ�����SEX��j��r�7�6�����"}��K��}�i$S6�O�!aB"(Ѯ���2*0�/�|���?������`���8���Ծ��$���N�m�k�,'�C���X�wH\���%�rQTA���ؘ^0��?)���V�l��7���z�a�#�k&�`#3B#9c,҇l8x%���)`��I���k�0�<C�}��š���X>���(DI�'?%���8�I��v8�h�C,��� �'{v��Hhl�t�!c�#*)�*0�f��˓��|�I;hd�3�;��7���(�����k�#3���ѳ#7Tip>�����K�"OPhx��\����#3K��x��h	�i6���b0���<`�����o��2��,2V1H��Z��Xg�6��.�@����j�p�#3���O�̝�(�$�u������S��$�x&{y(�8�.�� �	Ii�����6f�^�B9i��f���]#3~�ݍ!�2�p���G%�[a������"*���d�vh�CbZG��h��C�#90�����_���IA�^SQ�B���g�媼C�d<��R���-������؁��a��	^�*�OA�GBfyt)���"�6vn���(2�%M�#}ME����sm�[F�����F�Q�l�ڊM�m�����*��c��Ss��i�jh�;:���i�r��#9HE��b0##9���\��E�ڈT�b�vm8M�ݿ~��A�pw���7N��"`�MQ__����;�%o�s�yB����o�����#*z�ٯ���4y�FSc$$����A�A�2�K�^��~��O��	��wƿX�PR�#3O5ly��<Qs������9�#9J����x��WG�۝ĩ�c�����̧v쯥���#*vH?I�8�߮�_"C�F�C�C٩��#3��Ԅ�#9�v볍^u�������^�AKBl�5�J���^��P�6f�s��zN�(�(2_Ѻ���C(i#9��	X�rUT���2�������΋���N8��h偦�<X�ŕ�Vp���ءL�z����#3 ��]�q��� ���� !b�J�j���-#3\{*��-�d),�1��c��3�oB�0�҅�#9�p�����>���c;�I��h�|��>������cי�!�M".�uݽ[䠥6��Z�۔��|gլ���GL��=?Q�l׭�6�$�������Aʘ����	�L�\�9F�L�@e��j+nQ�ݗS䚏#3���1z��`v�W,@&(*��Ǔ��8�D�@Q<��'���ъ����<��9�	���swF!D������z��5:�s�pJ��faO��n�ihUz�N�5��fU���jјAIL�2��#96L\	�Eڂ�f�}p52��9#9]�B@i1��T�a\1�TH���f��5M�]�nVλJFԤͱP�h�]u��0&}��<������8�#3&�7��f��0c�I��B�(���qR#*2��zv�I��c�n�Mb`�0�$B%Zb%�#�p�61#3�� F����OU$?-̄5,�`~������B�2#9@"#3y��Ս�����\ٲZ�T��&Fy��"J޺��H_��.FJ��U���a����t��CPE#9@�TV#*�#3�k,� VcT,qƒu�<��53(�0l&��SSC)��ũ$4��be���&F�SR���ڹ,��͹0o^������ӷW�i^�vݞ/^�M*Z���j�{]{=���i�����MȆ���T�lJP��h^ �0�gaXD��`��x7�l@�5���D$�mq�M���1�V���N\�Z��i��48!�h�`k�UkH�li��k":���q��y���&�؍С M�Ѧ*UE��2�0��c7�$�E�j"B��J(���vr�ĎX��G�VJiQV��w�ʰ)�)*��EE�!h(bEDZ��IDJă��FC %(,�%�1#9Eb)45.�v�Y��#9��i�n0-��$I��i%ehC�V��c*5�Iꠌ1���B��.q�#Q�7�x�cy�n���djq�ڡ���ǔ�KLMm��s.#3����5d�/����>Ʊ��6�e�5�F����#3���M��ڙx�l���j���E#�[ҷ��:N`(��ڙ�����#3.#3�V��}�w�|�K$xj�ͭ�-��`p�cM"��[f7���1*�;aX����)�)��y!�#3G�xn$�O��7�B��q�h��v�������`f=���i��驴��I#.d��'Y}�\�'����׎���ADV���|�XWL�}2,-t�Ɇy���	��c�dhU6��iu�*�LJnoY!�&s�Y�l��=P�c"�,�]���Z�(�Ԛ"X�0�^�/�Քe�t�,E�l�6d�ށ�)Eݑwih4��(��=D�(�c(3(Vݹ���G��t����Xi#9i8)DT@ƕ� ��4,���T��,��HF-�h44 "b 6b��K(������$��.3Hf"�B���;@~����<O��A��#*�婷��S[bX�ѪO�0&�����7�oT5~Ȉ1��*4}�E��=�)��5����(�Z~��d��m+�D��bȧ��S�(@T��1P/4Ԃx�yCɽdsՅfOW���q�m���M.���D�[q�9T�/�Q�7R�&i!\ސ���ʥ�R��#9�[a.����R��=��a��DBIa�L#37�n�SHB��x6�&��gr#9�Uӡ�62u��7��ふ�Z ɭ8�`��"s7�p�:�lm��i���è����'�����"������U��O>�,$c��7�uK�he�d3��SG�v#3���Ѳ5�ץ�x��䢌߮/8J!cO��10�=������h<�1��}�7��j�2��,�	|���=��Ƨ�'q7�п��u&�qcg1rp�FR���D�'�1��'�������c͗48���B�E��ID!#Ջ@k���IbB(Ȋ�20�7��iK �D	#* H0@$6��ʔP�2���'�R�G#dR&����t��*�+nWM�KWx�m��u˦��nW5;s!˶�Z�xf���F���Snqݷwjũ@�4�%���*B5)��^y�b��U^5�U��6!bX��6�߃б҄rE%���vY�*�#*�Z@4#�1U#9�B�i���#*W�H�!H�#*�"���R_-���ܴ5x��ֽ���D0�B��'����#3b�t�WK�eu�f�[�kR�X�"�z�QJ�U����iF���,m3EF�ET[YKAcF��Z6J�̦�ɒmMB6��H�ƶ�^v��}7E�4���G������_�Q��]q��R#$��*0E\���ÆG��c��/Z�K'��R���B�ȡ�K�я]��hǔ	qo�Nb��E�!(�L��72���6h�h���U�#9�O���-oY�[N�κ�v�Zۘ���)-��\�:���km6�W���eb�U^y��6n��?�!�n�ĘrP�J||�*��S	�y����C#*�@�#3�GB�B��tF��R%F��I#*�"2#3<	*��IF㳧��	H&h9��6�P$51&=�����M'�=aO��O����k�6�ŞX,p\�9����Q@�����ީ%��	�f� �i�#�aꪏ��;V4i�0�f3�}�8��2��&���#�~H͒�9S��8�4�2[85������]�&d�9��&�y񬖽<�/aI�/	���4C��6N�� ����c��#9��a#9�C�>�K���;�7�B����U�hĘȞdqq�\���f[�����~��Ѷ�U����8h�uKEdsA���/q���a�K���x�P��W�I�B���j��(�!́�#*�ǒY�<��M��>�q��Y��l���z����T?ެx�LU�}&e�ꕵR�C��؞F�Q�C�P���ANQO���IklZ�S-�4����6�#��1���\�I�\� �rh���{:��j�-�ڹU�"�)�Ǵ�����:�.H����� d�@�:l�"��!�[W�b�bą�#r S�U�AK1kR�kc2�yy����y5��]SD#3 �>ҩY��0��1)4Ҕ�pH¥8�l���0b�+m궷�J�ْQ��ڱ�$���E�"6L��4��F����(��#�%X��E�A2##*d8�3�Ƙ�h�3Q����PF�vƵ+���CP���9m%�-	X��a��#9�Q%TB�B�b���@<FQr�MbvT��MP2iT���h]��,y�|��T�I�DP`�IIJH���Nw�fv#�JB���~��I>�����X��n#3�����رv��۶����ؐr�c1�-F��|8g�D#3s!�杯P*�o�Z�F�W�&"U�X;�#*�"���x���}$ m����U:d\��#3��?�>9Qк0�-~{Q��{��8��_� �/3��I:3^�'"#G�K9���}�ɓO���~X�9h����SD����udlF��A�2�˗��#m��v>��&���=]5�,��ٗP��!�{B"b��L�;��i��#9Cg�l��Yk�[����9%!� ��?�P�}�	�$���B�Ȼ"�P�)X�0RH�,���{�#3�4�sl,�@)x��@ip�׫�^�����	r��NI!.Vs�~��N�ڵ��5�Qå��X�*��-�����S��s�I	'\�](�Uݶ[�����L�`�� %��`*�B��Q��Lg��,�]x"e�	MTI@���S)���a�ھq�	hͧm,�h�i��m��d;�^B�R���dQR�ȖDF�T�Z/�YjM(����p،%͹\���;��yv㮺��:b�wv�r�oM��l���۫�U�fX���Z��E��mQ��[�[&�)ck�S�вm&��tn��ݙ�\��R��*�.u���E�j-uf�@��#*�u�-���K(��O\��wA܉G����	�����F�=#*w��oxxB�Q`�j�� �#9's,���/�S�՘���g�{�r �p}E �< ȡ�-�z�G�'�5#3~ʶyd��m�m���#9���?Wps�u��,���AW��&�0EZ��Ͳ���D���B#9e��P��lm	hС-O]?�%;!" D"F*#9�������{�ڊ�F�*5Rmb��J�#9ZE��D$G�}�ЁI�!�s�ɮm�.�ڜ���K5��&��y6�W�S�y��\�04�"�F�2BXq"U���jr�����SF��Z�Ќ�JzWJL�4�#9�{).�(F�(�B0%NH���0md���^��Z�dj6��R4�]+l�L�Q�b�1�	HG:#3p���s ��~�A����M����&w��(�8`�0�b�J!���}`6�Bu��^#9*� �,P"�H���*kl�M�ڦڦԑ`��տ �� ���#����T���ճcM�LՍPD�NvW�y�#�R;�������i�Wd�M���������FkCfkl�%&���A?�H:dm�2v��-iv�{b�AN[�YGQtm��^Ӽ(jI&�ԣ���~F�s�Y�M�;���ݾz�ْ���d`?@�25?Ib������~�zAw,���1tj�/PD�!�v�	KY�4-R�.�#MG��Ф�BHN#3���n���rk���y?��#3���{��#�y3^�`����,p�Д�(]�@P�C	!R �Y%��`�Q8��?S����l„M7�A�M���j���k%�׼^mҷ5�IW(�X&�m-Su�f3R�BWA*0�1�3�eCf,uYhXKE�����;��fR#*��c2�)x*�"�2iG�T�I$��L�$�+����Oo��`�i��g#*�����!tT�P@�{i���<.�Z��d���#9�4i�&��B��?��q��`���U���0ZKJ�) (�t�D*H#3���d�#3)#CSv��ߠ'b��Բq��0P�c��a֜:ʉ A����!�*����~5�Ȱ��H�D+u�v�b��� $5�A�<d ��3g��N�Z�����SwABH"�1]SZ���>~ֻ��K��ڸ�KRղ�t�wU�@#��T�+!"@�*�%���T�j"كdjB�B@�NtRYՉ�Ґ��0u%��3OBsp`FC�T��B���[�B�9�R���h�	�.����4�J�,6���tb�Y[ִ���#3jk��x��K&I�#9�F�WY��Ʀcm�!+��*���Cl��V���û��˼��U#9�����#9�i�|��y҇Kʇ]t�=��w�<R pSIc�W�hw܃�#9�~�#*~�Q��r�&���$��#3�OU8H#�b�"���PR{(i����*D�o��k�����~���Tג�o#�`ޥ�9�P&oz։Hx	'`7�����'��ӗ_H�v~��BV��=!�AFHX*f�?cZ��'ϼ�~(9��~o� �:�����O\��Oɗl�,1���NWJ���%DU'�y{��c[�%��oE�>Й��(P�6~�c�e�4J�*;�lP�C-�7��#3)� �!#9�S���KS�#�5d>�s�ϙTn:��c5J3�Mr�3w�DșC#3��Vf��Z����\)�#*c0�cF�������ӹ�OP�[{�a�篿C�C��#3���4Q�%Eh��&v�W9�eN�̴}���$s��UO�c�^�ϩ�{PC�Z*��I��ݙ�$p��Y�T	�VTK�W�7�����䘡��Y�m�VЅ��9Ƈ�v�����Θӗ@+��7�7]�ή��ƽ+��Ȭ��]R���m�A�e����!��f�G3C&4�0�e�i5�j�]�����uL�K���r�vUzZ����(h��n���ޝ8�o+�L�hMO#9�x=g����O4�{֓́�[����r�́�]}	�#=����2#3������w	e{[�+���oaNP4qL�n#�>һ<�o*���������(�K��G!P�u��b�������ގ�t�#3��8�!=�dH���!���?��<����T�-��WMC���^'Y�tz�$GF�h/�:�r0�G2�f��زe�,�\�������#3�9S]��#�&���$�H�f��(*��%���*�&�h�(6�T���ջLÑo�Qn��+��p@���5����Eŏ��{Hy���u�II#*�Am�������^�"�2����3ǂ���ZK@����K�C��T�	P.�##za�:�#3��s��.�D�&ɑ�i���M����~�����V����&�����?}�{'RKd,�Y����mv��#����zQ����^�+��l�AA�cB!a�v�gc[�2���q����-던�~��?����ȏi�!���Gf��MVy��aފ��(Q�[%��VŦE�(.�����+�c8c#Zm��CA#3��oagn�Ř#9��2s��GQ�g<�3�І1#*^�{R��]�i!P�f$!.Z���8�C`X���銬5���?��Dž��)��Ҡs��k�g��u���KM��}�#3��Fz\$�a.���T%3h��I���e�:|4gT�d�����5�#3h6�r��6�sE*��_?w\n�:�ؖo�&�oR��:]d���<ES�Έ#*��Wv���C~��t�W���#*p�[z�M-زm)j������$>H���0�A�V#3�Ă��H"ȑR@�߼�\#*�#��ã"�{+����zS!��(q;"��8��ΐ�����{Ӷ\@>G���`[�x�q�	�:��[������6�G������6����ǀx�����e[i4�#*��A�յn�bZ��Us�F���@����R,*~�!�I�9��XD`��	;�TUI�?���	]���S�{�"����N�BgŹ�����n�ZQ�t�әӕg��ʺ ;R1!2�O����G[k�V6��Rk�E�6��� �A@j���pķ�[�f�~��|��!�@o�7�6��VmB#*�1XH �q�Z������fVRE��)��	H��G>����}T�@\�?���$E#*(��"Aš@�g�Bdn�1���?�x����P��81�����h�f}���P�~��x_O�y#3����|QA��_MB��g)�5��5a��v�_�t���kK���Nq�5gv�*c�ϕ���V�W��	I�����%k�-#9HW�1���g��~��K���ڊ���"��s o�o�2�2A'2�&�2�{0U���fR�	�ک�eV�6z#o#3�?<�'�������B�T�RB��ل�t#*5�.�%���#3�]<����,zoXʪq���:o�#*�S�Tn�~��[5#*���-ci>碪l\TA�p�|���m�q����i#9A������7 �5!�PT~]VG2�Rd��Sّ����פ�w2UC��0��\E`,�#99�n�-rϏ]3I1����S% (ȣ���D�����L�U U#9Q��2�ҘB*4��a�(!c?F]L(u�p�_��bB�Y1�#�����?#3_��2�ni��NW5wOZ�T�k�6�d�,�m)Z��zt�`guo`��G�tX�q������-E���ʚ�V*,m_g�|�פ�?/��#*�FeRDQ�4PJmQ���єb#JT��B�&ʑ�PTE�T��'./�<`Hw�z�lI#���/��΍}Y��[�ͮ�K��q��N�a��6"�Ƣ3��b���F&F�@8$jBa~�KW����)@�4*T�}��^Y�c�L�TB��"��U�:��J�|���r����L�u���Cm�L���_�mt�j�r�����rz�9d��9pbj6����]���A0�1�ӾYp�	���<�~'��wb��ӕMi9�3>i��k��z�V6�\�r����$��B,�g��T�;=�$#9���|�	��$#3�ؕLd���3�su6z�گ7�aoI��6#*ؑ#3Rk�$��#*r#*��Z�gu��-Wk�K�p�Ac�,�r$�M#*F�#3VlT��C�B��	j�R+%�aK�P�(#9��x)[�R�PI��������*�Da�#934��j��m3k��2�NAF�#*Dg.{㭢��ivfP2�}��S���H"�a8=Mu#3��ƶ�'d�Ȭ�T�a�0d���s�"�=0����/S�O<�Y�ci���X�e@„#9�D3�rz#U%�!�\"o��c6�H��	[y!��[H�m<��^��l�Ql�8��iF4"���oU��ԁY�`BI��w6Qu�x���y$D�GOF�*�1�,�EI&� �����hU�TF�8�L�X�-�4�Q�Olx�F��kM`�	"Pi�eCbzp(�U�Z�N��*vaeu����T�К �uH��	am�v"6#9E���)e#3�-�hf5��i�##«�5��h�V�lΏ,sw�ұD�`�E\�U�.�($MI�)�M:m��2�[Y�,�A��٢Nl^�r���a�7�m�7��R���;#U���B�I�@�������xM�a����]��򲏎�Ea�V�mf.��]A`���lI�j�����#3k��f,�F4mE����1�f�ጒ.�kRPnr��nbZ@�<(ӄ}2#9�#3/)�Tp`V������81`KV��*�#*�ʆ&�X�\�@�� �lh&�b��f�)i5!�b��Z(ܐ�Ds��aQ�������'x��^J*Nj�\3���2�*��P�ɑ�*ȡ���M3d�U�H’1�.�P��I��hU4�"1A�ƍ�$�TPl�+���lU�70�m�U�DK��A���ء)�v2Y�R���(.���3�D��0i�C�P:'~3dY�~�5zN#9f����M�gFSE Aj���+#3<����1�4PQ�'�F�h5x#9J�>fU��ٵrr}N%n�$1Ԇ�2#9�����T��{��%�� V�1k�9cS�\'��&�McV�`��DM1�#3Rqb�rî�44hf�)W��a�r�#9J��6(@��K�`�#9@脱%(Ȭo i+ua#*�I�A��G��"R?����Ļ���x�p�ݼO���]1�2mw����޸��Gt�M��[�o�}U��(�j6��ͦh�L��Ƶ�t�ȶ6����=�R��L/A���)����_�����&QDb-DD$�8�6>m#*.��ޯ�d�!~M@Z��:�'w��m�U�F֒���mF�1X Q�(�H�r��{9"{�T)�v���Bsu�볌4�,�ࢂ0�'��a�bs��Q�\���]�i �`2;#9�#9��&,�4�]��"����{k˥�H�BC=*B�UA��chv�@�b�ƒ�05��6b�1�`Oإ�ua�75ݘ�Cd���`T"T��Z���4��c���6��0��L6�fF,M�K���5�^4�G�f�򷆷�	tR`6���vRc�p�dY����~@�H~-vbŦ/����ߝf���'��r}�<tJ�&�nb���EKU���ςv�@&���ͼ��J�pV#9"i	;�[��#3����xe���@��Np�Q���=g���,�K�À��vF���^��i#3m7Nׁ�S���6�����,S i����G��#�Y9q���}��C��W���8��Lm34�M�*%�oIf�Z�ux����‡��[�Y_�/�y�#@wcO@T�#3DT�@Bx}I�A��ST�o���Q9D�Kl@�U�&�#*�N�e���8(TA7�w��]k-�8��O���>�N��X@�x#3���M�I�#3p`����1J*,�~�W�Z�k�g�F�����B��#�oN#3�&�}��W5T�%�Qa?6����H���L�l,�d�$Bkm��A�����x����.���^߷�x�k�slk&�[٭�n]�U�k�bر��n��mt���6��[\�Kr�rӻٮEF��FьQ�Q\�Yݭ ��"���N�Y�/{������Y� �L#�g�{M2���!�c�>&#*�W"-���"|U�튫g�>���"�T�`���ƫ���h��iz]�D@>���_x�D3�����t�f���O��%��L+�D�6�6&�$���{�Y���M	��,�)T��2#3J�V#*���K��cO�`#3�	�#*� �"(" X6��6J����*���U#9\Ļq�EE�*�H*4��-U%��ج2�ci&V5YK6�V�E�<��%�h�; �����:5��Hz�����1j��3�s��#9�*G+���}q�f-����M�!��j�v����EJ^�TT_����_�#*$�H1"$*��ܛ[f��Nï2���:�zN��#*�ACtE�$�H(��U#9�����f�$���FZ4�hmIF�T�&II+�X�j5lV�m�-+L�-�d�d�%��=�ۑ� ��:�d�,*���A��H��p�����l#ʲ�q�9��z���^g�uW�q؍0.5QD%DJ�$�����+!&#9�16�	cH�����D*�F�т�C!D�F$ƈ�(h��AE@ �]���E$DZ�C0	�~��p�#��R̩�˧u�i��ӻ1p����h/T�[D#9#*EX����5��*PQ�"���0��X�`!0���:v�������ݟUis�E�)^�IR AO�Fv�̙B�>)�}Ë�L)�����aq��UUO��xM��-ȓ�e��0#@���1*!H�8>��˺�{�kB���D#35s��쪵�#3A��6=��;T��iL$�N�b����ۦ�I���T�f��w���F���kZ�\�W]z���J�}~U�C�����#���*^���KC"̑�$��u��d���}��{��d^��A�(V��-�#w$µ�����Q����߈��kI�K4���Eu��*5�.j��Mێ#���-yɥ�Et�԰���b���F2V�Jk<������;ys���c'��[+�#3�,���{���8� �.#3g�����hp��t�;?M�ϋ��	��pP�#<K��S�a���K;�u�(%���#*�0z�����Ѣ��3U�ɬw'�tz�|��b6M����OqW���跰\��q��H���`�i���<��f�^��otv�M��ų_"��gs��ff�ӆ��xf���=s*�+���E�䫡���	�GV)�ZY@�H�p��J{l������e��7����٥�'Ĥh�������I�v��uߎ��%:Z�����z��=7!I!&<s�[����`S�H��7���<d��&N#3����/	�6��#*i��UkQ�8�kRXu�}QrB�#9����P��]�Vn��l!�	/�������H8�9�J]�Ck�H�>�ͪ��!s.�#�{KM������e��_�C{�TQ��7[��H0�r�^|}�Jj��o|�:q�]�?EJ���q�^9d�#3WR�����n�I����A#9�lE�PG-⛲ ���T�-��?\u��3,�ݞ]���l�^7/��l���x�_��n�3��$"�Q�N��v��޹���C�탁��h��#3�de3��~��%ͣ[VO�pWq}&���7���1l�2a$3���F�-�Mo�'#����ي#\�4ΎԪN)nh��f�UbURi��y�ʪ��-g.�$��Pt��cZbi��$�n DŽrmL�1:,��7��F��8��ʓl�N�6!�Z8�JȘz�F����g�ɖg���n-�QZڢ֢)ٷ���������m�vl�9�w�[j��#9w����9Z�Q�sr`�x#3�9��IƟD$���X�ֳ&9�D$�3�P?Fq�qi9�8�cm)uU�w�:幩�Q�jP�w��H���֌��"��vw|&6��[+��>/9��WW<�u�QMt-͢���)r�n�n�;���WG���%��̎�'�����)���u<m]G�>qՖ���fzx��<h�x�:�F��Ky��c���:���h�5ZxG��K����'=�����+n�*�ϳb)��u��:6�n��Y���#�~�0�n�.�w��O����^�(��hvc�Y��_���>����u�tY[���{��g�s����6�xpx��q��wb,���&�m��B��6�v3��Ƭ�bd�el1��s\�7�#3�a{NF�(Ga̱&�u%������N�=xrO�]�28r����֣��#3q��J���P�l�����cf�q��Q�>!��Jf	�y�.�z�U���b����0�@�F�+������P(�y%�[p��a�;:6c86yS�Ɏ|��������L�(��ԡEL�ӿㅂ�R<�n�νk��{�T���Ѽ�X�w!!��F}N�4�YjXw"ZA��0�t���0��}��6+hV�a��2pw�`xn��U'��=7���m�h�P�p�6�s� �#3YC�`�z��M�sgN��H�Ft�"Gt�!���S�ف@�҅P���XET#�����lA�-�Ƽ�w����)i�R:˷H�#*:ϋ���r�:�N�CU49�x�.3X(�"�{�k�4p�&WQ����20���7XØkg(Q�j�}�B(pI]�AB*�h�����9����3�������Ң�d�v��%�Y6��EAc��E���D\{�K��o?)�Ԗ:ĩS8D�f��Ƌt#a�[���t����v�ߥ�Z~�v�����M����˧=#���'W��X梄QX.��7sDӑ���r�O�\�i���i��dq�n�[�4o#3̜u3�6Q�I��PP�<��C�v �2`��[�#9�WUI�j��t��;�J��u��Ą��Q�cgh�?4u�=�x�_+C��"�9���g#3������>��<�o�|��O�v��b�"��,�|���:wo�%�����w��y(��X��f��ӥY�D�#����1n`C��4.8z�{�R����ȧ���Q��h���լk�^Z�7A�+޽�17|���\m�4��-&z�x���k1��݃e�t���L���ƚp.�\�G2v3�`T�+���4B�HHj��*Q˒�`�l]���]�q^�o����C����6w\<���S�����dw����qgfO���hw^;����{�����:����mC�t'{Fժ�yM���Ё�Jt�L#3X��0U}f�m=�]�ֈt)oHʶ�^��:9�(j�H����*gpx���X9rL�b��5��`]M�+!����*�����s��;``Kº(���8P̏�f�*Ӑt}���1��#3�g��r�=�^�:nD�0\HCLl\�x�%���C#9\�~N.�0�4k(2` �n���p^�HA���5E�1�N岩�,��T*�rQԶ��&t�\�=��I��WQ�#3J0�YN	�\#9#3X���,6��RI�)�#1d��=��+��]�;ð�:���`��M�6c�3(�xl@>#k�Z��&@�d@�r �`#*5�Y�<�%�oVffE.)�-�BhAvc~%��˓7���7�E�k�Pi�G�Q�ڲ�I�m�,E:�2#X�{�#3��{#�~gO"h���"^Hu��޽Űt!�Q�#9�yh-J�$�vq��V��U�l6^=0#99q���C�jDN��ިDb��;�d��pt�>�[�b-��_��X��~v�伫Q#!f��3[�"�#3#3�j}�hͧQ��J3+IZ6[�f��	h����бƐ�@��x���N�ȵ���V�pTJ�X�UKE#9��t�F�#*�k�m��Z+[���l��f��;3)DQ��#3�i�ց��Q2��ƔTE#9�2�(�#��	��x�9_L�͇;[\��q,�ơ�x��.]�3��s*H+#7ѾH����zW�^*�]�#*�QOT�E$��6�@�`(�k����m:n��ik\�|3_e�<r�je)x�*�1��K+ud��/���`�0��m���a����#3?�1h�]�2���4�O�7�Q��iƌB��q<5��*�TB�^��	b������U�e!�)TE|��Ԏ�t�5�D�`�����cH��L�"kfQD��(�de2,Y0�"��4�hf��Ɗ�Z*>%?��3�jr��r4���=t7�r�jW�f�G!E�n�)dĆ\$j<1#3��ܸ1Lԭ�&�c����2�Ԧ�Z:���Y���Mi����M�kT�7	�eǒu�֬z�qs��V�d�bC��ȅ�5����4��8/%`�m�5f���$Β��5��9;7h��iF1����xlT��(DawV�T� �I�8Ƙяv<U�1CC�؁d@Q��۬�!�H���ʧ����+&JV���[1�L����:��n;nث�Dn#3a�1�JD�8��n�4k�i�<]u@1r&�H�iF�0T���3�s�]4��������-K�֑��ptC%c�F�Ѹe)Ja�h�Jhqi#3&�LMB#9��ѷ��o&K*��oNv����O�2�CdT��ux1��qkd��5�4Ea�j�nƮۺ#9�~O��J1��1�N5'�t䴶��Ԭ�(~5 �M��O�#l�#3�G�^8�ލ�+3QM�����#d)�zs�j�59	u�#���8Q��X��@�2m��"ɜ����'%SѢfqmPS73N�2�b�{yN��Q��Co�l�q�C�g[��m�1�Q[��?f�Q�aJ�}@eA@�c�r-H�vQ��&����cՈ��|�YLf������$)��o̥09�d��f�1�+��x�l�	uE#t��w	}IfǏ���L�5]L���7I�"�fx��s2�5�Ɖ�m�h� ��л%����lz|�C\�X��#4������ �:�A���/aA7���6*�QmJB��/=j�ʟE�ޒI{�ܑ�x�=��5�})��5R�(�R#�u,��n`��vy&�9����C#9O�DGi%��o%�ھ�4��s���ډIH�	>2m�����Ϫ{�`�")�4H}&�.w��c8#3�lb�Sv�UQ&Iˑ�D��YJ�d���oPO�W���eӜf�l�N������ϩC_�b��#��zB�H7 j�{|����;x%H�������g����&��rk6�<���-?����lʩ\\�g��os��z��z����0��Uhi�Q��T�fy�痮���r�ZH��=@r;$ �y�#35�.U�<oƊ�i��0��?<?C��顫<���<���Ph#����y�!�D��nb�vtֺRUڦ�ڦ�^]sV6�#Z�^-"�B��(�E~e�;���O1'p�{���z����c��?`��(,��a��m��1�LbȚ�RP�L�)l[%AV�IEQ%d�B�6TlQ�fЦ�$ғd�)I	*#CZ"�JD�d�3E��)Tх��m�0�J�aRI	$QO���;�r���e����|C�����ކ�~�4c�ɷgt�f��{@Y�mv�#*~]#*��l:�LOt���Y��0K;be��*)���+	���}V���⭻��$¶�b#9��؁�#*b�mC�d7q�5�T�#9��ݡ�CF.���'8i�#I,��ԙ>��0�?��/__�������y���$�B�4Un����8s!L��}=D��L4b(�a��XUatN�[[���zs���{Ͼ0/U����x��5k�9�,�i�T�=+�#*}I��h�E&�&�j�Z��}#3Z崨ԡI�ыX���j�me�xR#9U#�K=�~&r}���^."T$ �()�H�x��,�y������.�B��}�H֟��vj��W�E֢���jH�&"(�ك�&��h�=4���,@F�DL��z��m�/>I-�C4K*�#9��a��\dQJk�~6��z)7���Lb��D�o[��l�<1��wy�PĊ�P��&FEb���vѻ,�{Ud�{e��&��%ݡ�Q�X�#*K�%���m�kvE&bk�\Lߋ��5����9��l،�~����b�H�jfxlДa�$;���<�d=Ba-Ր$��U9D�Q!$9@d�(H�9��9��d�$�H�	͊�_�ƷɀzPSMR���R�԰���>��,�ѿ��^�◩�A����ϻC_��F?����.>�'�������ȹ�B�N���ȓ���@��7'P������پ��#3"E<J�Z��d�1+�fh�e�������C�,�~J�r>�$d�%�v(x|:lO�����d�g��~.Uo�[52UQJ�m�]B�������-M2�Qc�R���B��F����k��܉f���"���(�Y!�(��p�#9C���Y�#9HK�׹2e����n޳ko�j-�ֺ�{�G��3�Ћ��:l���W@�T��v�}iԝV�(��>�Eu`�n��� EY̻׳i�ێ]�?	4=)8.�Shm	�0��HYd�•Q*�Ne�]�{�9��/���gΰ�yށ~�qN�p[Ⱦ��N�ɱ����s�U9喅����#�R	��B���pwʤІ?Z7Ot�[�����~TQ�� �*�L��^���ľ����Dh���]�*�~�/���1��b��=�	���]"�����4Rb�!�:ݕ5���A�g�����#ߡl������yxk# �_���f���#�� }_~�p�k��c֚2@���2����)J��)�	9�<nNΛR>7����d���<�>#3�X��p�;I�bK�~%د-CV�ߗбG�$��&�%➠��}T�g�g��٬ڝ���1��,�P,`�YHm���Ĕ4���m��͢8!N ?�X�e��m�)bi��N��UcnF|p��%g:$�8�)�`&P�5CHfo��.����]�p5��r�%��m#38��6g%�	����#3�#*�m@8��nw�?<ꙙ����2�wv�ҥ�5�BY �e�	�����jz�� ;P����܂�C1�>d\4�f>�GN�=���#9�"���*D`J#3�C�����!QcV�(�m5�l*@K�e�%blFR>������4�H�3i����B�2��`l��	 f���ɶ*D@E#%�q��ާ��f�4� p�E	�#9b0��:ŝu��&�0̔����Q�>~Pglg}�����H��g雇lѓ!h��]�d&E���YWZ�L�-$TL�O�F^Wu�m����'e�x�l뛪�v�J�����	�^z�~�љY'ǻ�K!6�EtI�vkbR��c�o����~hZ���3�Ĥj	axuGz�҅�"�j�Q%�VLREL�#*Q�m(����q�ECE2���$֢QJ��œD[Xb'(�+X�y��!�Z&��'X3P�:ݖ$>�*ؚG�R�A�:ꘉ�Rp�c���G$)�^�kTb��0�nU�#8����e�be3	���9����!&Z�JN�>,�}�%�;!��HC;��"���Ƣ�3m&X ݶ�i`�.G�"��j`��`�F��%���,�F�ә�	���`�]�Y�\��#c���CI�=��C6@Oo]6.[d���Ɉm�*�ܡ��g0ڛL�i���;Kܺ{՗[9�[m0Zyk.e�F��V��z�a��c��lL��çq!	�Ǚ���͋���Emo|k�������3Huy�}�[���eZ�o��g3�)I��$:&�}z̡�B���o�jtq����v'#3t��닖9X��7I4��:MK��'R%�sj��8�r�T�5[e�fFʈ�ΡL��@�Ő#3��|9֭���N���b�/D���'eR�t]�˂�ߊ뜢C}�F���&�!@���#96��t̓�sYs=85�˦�.˙���`q���h��7N&26�T v�S����b$#g����K��i��t͑E[8�"��Յ�0�/0�F�bt�hfb�6P�,E�*0U�l@�ٚ�ܠ*�"��#3PUr��:wfv`�BBN���F���#�#3�n9-l1�K��	"e�d3ҜQ�49���&7f��灍��u�{k&/��٥T��!���{�lr�b�s-���\hb�|�;��^/9�G��NI�0}���i�i6�j#9fÊ.h���g��.���@�����l�w<�6�'ˬ<u�ȃ��q� ��t�mt��1��,̋��SWː��Ǘd�aK��!-��ɫg�F�e����:�\E�p����yp��fg`٦����:-@�Ƥk1�oپ�2l��ESB��V#9��p3B���+�1�5��bS$5��q�\8��}��r�1z�˷U*�i"q�c��kP�dg��$4�8'3S�pd��$�A˵���0��)��Ƭ�T��b�inz0��j�h,V"ޘ���T�s�A��3�v#So3P�O;�� Za4Jjrs�p��fxLc�^	ʪ�d�ۙ����I���Գ��	靉�fH1'L3��FJ�P�v���'b�5!V(q�NP wi��嶗���|���L�x�k��|��L|d�Q"2%�4�+��;��`�H�3!�q��X��&�ۂ�3��H���~I#��$Pm��=�3$pcghƒ�*�5Md��#98��u�%=�3�`cLУb2*��T�Tu�I��8B�C�30m�[F�"�#3L��`Гc*�D3�ar��"d�G ��i̋�Y����oʊF+���)��4��b�B���p�p#3����Q+@,�'�-�oq���!������"I��!S*��vI.ФzC!,��;PȤ�P��s*A�U;3M7� �`�%#3��U���H���Ml�]�1`��SFΦ�;�Y`V���hQ����a��H�V�)#�C8��3����@�ps�;������T�#&�4�#3�����#9D7�4�(Q�h�ah3B�jQ@PDB"I�A<��t��ck��eTD�T���v���=c`�:��R;{T�HH��m����/�z6�)�u�>�ŽW@vBݳL��_{N6`bh�����h�Spň�әe�o-�#9�8��I�h�GuЩ8kK�Ͻ��za���Q#3O.�0�a����lD26|��}=��#*��Z�(�}v�/��HĻ��m"�#*W��p���0�P-�4A�P��=v�D�n��'�з�.$����ʑ8r�2��"diZ���d[�J�h���"�$M2d���폹��0�|r~miGR!�DNq����+�#9�6�T�}���W��۝x�nh��<��f�����M�����Ji��E}k�ꏨ#*��2����59�p�2�Λ��ǹ|?$@�d7���|t���'�Bi��UJ��P�F�E#UQH!���K�U�̈́�%�F���	YX�b+iQ�"]�<]�o,̂c��cp�D�H1U"ckl.F���P�KJ[m��$r⁉$,"&���BQ���b�C���Q��Rf�#*�Lo�Q�������8�s���֮��h���i��h�(�:#3�!t#*&jb���!#*�k!����ϻ�� D�{%��%�k�����T�0�P��i�����=n��CY�ŹF��DN��#3���I:f�"+��#3�]�&!��W����TF�0+6ÕA�r�%���Q:\7���*3���4�<h;ڳ�d4hꨚ2���1eW�d/�p��Pc�ǧyY%� b��8� ��§�&�i�ݗ/R|�5���#9�&#��[�3>q���.Ɉ��R�@��	�J�|=�O0A�=��x�䐁�@�OY��h���л��l�z̟��(q&�1�т����eF��zL�a��I��[vsP΍o4�37Y#"�H�u��7[dž=�T`�U�W���]~GJ?Ck�&�6��*��D�j���5RV�PĖ��OZJ��T��V��k&��Z�V꭫��SRns!PKы*�E[$T.B\0T�n%RzWr/�+"��#9���ɻe�B�%�QJi��3ڀ���{��k���8�z\�n�ȣD@Y`�0&��Ow�{ý�S��p3@�b��#*H�Ȩ2#9��N[��4�O.Tqٟ�*8۵��Ѣ񓉪�x.�+����Z���-(ʌ_���P�V�����l��"��kwW5�%�<�I�+�.f#3c+H`���D���M!奴JH�2EVdA����7� %"�H��%$�t�"oDd)l�VJ�)q)B�N;y�5�����-��m�M�,�#9��#*���0�`@&Fu�H#9��rRf��R�(Cm̋0�-i���o(�=%z�<��^�{����Np��֫G@���2��\�l�+�}%�v�_,;C���pø�#9����p(F@�ׯ#3����.�|�,�*,�C���#*�������Ik}�V�z4�0/9����a`i`;���LH�W��h��I�#3wp!�"O8�<�N���uDW�Ḝ�cb���kJ%���^��*5R�E}]�,,u4)L/Ǐ+�ꜯa���	�Εm����#32��>��(z� ���dAdz�@XB�Ji`�UA���C]I{���%�6>Y���=)�/�z�OR#99x]o'�T���	�ZM*Y�,S�,�AU�6�XM�"��e��QU^O&�^\�t��ʱ�c���22N��Ձ�y'�8�Uӑ�������x��#êp��&�y�\�m'W_X���L��pѐID]��� ]>�!#3<9u���6�DOpp���p̊�t"R�g�4̂If,���ё5�l0��/P��YDX��N�&�2�F���$HB�&+|)����i�Z���5EC�ó��D���m-��sK0�ݸ��p$���Ie�ݙ�ț(5p0����F���	Z,pt��F#3���ABiD��|U{�����Hl��U&��3�5#�h"(�1yOD�T�JBi��"u�C�u�&-#9A#3�i%6���"Y%p��3��*Z�Ww�*p|Tȃ��`�-V���L�� ��TkA��Z��b�Z�a����2�?S.Ɍ�J���,��L`AqȊB�>_�%�^��-޳�� ҁ]�J�]@W�#9,�Bd{�@Xć���<C�/w������/*�.ʇ�r�SZ�)���l�[䶪�Vw�Q�t�_���P*���=/@8��hE��#3�'�	FqY��D��j���o�B�"�҂c��A�A��.�Yt��)�Yȡ���1�������MN`y�>��<�ۄ;J$p�0p���ο#3æ� ��X���拗p��	�Cw_��/����~k��Z�1�#*� ��q盧f���P�S��kއ�#*�~�#3F��i�X��#9�E@�u�#9�鯢7n�z�uQ�72�$��̏Q���e�]0�6F����?c�k������7����b�J)�5(�y7s\#9�6J��U��n"Y+�����+����-�6��ݵ5��DZE6�y-�w���	E_A_m����y%f�l$2i��4�*/�Mq0��w��xx�(� �QY-M��Ѵ��mE�1!=�R|26�P $X���JF�Ѥ)fJ��}~�Q���[�i�F�1j6�V��R�[�j��JY%��L0�����5%q���d\�aO"qM�W}BFD�@����Zn�1M�ak-b���#��T�%��D��x��m�R�����mU�!��#*^܅g�|�{�ϣ��%ݝ���_#*�k�qJ2{��y�Nژ��T�rQ����'�H�	�#*z��a�C���8�5G]Y�a��S�����-��I��qУ#3hdd����;G��i�bz2`Ld*�u���`D%��@�ޭ}�#9���Q$&���#��ђ�#*�T�Or�@$	�P�Q�k��v)mI��tmT��iP"BJJX4� H��665�L#9#*�Ք�����#9�m��rT�™	#*���Ie��eկG]!��|�-�����/nC��#3a���,	���- ~�������U�k谠9�@�}ȡ����.��8�jW_����f07����{��wG�8�oE�N���nzX����/�D�vŹ������b#9X��ɶ�I���;t�إ4Ҥ��1Q��T�l)hߑ��CW�Xh���`�dT��Q'O��}���$#l$��ZČ'�[�tO�.���(bdE�46�(�,���T[�>���wm�,�+ ��eU�f�b��ʱmF5��(U��b6�a	�F�<8�ɿ+s_,��%|�����]-�VY) !ˆ$�&}I(a#*Q�yP�|1񶼚f�n$ڒ�Ʃ!F�)�����/��ԝ7��BE�Z�G��Y)�e�lT��#��b�bs���c���0@4�#9&�Ϋ������4�M*[�����1��D�1D�*�D�Y-������n�3vfUv������$�E���v54J��]�m&ʒ�"`���#3��#9�����D�9)V8��mF*65F��a"�oo."�)�U��MI�����-�%X�И6�j�e-y��v��E�2�]4A�#{7�Vlz�`!I`�A-�2i�#3l���^uU���,X�_2Ȩ�PL�(�#*�@��yd�mG�i��[Fj�V}�2� �/|�1���v�H���(l���w*�״�u@���e��]������\<�%�C��f���;�"�����&�z���X�3�]95����K�wk�<��D�fB�vL&��;j9}#gk�##3wr�Ɉ^�2�W\�;>����EW(�g�7ש1�\��V�MN�1U�Sp"��>9�ڬ�����2�_�GA��W�#Z��O�J˺�Rzk{��lI�$�#*�.\H1�7!�dI���&yɫ���B����$-��S2Lf_#9��z��T��q�T7�y�&5�"�g�t�a7VC�@1��>^#,�iy�<�	B�=��O�Q8�y�M���#3h-ZN���QHX�G`�iɐ�3=��&�@���!�v��!F�(3⚝�Y���������WiPd�b��貔۩���DTb�X#*�'�Q��/�lŜ�E�t�~��fwr�'WwN���6�����iu4>sꇢI1X��X�m6u��:;��պ��#9%��`���s̪����z�k��j��'�Ir�DV���v+�V��mAn�2U0�9$�ʄq}~Em��\#p�u��~�)�h5��B���N&>r��o5�7�#DF)����A{�M ز$�C�Qh���sWwvV}	�I�c����о/�z�V`"ω�ˏHْl?1������`��af����y��j	‘���-t<#3��M:�8kP�&d$4kF��f0�d1������D<�)':�n�^��-���!��+rP�:����~#*��0�WߔBЀ\�����O�`YT6S���o]#*#�,�#*�#�0�>��7u?��ǧJ3hE/	J��>�Ƙ������ՃL��A�W�;�x��?������/����>?��������������?��������~���Wv��������|���������ǿ���b?��������������������������G���_�;���W�����g�/�����?���^|?@G�T���0#��#��1��2Ȟ�lC!ͫ��yH�� �yp���`����J�_�s1P��A����BJ��a��a0�x�����ù��I I��>��T��+�h�#*k���;/EPC8�;c"Q��Y�5��������xq���l(���\8nL�M�͐�����7ے/g��ȿ�e��Gn⷇:�j d��<�a��ו�5�Y�|�aЙ���/�K���Oa%r�?�=w������+���k�8�#��8y.���P�p��Rڿ��u�J#9,KhL��#��9��#3\�)���q����FQ��b`��s!)U���ٙ�\]��ojTԑ#3��3�KL����!T�L�N��*a����qDh�SUS�ѽ����&^!ݰ#�B;;��4+�ˉ)�cM,�����q��$Tq�ma�n�ëN��YB�f�3A*�	��6��K�c1��i3�#9(~|�ad�����#3�-��}�Y��Ţ���D����2��P�cK(�^�d�cUp��CAZ�e�ʙ�CfrvR�e#9܅Jc�Ҁ�R$Z#1�\������m��B�$�A��f:�:��O�� �EQa5�lj�0��ԝ��u#3���G��[1��#*�� <{fǚ�;j��_��y�?�w�Ɓ��\]�j״��=L,v�k5S|�bQd�#9Du�OB"a��a�S�iȴCB�W��EөZZ)`A:����%����X'ݳF̰b��4p1��!�3DE`�ي�XT/�w>�|wjf#*s2���k��.\��ĥ[�#*��(@A�%7��eCEP�1���d:-**�!�$���=��{�6/���ݳ�>�$�ј��:�y��|4}^v��� ,F*0 ��������A:���^�"��V�;����j0�I�ԤLm��Dж#9��4�V�����$H��35�]�u�W��@��=�=Z<��������#*/�T�i��)lRe'C�(#3ʔ����:������G�وi��W��Fr�IP9�f?��D2��5ǻK���*�ABh�Q?=���$��hei��N��e��6Hd�ӆ�m�迅#3��|�(��4��gF9v���jo�A��)*��0�Lc�e���C�OMdq."��|���-9���g-]�2��%�1�D6�G���a�!�Z�W�9\�ŭ҅t�44l�s�V��=Z��X)5[}�챯�Am�5�lm+U����m�(��oSF�&Š�^��r�{|:��Ϊ�vm�唰qp�71Fg�d7��N��O��n��N�N�"�#'@�x�ǹ�me��#����R��x��.1�&�%Ǖ���IGP������ �_�#9�^4�@$f��R���珗��;�Nh�Gc������\T=*|�#*��`�(� @"�ڎ[��n��\٪�-���������,�f�K{ok[_�DH��� ���w�����٩�?�h�b�����0=3��Q��2ˠ�m�-�8�@�d�4��V�O��k:,�'�ؑ������G���7�k �	d�I�V��{ )"�/���(�����z.�5���La?������l'������M�����Q�h����TPw�>?��g��Կ_�1v]����i�gt�t����)��͇��{�n8A�=e���<Ð�1��������/�s�[)�@�G;���W����a���NIC��٩7a�S�p��<����3	�R��+�R?w�Y������"�ScعB�Ď��{Dx|�@{������RA�(��(��E��t��'DS8&�5\.2�`�þG��v�;h��VV?���7�n����<#D�Z��A��xm6x�_H8ExR�å��� �.BP�N1`�#��K�CE.PZ�Q9������h+�i	�o5L{��y��*�s��<����V1���$���A�x�mr��T�P��SڗO O�u����_�Ȭ�����F������������/Y	?���"�(H&��#*
+#<==
diff --git a/waf.bat b/waf.bat
new file mode 100644
index 00000000..dac6143c
--- /dev/null
+++ b/waf.bat
@@ -0,0 +1,101 @@
+@echo off
+
+rem try fix py2 build
+chcp 1252
+set PYTHONIOENCODING=UTF-8
+rem from issue #964
+
+Setlocal EnableDelayedExpansion
+
+rem Check Windows Version
+set TOKEN=tokens=3*
+ver | findstr /i "5\.0\." > nul
+if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=3*
+ver | findstr /i "5\.1\." > nul
+if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=3*
+ver | findstr /i "5\.2\." > nul
+if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=3*
+ver | findstr /i "6\.0\." > nul
+if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=2*
+ver | findstr /i "6\.1\." > nul
+if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=2*
+
+rem Start calculating PYTHON and PYTHON_DIR
+set PYTHON=
+set PYTHON_DIR=
+
+Setlocal EnableDelayedExpansion
+
+set PYTHON_DIR_OK=FALSE
+set REGPATH=
+
+for %%i in (3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0 2.7 2.6 2.5) do (
+for %%j in (HKCU HKLM) do (
+for %%k in (SOFTWARE\Wow6432Node SOFTWARE) do (
+for %%l in (Python\PythonCore IronPython) do (
+set REG_PYTHON_EXE=python.exe
+if "%%l"=="IronPython" (
+set REG_PYTHON_EXE=ipy.exe
+)
+
+@echo on
+
+set REGPATH=%%j\%%k\%%l\%%i\InstallPath
+rem @echo Regpath !REGPATH!
+REG QUERY "!REGPATH!" /ve 1>nul 2>nul
+if !ERRORLEVEL! equ 0 (
+  for /F "%TOKEN% delims=	 " %%A IN ('REG QUERY "!REGPATH!" /ve') do @set REG_PYTHON_DIR=%%B
+  if exist !REG_PYTHON_DIR!  (
+    IF NOT "!REG_PYTHON_DIR:~-1!"=="\" SET REG_PYTHON_DIR=!REG_PYTHON_DIR!\
+    set REG_PYTHON=!REG_PYTHON_DIR!!REG_PYTHON_EXE!
+    rem set PYTHON_DIR_OK=TRUE
+    if "!PYTHON_DIR_OK!"=="FALSE" (
+      set PYTHON_DIR=!REG_PYTHON_DIR!
+      set PYTHON=!REG_PYTHON!
+      set PYTHON_DIR_OK=TRUE
+    )
+
+    rem set PYTHON_DIR_OK=FALSE
+    rem @echo Find !REG_PYTHON!
+    rem goto finished
+  )
+)
+
+echo off
+
+)
+rem for l
+)
+rem for k
+)
+rem for j
+)
+rem for i
+
+
+
+:finished
+
+Endlocal & SET PYTHON_DIR=%PYTHON_DIR% & SET PYTHON=%PYTHON%
+
+if "%PYTHON_DIR%" == "" (
+rem @echo No Python dir
+set PYTHON=python
+goto running
+)
+
+rem @echo %PYTHON_DIR%
+
+if "%PYTHON%" == "" (
+rem @echo No Python
+set PYTHON=python
+goto running
+)
+
+:running
+
+@echo Using %PYTHON%
+
+"%PYTHON%" -x "%~dp0waf" %* 
+Endlocal
+exit /b %ERRORLEVEL%
diff --git a/wscript b/wscript
new file mode 100644
index 00000000..ede9efa4
--- /dev/null
+++ b/wscript
@@ -0,0 +1,160 @@
+#! /usr/bin/env python
+# encoding: utf-8
+# a1batross, mittorn, 2018
+
+from __future__ import print_function
+from waflib import Logs
+import sys
+import os
+sys.path.append(os.path.realpath('scripts/waflib'))
+
+VERSION = '2.4'
+APPNAME = 'hlsdk-xash3d'
+top = '.'
+
+def options(opt):
+	grp = opt.add_option_group('Common options')
+
+	grp.add_option('-T', '--build-type', action='store', dest='BUILD_TYPE', default = None,
+		help = 'build type: debug, release or none(custom flags)')
+
+	grp.add_option('-8', '--64bits', action = 'store_true', dest = 'ALLOW64', default = False,
+		help = 'allow targetting 64-bit game dlls')
+
+	grp.add_option('--enable-voicemgr', action = 'store_true', dest = 'VOICEMGR', default = False,
+		help = 'enable voice manager')
+
+	grp.add_option('--enable-goldsrc-support', action = 'store_true', dest = 'GOLDSRC', default = False,
+		help = 'enable GoldSource engine support')
+
+	opt.recurse('cl_dll dlls')
+
+	opt.load('xcompile compiler_cxx compiler_c')
+	if sys.platform == 'win32':
+		opt.load('msvc msdev')
+	opt.load('reconfigure')
+
+
+def configure(conf):
+	# Configuration
+	conf.env.GAMEDIR     = 'valve'
+	conf.env.CLIENT_DIR  = 'cl_dlls'
+	conf.env.SERVER_DIR  = 'dlls'
+	conf.env.SERVER_NAME = 'hl'
+	conf.env.PREFIX = ''
+
+	conf.load('reconfigure')
+
+	conf.start_msg('Build type')
+	if conf.options.BUILD_TYPE == None:
+		conf.end_msg('not set', color='RED')
+		conf.fatal('Please set a build type, for example "-T release"')
+	elif not conf.options.BUILD_TYPE in ['fast', 'release', 'debug', 'nooptimize', 'sanitize', 'none']:
+		conf.end_msg(conf.options.BUILD_TYPE, color='RED')
+		conf.fatal('Invalid build type. Valid are "debug", "release" or "none"')
+	conf.end_msg(conf.options.BUILD_TYPE)
+
+	# -march=native should not be used
+	if conf.options.BUILD_TYPE == 'fast':
+	    Logs.warn('WARNING: \'fast\' build type should not be used in release builds')
+
+	conf.env.VOICEMGR    = conf.options.VOICEMGR
+	conf.env.GOLDSRC     = conf.options.GOLDSRC
+
+	# Force XP compability, all build targets should add
+	# subsystem=bld.env.MSVC_SUBSYSTEM
+	# TODO: wrapper around bld.stlib, bld.shlib and so on?
+	conf.env.MSVC_SUBSYSTEM = 'WINDOWS,5.01'
+	conf.env.MSVC_TARGETS = ['x86'] # explicitly request x86 target for MSVC
+	if sys.platform == 'win32':
+		conf.load('msvc msdev')
+	conf.load('xcompile compiler_c compiler_cxx')
+
+	if conf.env.DEST_OS2 == 'android':
+		conf.options.ALLOW64 = True
+		conf.options.GOLDSRC = False
+		conf.env.SERVER_NAME = 'server' # can't be any other name, until specified
+
+	# print(conf.options.ALLOW64)
+
+	conf.env.BIT32_MANDATORY = not conf.options.ALLOW64
+	conf.env.BIT32_ALLOW64 = conf.options.ALLOW64
+	conf.load('force_32bit')
+
+	if conf.env.DEST_SIZEOF_VOID_P == 4:
+		Logs.info('NOTE: will build game dlls for 32-bit target')
+	else:
+		Logs.warn('WARNING: 64-bit game dlls may be unstable')
+
+	linker_flags = {
+		'common': {
+			'msvc':	   ['/DEBUG'], # always create PDB, doesn't affect result binaries
+			'gcc':	   ['-Wl,--no-undefined']
+		},
+		'sanitize': {
+			'gcc':	   ['-fsanitize=undefined', '-fsanitize=address'],
+		}
+	}
+
+	compiler_c_cxx_flags = {
+		'common': {
+			'msvc':	   ['/D_USING_V110_SDK71_', '/Zi', '/FS'],
+			'clang':   ['-g', '-gdwarf-2'],
+			'gcc':	   ['-g', '-Werror=implicit-function-declaration', '-fdiagnostics-color=always']
+		},
+		'fast': {
+			'msvc':	   ['/O2', '/Oy'], #todo: check /GL /LTCG
+			'gcc':	   ['-Ofast', '-march=native', '-funsafe-math-optimizations', '-funsafe-loop-optimizations', '-fomit-frame-pointer'],
+			'default': ['-O3']
+		},
+		'release': {
+			'msvc':	   ['/O2'],
+			'default': ['-O3']
+		},
+		'debug': {
+			'msvc':	   ['/O1'],
+			'gcc':	   ['-Og'],
+			'default': ['-O1']
+		},
+		'sanitize': {
+			'msvc':	   ['/Od', '/RTC1'],
+			'gcc':	   ['-Og', '-fsanitize=undefined', '-fsanitize=address'],
+			'default': ['-O1']
+		},
+		'nooptimize': {
+			'msvc':	   ['/Od'],
+			'default': ['-O0']
+		}
+	}
+
+	conf.env.append_unique('CFLAGS', conf.get_flags_by_type(
+	    compiler_c_cxx_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC))
+	conf.env.append_unique('CXXFLAGS', conf.get_flags_by_type(
+	    compiler_c_cxx_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC))
+	conf.env.append_unique('LINKFLAGS', conf.get_flags_by_type(
+	    linker_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC))
+
+	if conf.env.COMPILER_CC == 'msvc':
+		conf.env.append_unique('DEFINES', ['_CRT_SECURE_NO_WARNINGS','_CRT_NONSTDC_NO_DEPRECATE'])
+	else:
+		conf.env.append_unique('DEFINES', ['stricmp=strcasecmp','strnicmp=strncasecmp','_LINUX','LINUX','_snprintf=snprintf','_vsnprintf=vsnprintf'])
+		cflags = ['-fvisibility=hidden','-Wno-write-strings']
+		conf.env.append_unique('CFLAGS', cflags)
+		conf.env.append_unique('CXXFLAGS', cflags + ['-Wno-invalid-offsetof', '-fno-rtti', '-fno-exceptions'])
+
+	# strip lib from pattern
+	if conf.env.DEST_OS in ['linux', 'darwin'] and conf.env.DEST_OS2 not in ['android']:
+		if conf.env.cshlib_PATTERN.startswith('lib'):
+			conf.env.cshlib_PATTERN = conf.env.cshlib_PATTERN[3:]
+		if conf.env.cxxshlib_PATTERN.startswith('lib'):
+			conf.env.cxxshlib_PATTERN = conf.env.cxxshlib_PATTERN[3:]
+
+	conf.env.append_unique('DEFINES', 'CLIENT_WEAPONS')
+
+	conf.recurse('cl_dll dlls')
+
+def build(bld):
+	bld.recurse('cl_dll dlls')
+		
+		
+