text:
import ctypes
import windows.generated_def as gdef

from ..apiproxy import ApiProxy, NeededParameter
from ..error import (fail_on_zero,
                        no_error_check,
                        result_is_handle,
                        succeed_on_zero,
                        fail_on_minus_one)

class Kernel32Proxy(ApiProxy):
    APIDLL = "kernel32"
    default_error_check = staticmethod(fail_on_zero)

# Process

@Kernel32Proxy()
def GetCurrentProcess():
    return GetCurrentProcess.ctypes_function()

@Kernel32Proxy()
def ExitProcess(uExitCode):
   return ExitProcess.ctypes_function(uExitCode)

@Kernel32Proxy()
def TerminateProcess(hProcess, uExitCode):
    return TerminateProcess.ctypes_function(hProcess, uExitCode)

@Kernel32Proxy()
def GetExitCodeProcess(hProcess, lpExitCode):
    return GetExitCodeProcess.ctypes_function(hProcess, lpExitCode)

@Kernel32Proxy()
def GetProcessId(Process):
    return GetProcessId.ctypes_function(Process)

@Kernel32Proxy()
def CreateProcessA(lpApplicationName, lpCommandLine=None, lpProcessAttributes=None, lpThreadAttributes=None, bInheritHandles=False,
                   dwCreationFlags=0, lpEnvironment=None, lpCurrentDirectory=None, lpStartupInfo=None, lpProcessInformation=None):
    if lpStartupInfo is None:
        StartupInfo = gdef.STARTUPINFOA()
        StartupInfo.cb = ctypes.sizeof(StartupInfo)
        StartupInfo.dwFlags = gdef.STARTF_USESHOWWINDOW
        StartupInfo.wShowWindow = gdef.SW_HIDE
        lpStartupInfo = ctypes.byref(StartupInfo)
    if lpProcessInformation is None:
        lpProcessInformation = ctypes.byref(gdef.PROCESS_INFORMATION())
    return CreateProcessA.ctypes_function(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation)

@Kernel32Proxy()
def CreateProcessW(lpApplicationName, lpCommandLine=None, lpProcessAttributes=None, lpThreadAttributes=None, bInheritHandles=False,
                   dwCreationFlags=0, lpEnvironment=None, lpCurrentDirectory=None, lpStartupInfo=None, lpProcessInformation=None):
    if lpStartupInfo is None:
        StartupInfo = gdef.STARTUPINFOW()
        StartupInfo.cb = ctypes.sizeof(StartupInfo)
        StartupInfo.dwFlags = gdef.STARTF_USESHOWWINDOW
        StartupInfo.wShowWindow = gdef.SW_HIDE
        lpStartupInfo = ctypes.byref(StartupInfo)
    if lpProcessInformation is None:
        lpProcessInformation = ctypes.byref(gdef.PROCESS_INFORMATION())
    return CreateProcessW.ctypes_function(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation)

@Kernel32Proxy()
def OpenProcess(dwDesiredAccess=gdef.PROCESS_ALL_ACCESS, bInheritHandle=0, dwProcessId=NeededParameter):
    return OpenProcess.ctypes_function(dwDesiredAccess, bInheritHandle, dwProcessId)

## Process Infos
@Kernel32Proxy()
def GetProcessTimes(hProcess, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime):
    return GetProcessTimes.ctypes_function(hProcess, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime)

@Kernel32Proxy()
def GetPriorityClass(hProcess):
    return GetPriorityClass.ctypes_function(hProcess)

@Kernel32Proxy()
def SetPriorityClass(hProcess, dwPriorityClass):
    return SetPriorityClass.ctypes_function(hProcess, dwPriorityClass)

PROCESS_MITIGATION_STUCTS = (gdef.PROCESS_MITIGATION_ASLR_POLICY,
                                gdef.PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY,
                                gdef.PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY,
                                gdef.PROCESS_MITIGATION_DEP_POLICY,
                                gdef.PROCESS_MITIGATION_DYNAMIC_CODE_POLICY,
                                gdef.PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY,
                                gdef.PROCESS_MITIGATION_IMAGE_LOAD_POLICY,
                                gdef.PROCESS_MITIGATION_POLICY,
                                gdef.PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY,
                                gdef.PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY)

@Kernel32Proxy()
def GetProcessMitigationPolicy(hProcess, MitigationPolicy, lpBuffer, dwLength=None):
    if dwLength is None:
        dwLength = ctypes.sizeof(lpBuffer)
    return GetProcessMitigationPolicy.ctypes_function(hProcess, MitigationPolicy, lpBuffer, dwLength)

@Kernel32Proxy()
def SetProcessMitigationPolicy(MitigationPolicy, lpBuffer, dwLength=None):
    if dwLength is None:
        dwLength = ctypes.sizeof(lpBuffer)
    if isinstance(lpBuffer, PROCESS_MITIGATION_STUCTS):
        lpBuffer = ctypes.byref(lpBuffer)
    return SetProcessMitigationPolicy.ctypes_function(MitigationPolicy, lpBuffer, dwLength)

@Kernel32Proxy()
def GetProcessDEPPolicy(hProcess, lpFlags, lpPermanent):
    return GetProcessDEPPolicy.ctypes_function(hProcess, lpFlags, lpPermanent)

## Process Infos ThreadAttribute

# ProcThreadAttributeList
def initializeprocthreadattributelist_error_check(func_name, result, func, args):
    if result:
        return args
    error = GetLastError()
    if error == gdef.ERROR_INSUFFICIENT_BUFFER and args[0] is None:
        return args
    raise WinproxyError(func_name)

@Kernel32Proxy(error_check=initializeprocthreadattributelist_error_check)
def InitializeProcThreadAttributeList(lpAttributeList=None, dwAttributeCount=NeededParameter, dwFlags=0, lpSize=NeededParameter):
    return InitializeProcThreadAttributeList.ctypes_function(lpAttributeList, dwAttributeCount, dwFlags, lpSize)

@Kernel32Proxy()
def UpdateProcThreadAttribute(lpAttributeList, dwFlags=0, Attribute=NeededParameter, lpValue=NeededParameter, cbSize=NeededParameter, lpPreviousValue=None, lpReturnSize=None):
    return UpdateProcThreadAttribute.ctypes_function(lpAttributeList, dwFlags, Attribute, lpValue, cbSize, lpPreviousValue, lpReturnSize)

@Kernel32Proxy()
def DeleteProcThreadAttributeList(lpAttributeList):
    return DeleteProcThreadAttributeList.ctypes_function(lpAttributeList)

## Process-module

@Kernel32Proxy()
def GetModuleHandleA(lpModuleName):
    return GetModuleHandleA.ctypes_function(lpModuleName)

@Kernel32Proxy()
def GetModuleHandleW(lpModuleName):
    return GetModuleHandleW.ctypes_function(lpModuleName)

@Kernel32Proxy()
def GetModuleFileNameA(hModule, lpFilename, nSize):
    return GetModuleFileNameA.ctypes_function(hModule, lpFilename, nSize)

@Kernel32Proxy()
def GetModuleFileNameW(hModule, lpFilename, nSize):
    return GetModuleFileNameW.ctypes_function(hModule, lpFilename, nSize)

## Thread

@Kernel32Proxy()
def GetExitCodeThread(hThread, lpExitCode):
    return GetExitCodeThread.ctypes_function(hThread, lpExitCode)

@Kernel32Proxy()
def GetCurrentThread():
    return GetCurrentThread.ctypes_function()

@Kernel32Proxy()
def GetCurrentThreadId():
    return GetCurrentThreadId.ctypes_function()

@Kernel32Proxy()
def TerminateThread(hThread, dwExitCode):
    return TerminateThread.ctypes_function(hThread, dwExitCode)

@Kernel32Proxy()
def ExitThread(dwExitCode):
    return ExitThread.ctypes_function(dwExitCode)

@Kernel32Proxy(error_check=fail_on_minus_one)
def ResumeThread(hThread):
    return ResumeThread.ctypes_function(hThread)

@Kernel32Proxy(error_check=fail_on_minus_one)
def SuspendThread(hThread):
    return SuspendThread.ctypes_function(hThread)

@Kernel32Proxy()
def GetThreadId(Thread):
    return GetThreadId.ctypes_function(Thread)

@Kernel32Proxy()
def CreateThread(lpThreadAttributes=None, dwStackSize=0, lpStartAddress=NeededParameter, lpParameter=NeededParameter, dwCreationFlags=0, lpThreadId=None):
    return CreateThread.ctypes_function(lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId)

@Kernel32Proxy()
def CreateRemoteThread(hProcess=NeededParameter, lpThreadAttributes=None, dwStackSize=0,
                       lpStartAddress=NeededParameter, lpParameter=NeededParameter, dwCreationFlags=0, lpThreadId=None):
    return CreateRemoteThread.ctypes_function(hProcess, lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId)

@Kernel32Proxy()
def GetThreadContext(hThread, lpContext):
    # TODO: RM ME IF TEST PASS
    # if lpContext is None:
        # Context = CONTEXT()
        # context.ContextFlags = CONTEXT_FULL | CONTEXT_DEBUG_REGISTERS
        # lpContext = ctypes.byref(Context)
    return GetThreadContext.ctypes_function(hThread, lpContext)

@Kernel32Proxy()
def SetThreadContext(hThread, lpContext):
    return SetThreadContext.ctypes_function(hThread, lpContext)

@Kernel32Proxy()
def OpenThread(dwDesiredAccess=gdef.THREAD_ALL_ACCESS, bInheritHandle=0, dwThreadId=NeededParameter):
    return OpenThread.ctypes_function(dwDesiredAccess, bInheritHandle, dwThreadId)

@Kernel32Proxy()
def SetThreadAffinityMask(hThread=None, dwThreadAffinityMask=NeededParameter):
    """If hThread is not given, it will be the current thread"""
    if hThread is None:
        hThread = GetCurrentThread()
    return SetThreadAffinityMask.ctypes_function(hThread, dwThreadAffinityMask)

## Memory

@Kernel32Proxy(error_check=succeed_on_zero)
def LocalFree(hMem):
    return LocalFree.ctypes_function(hMem)

@Kernel32Proxy()
def VirtualAlloc(lpAddress=0, dwSize=NeededParameter, flAllocationType=gdef.MEM_COMMIT, flProtect=gdef.PAGE_EXECUTE_READWRITE):
    return VirtualAlloc.ctypes_function(lpAddress, dwSize, flAllocationType, flProtect)

@Kernel32Proxy()
def VirtualFree(lpAddress, dwSize=0, dwFreeType=gdef.MEM_RELEASE):
    return VirtualFree.ctypes_function(lpAddress, dwSize, dwFreeType)

@Kernel32Proxy()
def VirtualProtect(lpAddress, dwSize, flNewProtect, lpflOldProtect=None):
    if lpflOldProtect is None:
        lpflOldProtect = ctypes.byref(gdef.DWORD())
    return VirtualProtect.ctypes_function(lpAddress, dwSize, flNewProtect, lpflOldProtect)

## Memory remote

@Kernel32Proxy()
def VirtualQueryEx(hProcess, lpAddress, lpBuffer, dwLength):
    return VirtualQueryEx.ctypes_function(hProcess, lpAddress, lpBuffer, dwLength)

@Kernel32Proxy()
def VirtualAllocEx(hProcess, lpAddress=0, dwSize=NeededParameter, flAllocationType=gdef.MEM_COMMIT, flProtect=gdef.PAGE_EXECUTE_READWRITE):
    return VirtualAllocEx.ctypes_function(hProcess, lpAddress, dwSize, flAllocationType, flProtect)

@Kernel32Proxy()
def VirtualFreeEx(hProcess, lpAddress, dwSize=0, dwFreeType=gdef.MEM_RELEASE):
    return VirtualFreeEx.ctypes_function(hProcess, lpAddress, dwSize, dwFreeType)

@Kernel32Proxy()
def VirtualProtectEx(hProcess, lpAddress, dwSize, flNewProtect, lpflOldProtect=None):
    if lpflOldProtect is None:
        lpflOldProtect = ctypes.byref(gdef.DWORD())
    return VirtualProtectEx.ctypes_function(hProcess, lpAddress, dwSize, flNewProtect, lpflOldProtect)

@Kernel32Proxy()
def ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead=None):
    return ReadProcessMemory.ctypes_function(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead)

@Kernel32Proxy()
def WriteProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize=None, lpNumberOfBytesWritten=None):
    """Computer nSize with len(lpBuffer) if not given"""
    if nSize is None:
        nSize = len(lpBuffer)
    return WriteProcessMemory.ctypes_function(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesWritten)

## Error

@Kernel32Proxy(error_check=no_error_check)
def GetLastError():
    return GetLastError.ctypes_function()

## Handle

@Kernel32Proxy()
def CloseHandle(hObject):
    return CloseHandle.ctypes_function(hObject)

@Kernel32Proxy()
def DuplicateHandle(hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, lpTargetHandle, dwDesiredAccess=0, bInheritHandle=False, dwOptions=0):
    return DuplicateHandle.ctypes_function(hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions)

## Process Modules
@Kernel32Proxy()
def GetProcAddress(hModule, lpProcName):
    return GetProcAddress.ctypes_function(hModule, lpProcName)

@Kernel32Proxy()
def LoadLibraryA(lpFileName):
    return LoadLibraryA.ctypes_function(lpFileName)

@Kernel32Proxy()
def LoadLibraryW(lpFileName):
    return LoadLibraryW.ctypes_function(lpFileName)

@Kernel32Proxy()
def LoadLibraryExA(lpLibFileName, hFile, dwFlags):
    return LoadLibraryExA.ctypes_function(lpLibFileName, hFile, dwFlags)

@Kernel32Proxy()
def LoadLibraryExW(lpLibFileName, hFile, dwFlags):
    return LoadLibraryExW.ctypes_function(lpLibFileName, hFile, dwFlags)

@Kernel32Proxy()
def FreeLibrary(hLibModule):
    return FreeLibrary.ctypes_function(hLibModule)

## Version

@Kernel32Proxy()
def GetVersionExA(lpVersionInformation):
    return GetVersionExA.ctypes_function(lpVersionInformation)

@Kernel32Proxy()
def GetVersionExW(lpVersionInformation):
    return GetVersionExW.ctypes_function(lpVersionInformation)

## Hardware

@Kernel32Proxy()
def GetCurrentProcessorNumber():
    return GetCurrentProcessorNumber.ctypes_function()

## Console

@Kernel32Proxy()
def AllocConsole():
    return AllocConsole.ctypes_function()

@Kernel32Proxy()
def FreeConsole():
    return FreeConsole.ctypes_function()

@Kernel32Proxy()
def SetConsoleCtrlHandler(HandlerRoutine, Add):
    return SetConsoleCtrlHandler.ctypes_function(HandlerRoutine, Add)

@Kernel32Proxy()
def GetStdHandle(nStdHandle):
    return GetStdHandle.ctypes_function(nStdHandle)

@Kernel32Proxy()
def SetStdHandle(nStdHandle, hHandle):
    return SetStdHandle.ctypes_function(nStdHandle, hHandle)

## System

@Kernel32Proxy()
def GetComputerNameA(lpBuffer, lpnSize):
    return GetComputerNameA.ctypes_function(lpBuffer, lpnSize)

@Kernel32Proxy()
def GetComputerNameW(lpBuffer, lpnSize):
    return GetComputerNameW.ctypes_function(lpBuffer, lpnSize)

@Kernel32Proxy()
def GetComputerNameExA(NameType, lpBuffer, nSize):
    return GetComputerNameExA.ctypes_function(NameType, lpBuffer, nSize)

@Kernel32Proxy()
def GetComputerNameExW(NameType, lpBuffer, nSize):
    return GetComputerNameExW.ctypes_function(NameType, lpBuffer, nSize)

@Kernel32Proxy()
def GetWindowsDirectoryA(lpBuffer, uSize=None):
    if uSize is None:
        uSize = gdef.DWORD(len(lpBuffer))
    return GetWindowsDirectoryA.ctypes_function(lpBuffer, uSize)

@Kernel32Proxy()
def GetWindowsDirectoryW(lpBuffer, uSize=None):
    if uSize is None:
        uSize = gdef.DWORD(len(lpBuffer))
    return GetWindowsDirectoryW.ctypes_function(lpBuffer, uSize)

@Kernel32Proxy()
def GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion, dwSpMinorVersion, pdwReturnedProductType):
   return GetProductInfo.ctypes_function(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion, dwSpMinorVersion, pdwReturnedProductType)

## Other

@Kernel32Proxy(error_check=no_error_check)
def lstrcmpA(lpString1, lpString2):
    return lstrcmpA.ctypes_function(lpString1, lpString2)

@Kernel32Proxy(error_check=no_error_check)
def lstrcmpW(lpString1, lpString2):
    return lstrcmpW.ctypes_function(lpString1, lpString2)

@Kernel32Proxy("Sleep", no_error_check)
def Sleep(dwMilliseconds):
    return Sleep.ctypes_function(dwMilliseconds)

@Kernel32Proxy("SleepEx", no_error_check)
def SleepEx(dwMilliseconds, bAlertable=False):
    return SleepEx.ctypes_function(dwMilliseconds, bAlertable)

@Kernel32Proxy(error_check=succeed_on_zero)
def WaitForSingleObject(hHandle, dwMilliseconds=gdef.INFINITE):
    return WaitForSingleObject.ctypes_function(hHandle, dwMilliseconds)

@Kernel32Proxy()
def DeviceIoControl(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize=None, lpOutBuffer=NeededParameter, nOutBufferSize=None, lpBytesReturned=None, lpOverlapped=None):
    if nInBufferSize is None:
        nInBufferSize = len(lpInBuffer)
    if nOutBufferSize is None:
        nOutBufferSize = len(lpOutBuffer)
    if lpBytesReturned is None:
        # Some windows check 0 / others does not
        lpBytesReturned = ctypes.byref(gdef.DWORD())
    return DeviceIoControl.ctypes_function(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped)

# Wow64

@Kernel32Proxy()
def Wow64DisableWow64FsRedirection(OldValue=None):
    if OldValue is None:
        OldValue = gdef.PVOID()
    return Wow64DisableWow64FsRedirection.ctypes_function(OldValue)

@Kernel32Proxy()
def Wow64RevertWow64FsRedirection(OldValue=None):
    if OldValue is None:
        OldValue = gdef.PVOID()
    return Wow64RevertWow64FsRedirection.ctypes_function(OldValue)

@Kernel32Proxy()
def Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection):
    return Wow64EnableWow64FsRedirection.ctypes_function(Wow64FsEnableRedirection)

@Kernel32Proxy()
def Wow64GetThreadContext(hThread, lpContext):
    return Wow64GetThreadContext.ctypes_function(hThread, lpContext)

@Kernel32Proxy()
def Wow64SetThreadContext(hThread, lpContext):
    return Wow64SetThreadContext.ctypes_function(hThread, lpContext)

## File

@Kernel32Proxy(error_check=result_is_handle)
def CreateFileA(lpFileName, dwDesiredAccess=gdef.GENERIC_READ, dwShareMode=0, lpSecurityAttributes=None, dwCreationDisposition=gdef.OPEN_EXISTING, dwFlagsAndAttributes=gdef.FILE_ATTRIBUTE_NORMAL, hTemplateFile=None):
    return CreateFileA.ctypes_function(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)

@Kernel32Proxy(error_check=result_is_handle)
def CreateFileW(lpFileName, dwDesiredAccess=gdef.GENERIC_READ, dwShareMode=0, lpSecurityAttributes=None, dwCreationDisposition=gdef.OPEN_EXISTING, dwFlagsAndAttributes=gdef.FILE_ATTRIBUTE_NORMAL, hTemplateFile=None):
    return CreateFileW.ctypes_function(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)

@Kernel32Proxy(error_check=result_is_handle)
def CreateFileTransactedA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile, hTransaction, pusMiniVersion, pExtendedParameter):
    return CreateFileTransactedA.ctypes_function(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile, hTransaction, pusMiniVersion, pExtendedParameter)

@Kernel32Proxy(error_check=result_is_handle)
def CreateFileTransactedW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile, hTransaction, pusMiniVersion, pExtendedParameter):
    return CreateFileTransactedW.ctypes_function(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile, hTransaction, pusMiniVersion, pExtendedParameter)

@Kernel32Proxy()
def ReadFile(hFile, lpBuffer, nNumberOfBytesToRead=None, lpNumberOfBytesRead=None, lpOverlapped=None):
    if nNumberOfBytesToRead is None:
        nNumberOfBytesToRead = len(lpBuffer)
    if lpOverlapped is None and lpNumberOfBytesRead is None:
        lpNumberOfBytesRead = ctypes.byref(gdef.DWORD())
    return ReadFile.ctypes_function(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped)

@Kernel32Proxy()
def WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite=None, lpNumberOfBytesWritten=None, lpOverlapped=None):
    if nNumberOfBytesToWrite is None:
        nNumberOfBytesToWrite = len(lpBuffer)
    if lpOverlapped is None and lpNumberOfBytesWritten is None:
        lpNumberOfBytesWritten = ctypes.byref(gdef.DWORD())
    return WriteFile.ctypes_function(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped)

@Kernel32Proxy()
def CreateFileMappingA(hFile, lpFileMappingAttributes=None, flProtect=gdef.PAGE_READWRITE, dwMaximumSizeHigh=0, dwMaximumSizeLow=NeededParameter, lpName=NeededParameter):
    return CreateFileMappingA.ctypes_function(hFile, lpFileMappingAttributes, flProtect, dwMaximumSizeHigh, dwMaximumSizeLow, lpName)

@Kernel32Proxy()
def CreateFileMappingW(hFile, lpFileMappingAttributes=None, flProtect=gdef.PAGE_READWRITE, dwMaximumSizeHigh=0, dwMaximumSizeLow=0, lpName=NeededParameter):
    return CreateFileMappingW.ctypes_function(hFile, lpFileMappingAttributes, flProtect, dwMaximumSizeHigh, dwMaximumSizeLow, lpName)

@Kernel32Proxy()
def OpenFileMappingW(dwDesiredAccess, bInheritHandle, lpName):
    return OpenFileMappingW.ctypes_function(dwDesiredAccess, bInheritHandle, lpName)

@Kernel32Proxy()
def OpenFileMappingA(dwDesiredAccess, bInheritHandle, lpName):
    return OpenFileMappingA.ctypes_function(dwDesiredAccess, bInheritHandle, lpName)

@Kernel32Proxy()
def MapViewOfFile(hFileMappingObject, dwDesiredAccess=gdef.FILE_MAP_ALL_ACCESS, dwFileOffsetHigh=0, dwFileOffsetLow=0, dwNumberOfBytesToMap=NeededParameter):
    return MapViewOfFile.ctypes_function(hFileMappingObject, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap)

@Kernel32Proxy()
def UnmapViewOfFile(lpBaseAddress):
    return UnmapViewOfFile.ctypes_function(lpBaseAddress)

@Kernel32Proxy()
def FindFirstFileA(lpFileName, lpFindFileData):
    return FindFirstFileA.ctypes_function(lpFileName, lpFindFileData)

@Kernel32Proxy()
def FindFirstFileW(lpFileName, lpFindFileData):
    return FindFirstFileW.ctypes_function(lpFileName, lpFindFileData)

@Kernel32Proxy()
def FindNextFileA(hFindFile, lpFindFileData):
    return FindNextFileA.ctypes_function(hFindFile, lpFindFileData)

@Kernel32Proxy()
def FindNextFileW(hFindFile, lpFindFileData):
    return FindNextFileW.ctypes_function(hFindFile, lpFindFileData)

@Kernel32Proxy()
def FindClose(hFindFile):
    return FindClose.ctypes_function(hFindFile)

@Kernel32Proxy()
def FindFirstChangeNotificationA(lpPathName, bWatchSubtree, dwNotifyFilter):
    return FindFirstChangeNotificationA.ctypes_function(lpPathName, bWatchSubtree, dwNotifyFilter)

@Kernel32Proxy()
def FindFirstChangeNotificationW(lpPathName, bWatchSubtree, dwNotifyFilter):
    return FindFirstChangeNotificationW.ctypes_function(lpPathName, bWatchSubtree, dwNotifyFilter)

@Kernel32Proxy()
def FindNextChangeNotification(hChangeHandle):
    return FindNextChangeNotification.ctypes_function(hChangeHandle)

@Kernel32Proxy()
def FindCloseChangeNotification(hChangeHandle):
    return FindCloseChange
    Notification.ctypes_function(hChangeHandle)

@Kernel32Proxy()
def FindNextChangeNotification(hChangeHandle):
    return FindNextChangeNotification.ctypes_function(hChangeHandle)

@Kernel32Proxy()
def ReadDirectoryChangesW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine):
    return ReadDirectoryChangesW.ctypes_function(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine)

@Kernel32Proxy()
def ReadDirectoryChangesExW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass):
    return ReadDirectoryChangesExW.ctypes_function(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass)

## Tlhelp (snapshoot)

@Kernel32Proxy()
def CreateToolhelp32Snapshot(dwFlags, th32ProcessID=0):
    return CreateToolhelp32Snapshot.ctypes_function(dwFlags, th32ProcessID)

@Kernel32Proxy()
def Thread32First(hSnapshot, lpte):
    """Set byref(lpte) if needed"""
    if type(lpte) == gdef.THREADENTRY32:
        lpte = ctypes.byref(lpte)
    return Thread32First.ctypes_function(hSnapshot, lpte)

@Kernel32Proxy(error_check=no_error_check)
def Thread32Next(hSnapshot, lpte):
    """Set byref(lpte) if needed"""
    if type(lpte) == gdef.THREADENTRY32:
        lpte = ctypes.byref(lpte)
    return Thread32Next.ctypes_function(hSnapshot, lpte)

@Kernel32Proxy()
def Process32First(hSnapshot, lpte):
    return Process32First.ctypes_function(hSnapshot, lpte)

@Kernel32Proxy(error_check=no_error_check)
def Process32Next(hSnapshot, lpte):
    return Process32Next.ctypes_function(hSnapshot, lpte)

@Kernel32Proxy()
def Process32FirstW(hSnapshot, lppe):
    return Process32FirstW.ctypes_function(hSnapshot, lppe)

@Kernel32Proxy(error_check=no_error_check)
def Process32NextW(hSnapshot, lppe):
    return Process32NextW.ctypes_function(hSnapshot, lppe)

## VEH

@Kernel32Proxy()
def AddVectoredContinueHandler(FirstHandler=1, VectoredHandler=NeededParameter):
    return AddVectoredContinueHandler.ctypes_function(FirstHandler, VectoredHandler)

@Kernel32Proxy()
def AddVectoredExceptionHandler(FirstHandler=1, VectoredHandler=NeededParameter):
    return AddVectoredExceptionHandler.ctypes_function(FirstHandler, VectoredHandler)

@Kernel32Proxy()
def RemoveVectoredExceptionHandler(Handler):
    return RemoveVectoredExceptionHandler.ctypes_function(Handler)

## Event

@Kernel32Proxy()
def OpenEventA(dwDesiredAccess, bInheritHandle, lpName):
    return OpenEventA.ctypes_function(dwDesiredAccess, bInheritHandle, lpName)

@Kernel32Proxy()
def OpenEventW(dwDesiredAccess, bInheritHandle, lpName):
    return OpenEventW.ctypes_function(dwDesiredAccess, bInheritHandle, lpName)

@Kernel32Proxy()
def CreateEventA(lpEventAttributes, bManualReset, bInitialState, lpName):
    return CreateEventA.ctypes_function(lpEventAttributes, bManualReset, bInitialState, lpName)

@Kernel32Proxy()
def CreateEventW(lpEventAttributes, bManualReset, bInitialState, lpName):
    return CreateEventW.ctypes_function(lpEventAttributes, bManualReset, bInitialState, lpName)

@Kernel32Proxy()
def CreateEventExA(lpEventAttributes, lpName, dwFlags, dwDesiredAccess):
    return CreateEventExA.ctypes_function(lpEventAttributes, lpName, dwFlags, dwDesiredAccess)

@Kernel32Proxy()
def CreateEventExW(lpEventAttributes, lpName, dwFlags, dwDesiredAccess):
    return CreateEventExW.ctypes_function(lpEventAttributes, lpName, dwFlags, dwDesiredAccess)

## Path

@Kernel32Proxy()
def GetLongPathNameA(lpszShortPath, lpszLongPath, cchBuffer=None):
    if cchBuffer is None:
        cchBuffer = len(lpszLongPath)
    return GetLongPathNameA.ctypes_function(lpszShortPath, lpszLongPath, cchBuffer)

@Kernel32Proxy()
def GetLongPathNameW(lpszShortPath, lpszLongPath, cchBuffer=None):
    if cchBuffer is None:
        cchBuffer = len(lpszLongPath)
    return GetLongPathNameW.ctypes_function(lpszShortPath, lpszLongPath, cchBuffer)

@Kernel32Proxy()
def GetShortPathNameA(lpszLongPath, lpszShortPath, cchBuffer=None):
    if cchBuffer is None:
        cchBuffer = len(lpszShortPath)
    return GetShortPathNameA.ctypes_function(lpszLongPath, lpszShortPath, cchBuffer)

@Kernel32Proxy()
def GetShortPathNameW(lpszLongPath, lpszShortPath, cchBuffer=None):
    if cchBuffer is None:
        cchBuffer = len(lpszShortPath)
    return GetShortPathNameW.ctypes_function(lpszLongPath, lpszShortPath, cchBuffer)

# Debug-API

@Kernel32Proxy(error_check=no_error_check)
def IsDebuggerPresent():
   return IsDebuggerPresent.ctypes_function()

@Kernel32Proxy()
def WaitForDebugEvent(lpDebugEvent, dwMilliseconds=gdef.INFINITE):
    return WaitForDebugEvent.ctypes_function(lpDebugEvent, dwMilliseconds)

@Kernel32Proxy()
def DebugBreak():
    return DebugBreak.ctypes_function()

@Kernel32Proxy()
def ContinueDebugEvent(dwProcessId, dwThreadId, dwContinueStatus):
    return ContinueDebugEvent.ctypes_function(dwProcessId, dwThreadId, dwContinueStatus)

@Kernel32Proxy()
def DebugActiveProcess(dwProcessId):
    return DebugActiveProcess.ctypes_function(dwProcessId)

@Kernel32Proxy()
def DebugActiveProcessStop(dwProcessId):
    return DebugActiveProcessStop.ctypes_function(dwProcessId)

@Kernel32Proxy()
def DebugSetProcessKillOnExit(KillOnExit):
    return DebugSetProcessKillOnExit.ctypes_function(KillOnExit)

@Kernel32Proxy()
def DebugBreakProcess(Process):
    return DebugBreakProcess.ctypes_function(Process)

# Volumes

@Kernel32Proxy()
def GetLogicalDriveStringsA(nBufferLength, lpBuffer):
    return GetLogicalDriveStringsA.ctypes_function(nBufferLength, lpBuffer)

@Kernel32Proxy()
def GetLogicalDriveStringsW(nBufferLength, lpBuffer):
    return GetLogicalDriveStringsW.ctypes_function(nBufferLength, lpBuffer)

@Kernel32Proxy()
def GetVolumeNameForVolumeMountPointA(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength):
    return GetVolumeNameForVolumeMountPointA.ctypes_function(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength)

@Kernel32Proxy()
def GetVolumeNameForVolumeMountPointW(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength):
    return GetVolumeNameForVolumeMountPointW.ctypes_function(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength)

@Kernel32Proxy()
def GetDriveTypeA(lpRootPathName):
    return GetDriveTypeA.ctypes_function(lpRootPathName)

@Kernel32Proxy()
def GetDriveTypeW(lpRootPathName):
    return GetDriveTypeW.ctypes_function(lpRootPathName)

@Kernel32Proxy()
def QueryDosDeviceA(lpDeviceName, lpTargetPath, ucchMax):
    return QueryDosDeviceA.ctypes_function(lpDeviceName, lpTargetPath, ucchMax)

@Kernel32Proxy()
def QueryDosDeviceW(lpDeviceName, lpTargetPath, ucchMax):
    return QueryDosDeviceW.ctypes_function(lpDeviceName, lpTargetPath, ucchMax)

@Kernel32Proxy()
def GetVolumeInformationA(lpRootPathName, lpVolumeNameBuffer, nVolumeNameSize, lpVolumeSerialNumber, lpMaximumComponentLength, lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize):
    if nVolumeNameSize == 0 and lpVolumeNameBuffer is not None:
        nVolumeNameSize = len(lpVolumeNameBuffer)
    if nFileSystemNameSize == 0 and lpFileSystemNameBuffer is not None:
        nFileSystemNameSize = len(lpFileSystemNameBuffer)
    return GetVolumeInformationA.ctypes_function(lpRootPathName, lpVolumeNameBuffer, nVolumeNameSize, lpVolumeSerialNumber, lpMaximumComponentLength, lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize)

@Kernel32Proxy()
def GetVolumeInformationW(lpRootPathName, lpVolumeNameBuffer=None, nVolumeNameSize=0, lpVolumeSerialNumber=None, lpMaximumComponentLength=None, lpFileSystemFlags=None, lpFileSystemNameBuffer=None, nFileSystemNameSize=0):
    if nVolumeNameSize == 0 and lpVolumeNameBuffer is not None:
        nVolumeNameSize = len(lpVolumeNameBuffer)
    if nFileSystemNameSize == 0 and lpFileSystemNameBuffer is not None:
        nFileSystemNameSize = len(lpFileSystemNameBuffer)
    return GetVolumeInformationW.ctypes_function(lpRootPathName, lpVolumeNameBuffer, nVolumeNameSize, lpVolumeSerialNumber, lpMaximumComponentLength, lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize)

@Kernel32Proxy()
def FindFirstVolumeA(lpszVolumeName, cchBufferLength):
    if cchBufferLength is None:
        cchBufferLength = len(lpszVolumeName)
    return FindFirstVolumeA.ctypes_function(lpszVolumeName, cchBufferLength)

@Kernel32Proxy()
def FindFirstVolumeW(lpszVolumeName, cchBufferLength):
    if cchBufferLength is None:
        cchBufferLength = len(lpszVolumeName)
    return FindFirstVolumeW.ctypes_function(lpszVolumeName, cchBufferLength)

@Kernel32Proxy()
def FindNextVolumeA(hFindVolume, lpszVolumeName, cchBufferLength):
    if cchBufferLength is None:
        cchBufferLength = len(lpszVolumeName)
    return FindNextVolumeA.ctypes_function(hFindVolume, lpszVolumeName, cchBufferLength)

@Kernel32Proxy()
def FindNextVolumeW(hFindVolume, lpszVolumeName, cchBufferLength):
    if cchBufferLength is None:
        cchBufferLength = len(lpszVolumeName)
    return FindNextVolumeW.ctypes_function(hFindVolume, lpszVolumeName, cchBufferLength)

# pipe

@Kernel32Proxy()
def CreateNamedPipeA(lpName, dwOpenMode, dwPipeMode, nMaxInstances, nOutBufferSize, nInBufferSize, nDefaultTimeOut, lpSecurityAttributes):
    return CreateNamedPipeA.ctypes_function(lpName, dwOpenMode, dwPipeMode, nMaxInstances, nOutBufferSize, nInBufferSize, nDefaultTimeOut, lpSecurityAttributes)

@Kernel32Proxy()
def CreateNamedPipeW(lpName, dwOpenMode, dwPipeMode, nMaxInstances, nOutBufferSize, nInBufferSize, nDefaultTimeOut, lpSecurityAttributes):
    return CreateNamedPipeW.ctypes_function(lpName, dwOpenMode, dwPipeMode, nMaxInstances, nOutBufferSize, nInBufferSize, nDefaultTimeOut, lpSecurityAttributes)

@Kernel32Proxy()
def ConnectNamedPipe(hNamedPipe, lpOverlapped):
    return ConnectNamedPipe.ctypes_function(hNamedPipe, lpOverlapped)

@Kernel32Proxy()
def SetNamedPipeHandleState(hNamedPipe, lpMode, lpMaxCollectionCount, lpCollectDataTimeout):
    return SetNamedPipeHandleState.ctypes_function(hNamedPipe, lpMode, lpMaxCollectionCount, lpCollectDataTimeout)

@Kernel32Proxy()
def CreatePipe(hReadPipe, hWritePipe, lpPipeAttributes, nSize):
    return CreatePipe.ctypes_function(hReadPipe, hWritePipe, lpPipeAttributes, nSize)

# Firmware

@Kernel32Proxy()
def GetFirmwareEnvironmentVariableA(lpName, lpGuid, pBuffer, nSize):
    return GetFirmwareEnvironmentVariableA.ctypes_function(lpName, lpGuid, pBuffer, nSize)

@Kernel32Proxy()
def GetFirmwareEnvironmentVariableW(lpName, lpGuid, pBuffer, nSize):
    return GetFirmwareEnvironmentVariableW.ctypes_function(lpName, lpGuid, pBuffer, nSize)

@Kernel32Proxy()
def GetFirmwareEnvironmentVariableExA(lpName, lpGuid, pBuffer, nSize, pdwAttribubutes):
    return GetFirmwareEnvironmentVariableExA.ctypes_function(lpName, lpGuid, pBuffer, nSize, pdwAttribubutes)

@Kernel32Proxy()
def GetFirmwareEnvironmentVariableExW(lpName, lpGuid, pBuffer, nSize, pdwAttribubutes):
    return GetFirmwareEnvironmentVariableExW.ctypes_function(lpName, lpGuid, pBuffer, nSize, pdwAttribubutes)

#####

# Time

@Kernel32Proxy(error_check=fail_on_zero)
def FileTimeToSystemTime(lpFileTime, lpSystemTime):
   return FileTimeToSystemTime.ctypes_function(lpFileTime, lpSystemTime)

@Kernel32Proxy(error_check=fail_on_zero)
def SystemTimeToFileTime(lpSystemTime, lpFileTime):
   return SystemTimeToFileTime.ctypes_function(lpSystemTime, lpFileTime)

@Kernel32Proxy(error_check=None)
def GetSystemTime(lpSystemTime):
   return GetSystemTime.ctypes_function(lpSystemTime)

@Kernel32Proxy(error_check=None)
def GetSystemTimeAsFileTime(lpSystemTimeAsFileTime):
   return GetSystemTimeAsFileTime.ctypes_function(lpSystemTimeAsFileTime)

@Kernel32Proxy(error_check=fail_on_zero)
def GetSystemTimes(lpIdleTime, lpKernelTime, lpUserTime):
    return GetSystemTimes.ctypes_function(lpIdleTime, lpKernelTime, lpUserTime)

@Kernel32Proxy(error_check=None)
def GetLocalTime(lpSystemTime):
    return GetLocalTime.ctypes_function(lpSystemTime)

@Kernel32Proxy(error_check=None)
def GetTickCount():
    return GetTickCount.ctypes_function()

@Kernel32Proxy(error_check=None)
def GetTickCount64():
    return GetTickCount64.ctypes_function()

#####

# Heap

@Kernel32Proxy(error_check=fail_on_zero)
def HeapAlloc(hHeap, dwFlags, dwBytes):
    return HeapAlloc.ctypes_function(hHeap, dwFlags, dwBytes)

#####

# Resources

@Kernel32Proxy()
def FindResourceA(hModule, lpName, lpType):
    return FindResourceA.ctypes_function(hModule, lpName, lpType)

@Kernel32Proxy()
def FindResourceW(hModule, lpName, lpType):
    return FindResourceW.ctypes_function(hModule, lpName, lpType)

@Kernel32Proxy()
def SizeofResource(hModule, hResInfo):
    return SizeofResource.ctypes_function(hModule, hResInfo)

@Kernel32Proxy()
def LoadResource(hModule, hResInfo):
    return LoadResource.ctypes_function(hModule, hResInfo)

@Kernel32Proxy()
def LockResource(hResData):
    return LockResource.ctypes_function(hResData)

@Kernel32Proxy()
def FreeResource(hResData):
    return FreeResource.ctypes_function(hResData)

@Kernel32Proxy()
def EnumResourceTypesA(hModule, lpEnumFunc, lParam):
    return EnumResourceTypesA.ctypes_function(hModule, lpEnumFunc, lParam)

@Kernel32Proxy()
def EnumResourceTypesW(hModule, lpEnumFunc, lParam):
    return EnumResourceTypesW.ctypes_function(hModule, lpEnumFunc, lParam)

@Kernel32Proxy()
def EnumResourceNamesA(hModule, lpType, lpEnumFunc, lParam):
    return EnumResourceNamesA.ctypes_function(hModule, lpType, lpEnumFunc, lParam)

@Kernel32Proxy()
def EnumResourceNamesW(hModule, lpType, lpEnumFunc, lParam):
    return EnumResourceNamesW.ctypes_function(hModule, lpType, lpEnumFunc, lParam)


Bastille Days, Milwaukee's popular french festival and one of the nation's largest french-themed celebrations, returns to downtown Milwaukee's Cathedral Square Park, July 11 – 14. The free four-day bash attracts over 250,000 visitors annually who enjoy live music, an international marketplace, chef and wine demos, French and Cajun cuisine, roaming busker entertainment and a signature 43-foot Eiffel Tower replica offering hourly light shows.
Bastille Days is located in Downtown Milwaukee and centered around Cathedral Square Park, providing a unique setting that both residents and visitors of East Town, always find charming.
The event is known for the impromptu street performers, roaming minstrels, and a variety of interactive and musical entertainment. Bastille Days also boasts a wide variety of some of the best restaurant vendors in Milwaukee!
For the safety of everyone, including your dogs, we ask that you please leave your pets at home.
Bastille Days in downtown Milwaukee is the largest French themed outdoor festival in North America. It attracts around 200,000 people. Aligning your company with this popular event gives you excellent exposure, ideal brand placement, and offers a unique opportunity to entertain your clients. Let us customize a sponsorship to fit all of your marketing needs.
To reserve your parking spot, visit the Bastille Days SpotHero Parking Page and book a spot near Cathedral Square Park with rates up to 50% off drive-up.


text:
Sometimes we meet someone, perhaps serendipitously, perhaps not, who shows us a side of ourselves we barely glimpse, a reflection in a shattered mirror, another "me" from an alternate universe.
Below is a story about one of those times, chapter from my book Blue Skyways, now available in print and audio (read by me). However you experience it, I hope you enjoy the ride and that it brings you a blessing!
New from Brant Huddleston
Bhuddles09 · The Wanderer
By eliminating the safety net of comforts in your life, you have the opportunity to free fall in this moment between birth and death, right through the hole of your fear, into the unthreatenable openness which is the source of your gifts.
David Deide
We shared a joint in the parking lot. Then I shook his hand, wished him peace, and he wandered off to the woods with a weathered backpack that looked too big for his lean frame. I knew from my own travels that he will need virtually everything in his pack, and that he's not carrying one ounce more than he has to. Even his memories are too heavy for him, and they are what he is running from.
I picked up Brian on the last day of August from where he was hitchhiking on Rt. 301 in southern Maryland. I was heading south to Richmond, Virginia, and he was on his way to Florida, hoping to dodge a hurricane that was bearing down on the Carolina's. We were together for just a few hours.
Rt. 301 is a "blue" highway that runs north and south parallel to the I-95 interstate. Blue highways are so named for their color on old paper maps. They are the roads people used before the interstates were built. I like them. Blue is where you wander.
Rt. 301 is also a time machine. It's where you go back to the 1950's, 40s, or even the 30s, and where you still see vestiges of an era before the interstates were built ~ a time when 301 was one of the only roads that would get you from Maine to Florida. On 301, I pass by vintage places like the Cadillac Motel with its neon signage, the dilapitated Apehanger Restaurant, and the place where Lincoln assassin John Wilkes Booth was hunted down and killed by a Union soldier, after the barn in which he was hiding was set ablaze.
On 301, I pass by towns like Waldorf, La Plata, Port Tobacco, Punkins Corner, Bowling Green and Fort A.P. Hill, some just a blink, others sprawling with gross collections of quick lube shops, chain restaurants, car lots, and mysterious military labs. I pass by long stretches of bucolic, rolling farmland, petite 19th-century churches with stone encrusted graveyards, and towering bridges over the Potomac and Rappahannock Rivers, under which local folks splash in brown, tepid water. Crab shacks, barbecue joints, and frozen custard stands mingle with giant power stations belching dense clouds of steam into the summer sky, polished white by the sun. I pass by rustic, roadside farmer's stands selling late season peaches, melons, and baskets of blackberries. I pass by old America.
Brian was a skilled wind turbine maintenance technician, making good money with job opportunities all over the world. He was engaged to be married to a woman he'd been dating for five years. Then disaster struck.
"I found her in bed with my best friend," he said. "I didn't say anything. I just turned around and walked away. That's when I started hitchhiking."
A few seconds ticked by. I turned down the radio.
"Wow," I said. "That must have hurt. How are you doing with the heartache?
"I'm getting there," he said, taking a swig from a gallon water jug. "I'm getting there." He'd travelled 6,000 miles in the last five months, and he had more miles to go.
Brian looked like he was in his mid-30s, with prematurely gray hair peeking out from under his tattered red baseball cap, and a few weeks of unkempt beard. He was tautly built and sunburned from miles of walking, sometimes 30 at a stretch, and he had the slightly disheveled look of someone who sleeps outdoors every night. In fact, he said he'd already worn out several pairs of shoes and clothes.
"You'd think I'd have a camo hammock," he said with a chuckle. "But I don't. It's bright blue and white, but it's never been a problem for me. Other things have though."
"Such as what?" I asked him.
"Oh, once I was picked up by a gay guy who turned west when I was heading south. He took me many miles off track before I was able to escape from his truck. Another time I was picked up by some guys selling opioids to Native Americans in North Dakota. I learned they were going to frame me if they got caught. That sucked, but at least I got a good meal from the Indians before I got away."
I learned he had had only one conversation with his former fiancé, where she blamed her dalliance on him. "She said I wasn't paying enough attention to her," he said with a huff. Clearly he was not buying her line of reasoning.
I learned he had been estranged from his biological father all his life, and had adopted his fiancé's father as a surrogate. "Her father and I were very close," he said. "But he died last month. I would have liked to see him one more time, but I was already on the road."
Another wound.
I learned he had plans to keep wandering, down to Florida, then west to Mexico, south through Central America, and then further south to Chile. After that, who knows? Not even him. I guess he'll wander until the pain goes away.
I learned a man can live on Raman noodles you buy on sale at Walmart for 30 cents a pack, and that you can "cook" them by setting them in the sun in a water filled plastic bag.
"Works pretty good," he said.
I gave him all the food I had in my car, a Dunkin' Donuts gift card with $2.32 still left on it, enough for one donut, some protein shakes, and a flask of whiskey. Oh, that plus a hit from my stash. "Thanks man," he said exhaling the pungent smoke. Then he was gone.
Later that day, as I watched a late summer sun set over the roiling green rapids of the James River, I thought about Brian. I wondered if I could have done more, or even if he would have accepted it. I wondered if he would stay dry that night. I wondered how we were different, and how much we were alike, running from someplace to someplace else.
As the afternoon grew late, the air turned cool, and I got up to go myself, the words of an old song came back to me, one that could be the soundtrack to Brian's life, or to any of us who wander but are not lost…a song that calls to the deep within many a man who eases his pain by burning shoe leather and spending nights alone staring at the sky, wondering why. The words, from singer/songwriter James Taylor, go like this:
There is a young cowboy he lives on the range
His horse and his cattle are his only companions
He works in the saddle and he sleeps in the canyons
Waiting for Summer, his pastures to change
And as the moon rises he sits by his fire
Thinking about women and glasses of beer
And closing his eyes as the doggies retire
He sings out a song which is soft but it's clear
As if maybe someone could hear
To Brian, wherever you are…godspeed. Stay dry, and happy trails.

redpajama_set_name: RedPajamaCommonCrawl


The "Marls of Abaco" are a vast expanse of prime, wilderness bonefish habitat, situated along the western shore of Great Abaco Island in the Bahamas. This little fished area stretches some 300 square miles: 30 miles to the north and south, and about 10 miles off the west coast of Abaco Island. The Marls have long been known by well-traveled bonefishermen, along with South Andros Island, as one of the most unique and productive fisheries throughout the 700 mile long Bahamian island chain.
The "Marls" are comprised of hundreds of square miles of mangroves, creeks, cuts and flats, navigable only by shallow draft flats and skiffs, and knowledgeable guides. The unique character of the Marls, which makes it such a perfect bonefish habitat, has spared it from further development and to this day remains one of the best bonefishing destinations in the Bahamas.
Activities for non anglers include: diving or snorkeling, spectacular birding, beaches to visit, some shopping and an amazing golf course, apart from the lodge's facilities that include a swimming pool located only meters from the sea. There is quite a lot of birding to do in Abaco as the island lies directly on the eastern flyway migration route between North and South America. Abaco has more bird species than any other Bahamian island. Green Turtle Cay and Elbow Cay offer spectacular birding. See below for special non angler offers.
Unlike some of the less developed islands in the Bahamas, Abaco has the third largest airport in the Bahamas (Marsh Harbour). Good numbers of direct flights from the U.S. makes traveling easy and the lodge is an easy 15-minute drive from the airport.
Hosting a maximum of eight anglers, the Abaco Lodge is a small, yet world-class operation. Fine cuisine, comfortable lodging, and a leisurely atmosphere go hand and hand with the lodge's dedication to putting anglers on quality fish through their seasoned, expert guides. The management and staff are fully committed to providing each client with the utmost in service and attention to detail, as each client is sure to enjoy the Bahamian fishing trip of a lifetime.
Prices available for non angler and single anglers. Call for info.


Scientists from a leading university in Scotland are heading up a pan-European project to create the most advanced, autonomous, cognitive robot which could help to dramatically reduce the cost of underwater monitoring operations and maintenance within the oil and gas industry.
The team from the Ocean Systems Laboratory (OSL) at Heriot-Watt University is designing a new approach to computational cognition for use in Autonomous Underwater Vehicles (AUVs), with the aim of significantly improving the inspection, repair and maintenance reliability of vehicles used for underwater monitoring.
The system, named PANDORA: Persistent Autonomy through learNing, aDaptation, Observation and Re-plAnning will be trialed on three different AUVs in Scotland and Spain covering in-lab and deep water conditions, to test the system on vehicles and monitor their ability to operate in 'real' environments, overcome challenges, accommodate hardware failures and seek alternative missions when idle.
Following the Deep Water Horizon crisis in 2010, calls were made to dramatically improve the type and intelligence of vehicles used for underwater inspection and intervention, to reduce the opportunity for events of that scale to reoccur.
The European Commission issued a call for ideas on ways to increase the thinking capacity of robots supported by the provision of significant funding for viable projects. Identifying the opportunity to put their expertise to the test, the team of scientists, headed up by Professor David Lane, Founder of SeeByte, a Heriot-Watt spin out company, applied to the Commission with a comprehensive, three year research plan to create and develop Pandora for global commercial use. Their plan was the highest praised out of all responses and the team was duly awarded €2.8M (£2.3M).
Professor Lane explained the background to the project: "The issue with autonomous robots is that they are not very good at being autonomous. They often get stuck or ask for help and generally only succeed in familiar environments, when carrying out simple tasks. Over the next three years, our challenge is to develop a computational prpgramme which will enable robots to recognise failure and have the intelligence to respond to it.
Libor Král, Head of Unit, Cognitive Systems and Robotics, DG Information Society and Media, European Commission, said: "PANDORA is a particularly exciting robotics project undertaken by top European experts.
The project is being run in partnership with five universities across Europe – Instituto Italiano di Tecnologia, University of Girona, King's College London and National Technical University of Athens, with steering committee members from BP and SubSea7.
More information can be found at http://osl.eps.hw.ac.uk/.


RBH, the UK's largest independent hotel management company, has launched an online portal offering customers direct access to deals across its extensive portfolio.
Its new customer website, GreatHotelOffers.co.uk, features deals and promotions at a range of properties across the UK and Northern Ireland; including Best Western, Aloft, Crowne Plaza and DoubleTree by Hilton hotels, as well as private label properties.
Users can search hotels by location or type of stay, with hotels recommended for family breaks, spa breaks, hen and stag parties and romantic trips among others.
Its launch follows hot on the heels of RBH adding 22 new hotels to its impressive portfolio as part of an agreement with LRG Acquisition Limited. The company now manages a total of 70 properties, working with IHG, Hilton Worldwide, Best Western, Wyndham Hotels & Resorts and Starwood Hotels & Resorts Worldwide.
Yvonne Brennan, Group Marketing Manager for RBH, said: "For the first time, RBH is giving customers the chance to source deals from, and book breaks at, its full collection of hotels in one place. We manage properties in all four corners of the UK and Northern Ireland, so customers will be spoiled for choice.
"Great Hotel Offers is designed to reward our customers with direct access to the very best prices at our hotels, as well as inspiration for UK getaways. We've invested significantly in our digital marketing capabilities, including our CRM system and email marketing, as well as expanding our internal digital team."
Offers include an overnight stay and luxury cruise for two at the Langstone Hotel in Portsmouth from just £150, and Rosslea Hall Hotel in Helensburgh's 'Lazy Sunday' package, which includes dinner bed and breakfast as well as a sumptuous Sunday lunch, from £119 per room.


text:
Share this Story: Urban Townhomes: 'That's perfect, I'm getting everything I want'
Urban Townhomes: 'That's perfect, I'm getting everything I want'
Josh Skapin • Calgary Herald
May 25, 2018 • May 25, 2018 • 4 minute read • Join the conversation
Shahd Mohamad is excited about her new home at the Urban Townhomes development in Carrington by Mattamy Homes. Photo by Christina Ryan /Postmedia
When Shahd Mohamad set out to buy her first home, it wasn't just about finding something that would meet her needs today, but a wise long-term investment, as well.
The 34-year-old IT business solutions analyst grew up in Calgary and, after a year of living in Toronto, has returned to her home city, where she's been staying with her parents in Royal Oak.
Urban Townhomes: 'That's perfect, I'm getting everything I want' Back to video
"It was time to lay down roots," says Mohamad. Like many people who decide to buy a new home in Calgary, her heart was set on staying in the quadrant that she knew best.
"I grew up in the northwest," she adds. "I know where all the facilities are, all the amenities, where there's shopping. I'm a creature of habit."
To visit a friend who lives in Airdrie, Mohamad takes a back road that passes some of Calgary's newest communities, including Carrington by Mattamy Homes.
This is where she saw the combination of price, size, garage, and location that gave her what she wanted for her current lifestyle, and also the potential for value when she's ready to sell.
Mattamy not only develops its communities, but builds all homes within them, as well.
Mohamad bought at the community's Urban Townhomes development, where prices start in the mid-$300,000s, before tax. Carrington offers single-family homes and duplexes, too.
Urban Townhomes come in five floor plans, ranging in size from 1,327 to 1,467 square feet. Each has a double rear-attached garage.
"It was a no-brainer for me," she says.
"It has the double attached garage in the back, two levels, and a basement, as well … the square footage is a little over 1,400 square feet. So for me, it was like, 'That's perfect, I'm getting everything I want and for a really good price point.'"
Not only did the purchase price please her, but so did the lack of additional monthly expenses.
An artist's rendering of the front exterior of the Urban Townhomes by Mattamy Homes in the northwest Calgary community of Carrington. Photo by Supplied /Mattamy Homes
This development is freehold, so unlike townhome developments managed by a condo board, the buyer is also responsible for the exterior of their home and the land it sits on.
As a result, there's no need for condo fees.
Mohamad says not having to pay condo fees played an important role in her decision to buy.
"People can put their money toward their unit and their mortgage instead," says Mattamy's marketing manager Karla Schultz, calling the lack of condo fees "a huge draw."
While Mohamad will move into the townhome on her own, she chose a three-bedroom plan. She feels, that, the second-floor laundry, and the ability to develop the basement, all work in her favour when she one day decides to either sell or rent the place and move into something larger, calling it a "good investment opportunity."
In the meantime, she'll turn one of the secondary bedrooms into a home office and the other into a guest room.
The second floor also includes a loft, which Mohamad has earmarked as a place to relax with a good book. "I'll probably put in a lounge chair there and make a bit of a reading nook," she says.
The main level is open-concept, and as someone who loves to cook, Mohamad was pleased to see a kitchen that she says has "a lot of counter space and a lot of storage."
Three show homes — one fully decorated — presenting examples of the Urban Townhomes opened this past April. "It certainly helps when you have a show home to actually view and walk through," says Schultz, adding having townhomes under construction, has ramped up interest, as well.
Another thing she considered was the views from her home. There were plenty of opportunities in other areas where the sight lines were roadways and other people's homes, Mohamad says.
Here, she looks onto the $3 million, 0.9-hectare Greenway Park, which is already developed. Mattamy had the expansive open area — boasting a skateboard area, play structures, green space for soccer, half basketball court, granite walkways, benches and a plaza — ready when the community was formally launched last fall.
Whether you're a family, couple, or single, the park has something to enjoy, says Schultz.
In the next year, construction will begin on a retail development that will face onto the park. Tenants have not been announced.
Says Schultz on the proximity to future retail: "That's really appealing. You'll be able to go out your door, walk across the street, and do your local shopping."
The Greenway Park name is a nod to Rotary/Mattamy Greenway, which runs next to the park.
When complete, it will connect 55 neighbourhoods in a 138-kilometre loop around the city, making it the largest urban system in the world.
Mohamad, who enjoys cycling, says she's pleased having the Rotary/Mattamy Greenway, along with the community's other pathways, at her disposal.
"I think it's going to be a great community," she says.
WHAT: The Urban Townhomes in Carrington.
BUILDER/DEVELOPER: Mattamy Homes.
AREA: Carrington is a new community in northwest Calgary.
PRICES: Urban Townhomes start in the mid-$300,000s, before the tax.
HOURS: Show homes are open 1 to 8 p.m. Monday through Thursday, 1 to 6 p.m. on Fridays, and 11 a.m. to 6 p.m. on weekends.
INFORMATION: mattamyhomes.com
Braid: Premier Kenney stakes his leadership survival on 'Open for Spring'


Carahsoft Technology Corporation offers emergency preparedness hardware and related services through this contract. Customers can purchase directly through this DIR contract. Contracts may be used by state and local government, public education, other public entities in Texas, as well as public entities outside the state.
Generate a purchase order made payable to Carahsoft Technology Corporation and you must reference the DIR Contract Number DIR-TSO-3926 on your purchase order.
726-06 - Adhesive/Cement, Radio - T.V.


This gravel lot is located off the exit 238 (to Jefferson) ramp on I-5; go straight ahead at the signal to find the lot. The lot stretches along Highway 99E, 11 miles west of Scio and Jefferson. The lot holds 20-25 vehicles.


Known for its beauty and its longevity, the ginkgo tree has remained unchanged for centuries. It can be distinguished by its fan-shaped leaves and foul-smelling fruits. In the following article, we discover some interesting and intriguing facts about this ancient tree.
The ginkgo tree (Ginkgo biloba), also known as the maidenhair tree, is one of the most unusual tree species in the world. It has survived on the planet since the Jurassic period and is therefore known as a 'living fossil'. The name ginkgo is derived from a Japanese word gin that means 'silver' and kyo meaning 'apricot'. The name refers to the silvery apricot-like fruit of the tree. The tree is able to thrive even in a polluted environment. It is therefore commonly planted near streets and roadside in cities. It has a great ability to adapt which is why it has survived all these years.
The tree has no living relatives of plant species and can be traced back to millions of years. Ginkgo trees no longer grow naturally in wild. Those that grow all around the world were planted by men. It is similar to redwood and sequoias, as they can survive for many years.
Its history is long and ancient. Native to China, the ginkgo tree has been planted since ancient times in Chinese and Japanese temple gardens. Today it is still found in the Zhejiang and Guizhou Provinces in Central China. The tree is considered as a sacred tree in China and Japan. The Chinese have used parts of the tree in their traditional Chinese medicine. The tree made its way to North America during the 18th century. Since then, it has flourished as street and shade tree.
The ginkgo tree or Ginkgo biloba is the only tree that belongs to the plant family Ginkgoaceae. The tree belongs to the gymnosperms or non-flowering plant group. Thus, it is closer to conifers and cycads genetically.
This deciduous tree can reach a height of 40 to 80 feet when mature with a canopy of 30 to 40 feet. The ginkgo has a cone-like shape when young, and becomes irregularly rounded as it ages. The bark of the young plant is smooth and gray. It becomes ridged and brown as it grows.
Gingko trees are dioecious, with separate male and female trees. The male trees have cones and look like drooping fingers. These cones are called catkins that shed pollen in mid-spring. The females have naked green ovules hanging on their branches. When these ovules get pollinated by wind, they develop fleshy seeds of translucent yellow-orange color in autumn. These fruits have a smelly pulp. The tree will bear fruit only after 15 to 20 years of age.
It can grow in partial and full sun, and needs at least 6 hours of sunlight daily. They can grow in a deep sand base soil that is well-drained but moist. These trees are known for their adaptability and tolerance. They can grow in all types of soils with different pH and composition. They are also known to be tolerable to cold, drought, salt spray, heat, compacted soils, and even air pollution. Therefore, it is a popular tree species to be grown in cities. They are good to be grown in USDA zones 3 to 9.
The ginkgo biloba tree can grow for thousands of years. A gingko tree found in China is said to be over 3,500 years old.
It is a symbol of changelessness and immeasurable past.
The ginkgo fruit is smelly with slippery flesh.
The IUCN Red List of Endangered Plants has listed the tree as endangered.
It is known for its distinctive fan-shaped leaves. The ginkgo leaves are triangular and have a central notch in the middle of leaf blade.
These medium green leaves occur in tufts in short spurs over the branches. They turn golden-yellow in autumn and fall off in winter.
An interesting fact to note is that it was the sole survivor of the atomic bomb blast in Hiroshima, Japan during the US bombings in 1945. There were four trees that were charred, but survived. they are still said to be alive and flourishing.
Another intriguing fact about ginkgo trees is that its bark and leaves are said to secrete a sap that is thought to have fire-retardant properties.
In 1923, during the great fire after the earthquake in Tokyo, ginkgo tress were the ones which survived when other trees were burned to the root.
In Japan, the leaves are used as bookmarks, as they are known to protect the books from silverfish and booklice. The leaves contains chemical properties against these pests.
There is a special meaning attached to the tree in Confucianism. As it is said, Confucius spent hours thinking, reading, and writing under this tree.
There are no natural diseases that infect the tree and the tree does not seem to have problems with insects either. This may be one of the reasons of its longevity.
According to traditional Chinese medicine, ginkgo is thought to be an aphrodisiac and contains properties that help improve attention and memory.
These were some of the facts about the tree that are really intriguing to know. You can plant a tree in your yard and see it flourish in your lifetime. I hope this article has helped you learn some fascinating information regarding this tree.


This week the CSIRO released a research paper by Doran-Brown et al identifying plant sequestration as a significant method to offset carbon dioxide emissions from agriculture, thereby reducing the carbon balance of intensive farming enterprises. The paper seeks to meet a current research gap in Australia whereby carbon offsets for properties with high stocking rates (more than 20 dry sheep equivalents per hectare) are unknown. It should be noted that while the paper is a comprehensive study of carbon sequestration of intensive farming enterprises, it is limited in that it does not contain an economic analysis of improving the carbon balance, especially if livestock numbers are reduced in favour of planting more trees.
A carbon balance represents a crucial climate change mitigation method. Localised forms of mitigation methods represent a collective effort of reduction and assist in the likelihood of Australia meeting its international obligations of 26-28% emissions reductions based on 2005 levels by 2030. Using two case study farms in Hamilton, Victoria and Yass, New South Wales, the carbon balance was calculated by subtracting the carbon sequestered in trees and soil from the on-farm and pre-farm emissions. A 35 year time period was used to calculate the balance.
Previous mitigation measures include grazing management, improving feed digestibility, feed additives, animal productivity and health, legume use and better manure management are restricted in their sequestration capacities, limited between 1-13 per cent emissions reduction. Further, economic limitations also restrict the efficiency of these practices.
Doran-Brown et al found sequestration through trees on-site was a far more valuable localised method of mitigation. The study monitored a 35 year period to record sequestration across wool, lamb and beef produce. The study found that when 20 per cent or more of the property's area is covered by trees with stock rates of up to 22 dry sheep equivalents per hectare, the site can remain carbon positive, that is sequester more carbon than emitted, for over 25 years. Whilst it is important to note that the sequestration capacity of land changes depending on a number of variables such as the type of soil, rainfall, and trees, including the age of trees, on the property, the study presents novel findings regarding the substantive capacity trees can play in mitigating agricultural emissions at a local level.
Source: Natalie Doran-Browne, Mark Wootton, Chris Taylor and Richard Eckard, 'Offsets required to reduce the carbon balance of sheep and beef farms through carbon sequestration in trees and soils' (2017) Animal Production Science [pre-publication].


bright colors full of joy.
with one another and for one another.
the rain drop trails its loving touch.
offers life in the form of diamonds.
Azure glows topaz, copper as gold.
Is my favorite imagery, by the way, though the whole thing brought bright flowy colors to mind.


text:
Safaricom Predicts A 7 Per Cent Fall In M-Pesa Revenue As A Result Of Coronavirus
in Markets
Safaricom expects a 5.5 billion shilling ($51.64 million) hit to its revenue from M-Pesa in the three months from mid-march after it adjusted prices because of the coronavirus crisis, its chief executive told Reuters.
The foregone revenue, equating to 7.3% of the mobile money platform's annual earnings, will be caused by the removal of all charges on small peer-to-peer transfers to facilitate cashless payments to help to contain the coronavirus pandemic.
The company, which is part owned by South Africa's Vodacom and Britain's Vodafone, is not worried by the projection, said CEO Peter Ndegwa, who took the helm on April 1.
"When Kenya gets back on track, our business should get back on track," he told Reuters.
"We are in a good place to be able to weather this storm, but our business is linked to how the country comes out on the other side."
The East African nation has 270 confirmed cases of COVID-19. The government has restricted movement of people and expects the nation's economic growth to halve to 3% this year.
Safaricom rolls out 'Bonga For Good' to help customers deal with COVID-19 impact
List of Safaricom services that will be unavailable on Sunday morning
South Africa's MTN drops prices on monthly data bundles by between 25% and 50%
Under an initial 90-day deal with the government, all charges for cash transfers of less than 1,000 shillings ($9.39) have been removed by all operators.
M-Pesa, which was launched by Safaricom in 2007, is one of the most popular modes of payments in Kenya. The platform is used to send money, save, borrow and make payments for goods and services.
Ndegwa said that the M-Pesa business could benefit from increased usage as customers shun bank notes during the crisis, but cautioned that it was too early to say for certain.
"We are not factoring in any upside until we see how customers cope with this crisis," he said.
Safaricom has experienced a surge in data traffic as people work from home and students turn to e-learning services.
It has doubled Internet speeds for its fibre customers – about 300,000 homes – and is accelerating installation of new fibre connections to meet growing demand, the CEO said.
Ndegwa, who was Diageo's managing director for continental Europe before taking his new role, said the coronavirus crisis will present new opportunities in the data business, which Safaricom needs to pick up the slack from declining volumes in traditional mobile telephony.
"People are discovering they can work from home. Education and learning will change. Small businesses are going to learn they can digitise their operations and operate more smartly," he said.


text:
TBJ 68: Dr. Amy Horn, 29-year member of The President's Own Marine Band and Adjunct Professor of Horn at George Mason University joins Andrew & Lance to explain how to bloom where you're planted. 0
Dr. Amy Horn, 29-year member of The President's Own Marine Band and Adjunct Professor of Horn at George Mason University joins Andrew & Lance to explain how to bloom where you're planted. A native of Ohio, Amy studied at Bowling Green University with Herb Spencer and played under legendary bandmaster Mark Kelly. We hear the amazing story of her audition for the Marine Band (including camping out in her pea-green Chevy Citation), how she cut a rug on the road with Patrick Sheridan and why she switched from trombone to horn. We learn how she started the Capital Horns, hear stories about her teaching and performing career, including gigs with the Washington Symphonic Brass and the Washington Conservatory of Music.
Her biggest question for Jens is J or Y. Frankly, the world wants to know.
George Mason University bio
Marine Band Bio
Capital Horns Facebook Page
Turak, Business Secrets of the Trappist Monks
Want to help the show? Take a minute to leave us a rating and a review on iTunes.
The Brass Area of the Mary Pappert School of Music at Duquesne University in Pittsburgh PA is our new partner (and Lance has been teaching euphonium there since 2000). If you are interested in learning more about the program, visit the site HERE!
Check out Parker Mouthpieces fine offerings (including the Andrew Hitz and Lance LaDuke models) by clicking PARKER!
Last but not least, we are now on Instagram! Follow us at instagram.com/pray4jens/ TODAY!
Expertly produced by Joey Santillo with love, care, and enthusiasm.
TBJ 67: Denise Tryon, low horn specialist and former member of the Philadelphia Orchestra, joins Andrew & Lance and unpacks following your gut to pursue your dreams. 1
TBJ 67: Denise Tryon, low horn specialist and former member of the Philadelphia Orchestra, joins Andrew & Lance and unpacks following your gut to pursue your dreams.
Denise has had an incredible career as member of the New World, Columbus, Baltimore, Detroit, and Philadelphia orchestras and currently teaches full-time at Peabody Conservatory in Baltimore. Additionally, as a member of the Taiyo Wind Quintet, she had the privilege of working with John Harbison, Luciano Berio, György Ligeti, and Elliott Carter.
Denise explains why she recently stepped down from the gig in Philly to pursue teaching, solo projects and commissioning new pieces for low horn. She also explained how, after 22 years in the orchestra world, she knew it was time and shared her "no regrets" attitude. We also explore how she became a low horn specialist, shares some great low horn exercises and talks about her time studying with the great Chester Schmitz.
Yannick Nézet-Séguin, music director of the Philadelphia Orchestra writes that "Denise Tryon's command of the lower register provides the strongest foundation of sound for a horn section, and yet, her sound is supple and flexible."
It was a great conversation, despite some audio challenges. This time, they weren't even Lance's fault!
Denise's site
Solo CD
Peabody bio page
Audition Mode site


Counter-Strike: Global Offensive is undergoing changes as Austria and Subzero will be removed from the game's official matchmaking and replaced by new community-created map Abbey and a community favorite returning after a three-year absence, Zoo.
The announcement was made Thursday by Valve.
Austria was a community-created bomb defusal map featured in Operation Hydra in May 2017 and added officially in November of that year. Subzero was similarly a community-created bomb defusal map added to the game alongside Biome in November 2018.
Abbey is a new community-created bomb defusal map, themed after a village in the Mediterranean. Zoo was announced as part of Operation Bloodhound in May 2015, but removed from the game files in Oct. 2016. Both are now part of Defusal Group Sigma for Casual and Deathmatch, to be added to Competitive matchmaking in the coming weeks.
Also changed is a new version of Vertigo for Wingman's official matchmaking, as well as various changes to Biome, including redesigns of map connectors. Accounts are now also automatically upgraded to Prime upon reaching Level 21. Noises caused by jumping have also been adjusted for more consistent behavior, among other bug fixes.


Town Creek is a physical feature (stream) in Pulaski County. The primary coordinates for Town Creek places it within the GA 31036 ZIP Code delivery area.
In the Maps and Aerial Photos section below, you'll find links to: (1) Local area photos around Town Creek, (2) A listing of the nearest hotels to Town Creek and (3) Driving Directions to Town Creek from almost anywhere. The location of Town Creek is marked on an interactive map. The map can be searched by either business name or business category.


This just in from House Leadership: the RSC Amendment to the Continuing Resolution will be debated on the House Floor at 12:30 today!
The vote is expected to occur between 1:00 and 1:30.
The FY 2011 continuing appropriations bill being considered this week provides $396.6 billion for non-security spending (compared to the $378 billion FY 2008 non-security funding level) and $631.9 billion for security spending (compared to the $554 billion FY 2008 security funding level). Overall, this is a $99.6 billion reduction compared to the President's FY 2011 budget—$81 billion of the reduction is non-security spending, $18.6 billion security spending.
A 0% cut for Israel (i.e. no cut to Israel funding).
To see the text of the RSC amendment, see number 104 here: http://www.gpo.gov/fdsys/pkg/CREC-2011-02-14/pdf/CREC-2011-02-14-pt1-PgH776-3.pdf.
On Monday, the President submitted his budget request for FY 2011-2021. Total proposed deficit spending amounts to more than $8.9 trillion over the period covered by the budget submission. The President's budget specifically proposes a $1.65 trillion deficit in FY 2011, and then a $1.1 trillion deficit in FY 2012. (This follows a $1.29 trillion deficit in FY 2010, a record-breaking $1.41 trillion deficit in FY 2009, which in turn followed a then record-breaking $459 billion deficit in FY 2008). Even in the last year of the budget (2021), the deficit would be $774 billion—which means there is no effort to balance the budget even after the current recession, and the wars in Afghanistan and Iraq, are long over.
If the deficit figures proposed by this Obama budget are realized, all fourteen of the highest deficits in U.S. history will have occurred from FY 2008-2021.
The President's budget proposes to increase the national debt from today's level of $14.2 trillion to $26.4 trillion in FY 2021—an increase of $12.2 trillion or 86.0%. The amount of new debt proposed by this Obama budget is larger than the total amount of debt accumulated by the federal government from 1789 until January 20, 2009.
There is bad news though… a California Republican is encouraging people to vote AGAINST the spending cuts.
Security & Oversight: Cuts We Can't Afford!
I urge you to vote no on Amendment 104 to H.R. 1 that would dramatically impact the House's ability to maintain adequate security and conduct effective oversight. The Amendment's proposed cuts would also impede on each Member's ability to communicate and serve his or her constituents.
This amendment would severely restrict the U.S. Capitol Police's ability to secure the Capitol complex by slashing its budget 11%. A cut of this magnitude would force Capitol Police to face today's ever-growing security threats with significantly fewer resources and officers.
The Amendment would also hamper the House's ability to conduct effective oversight and impede on Members' ability to serve their constituents by cutting committee and Member budgets an additional 11% on top of the 5% cut adopted last month.
In November, we promised a government that would be more efficient, more accountable and more transparent. However, keeping that promise means we need vigilant oversight.
While I support this effort to reduce federal spending, I fear the wholesale approach proposed in this amendment will render the House and its members incapable of upholding our promise to the American people. For these important reasons, I strongly urge you to vote no on Amendment 104.


In searching for an illustration for this post I found a "very cool" site, created by Dexter and Chris Adams - here's a link to the post where I found the illustration - while you are there, poke around, it's the Kubashi thing to do.
December 25th , I posted a blog called Time Management For Writers. I said in the post that I wouldn't be investing any more of my writing time in watching or listening to Alabama Football or Braves Baseball.
This isn't one of those times, and tomorrow I'm looking forward to the Alabama Oklahoma Sugar Bowl because I won't be watching or listening. And, though it is ninety days away, I'm already looking forward to the first pitch of the 2014 Professional Baseball Season, when the Atlanta Braves play the Milwaukee Brewers, because, and I'll bet you've already guessed this one, I won't be listening or watching or attending that game either.
I know my lack of participation won't matter to any of the athletics or the coaches. And it's not a statement of my dissatisfaction with either sport or either time. In fact, I'm talking celebration here. Party time because I've seen the light and made the decision to invest my time with someone who will guarantee a most favorable return on the investment−me.
Have you decided to "reinvest" some time this year? Where is it going to come from? What project are you going to invest it in.


text:
// EnderChestWindow.cpp

// Representing the UI window for the enderchest block

#include "Globals.h"
#include "../World.h"
#include "EnderChestWindow.h"
#include "SlotArea.h"

cEnderChestWindow::cEnderChestWindow(cEnderChestEntity * a_EnderChest) :
	cWindow(wtChest, "Ender Chest"),
	m_World(a_EnderChest->GetWorld()),
	m_BlockX(a_EnderChest->GetPosX()),
	m_BlockY(a_EnderChest->GetPosY()),
	m_BlockZ(a_EnderChest->GetPosZ())
{
	m_SlotAreas.push_back(new cSlotAreaEnderChest(a_EnderChest, *this));
	m_SlotAreas.push_back(new cSlotAreaInventory(*this));
	m_SlotAreas.push_back(new cSlotAreaHotBar(*this));

	// Play the opening sound:
	m_World->BroadcastSoundEffect(
		"block.enderchest.open",
		static_cast<double>(m_BlockX),
		static_cast<double>(m_BlockY),
		static_cast<double>(m_BlockZ),
		1,
		1
	);

	// Send out the chest-open packet:
	m_World->BroadcastBlockAction(m_BlockX, m_BlockY, m_BlockZ, 1, 1, E_BLOCK_ENDER_CHEST);
}

cEnderChestWindow::~cEnderChestWindow()
{
	// Send out the chest-close packet:
	m_World->BroadcastBlockAction(m_BlockX, m_BlockY, m_BlockZ, 1, 0, E_BLOCK_ENDER_CHEST);

	// Play the closing sound
	m_World->BroadcastSoundEffect(
		"block.enderchest.close",
		static_cast<double>(m_BlockX),
		static_cast<double>(m_BlockY),
		static_cast<double>(m_BlockZ),
		1, 1
	);
}

void cEnderChestWindow::DistributeStack(cItem & a_ItemStack, int a_Slot, cPlayer & a_Player, cSlotArea * a_ClickedArea, bool a_ShouldApply)
{
	cSlotAreas AreasInOrder;

	if (a_ClickedArea == m_SlotAreas[0])
	{
		// Chest Area
		AreasInOrder.push_back(m_SlotAreas[2]);  /* Hotbar    */
		AreasInOrder.push_back(m_SlotAreas[1]);  /* Inventory */
		super::DistributeStackToAreas(a_ItemStack, a_Player, AreasInOrder, a_ShouldApply, true);
	}
	else
	{
		// Hotbar or Inventory
		AreasInOrder.push_back(m_SlotAreas[0]);  /* Chest */
		super::DistributeStackToAreas(a_ItemStack, a_Player, AreasInOrder, a_ShouldApply, false);
	}
}

redpajama_set_name: RedPajamaGithub


Learning centres List of our learning centres and how to find them.
Choose a course Course prospectus and enrolment details.
Fees & learning support Find our policies on fees here and support with your learning.
Employment & learning advice Free, confidential and impartial advice on work and learning.
Give feedback Tell us about your experience with us.
About the service Details of our aims, policies and our subcontracted providers and partners.
Safeguarding Safeguarding for everyone using the community learning and skills service.


Welcome to Animal Allies, a nonprofit, all-volunteer organization dedicated to the rescue of homeless and abandoned animals, serving the greater Washington DC area. We are a registered 501(c)(3) organization incorporated in the state of Virginia. Founded in 1984, Animal Allies is devoted to curbing the irresponsible breeding of pets in an effort to end the overpopulation of homeless animals.
Animal Allies volunteers work to rescue lost, abandoned, or stray animals and find loving homes for them if possible. all animals in our system are vetted to check for disease and spayed & neutered to stop the cycle of unwanted animals.
Through a detailed process, we do our best to make sure each animal goes to a suitable home where they can enjoy love and shelter and the necessities for the rest of their lives, and provide their human companions with love in return. Our organization is funded solely through the generosity of the public and countless hours put in by our volunteers.
If you are in the metro Washington D.C. area and looking to adopt, please browse through our listings. Or simply obtain more information on who we are and what we do.


A Life Book is your chance to introduce yourself to birth moms at CPO. This is the first step birth moms will take when choosing an adoptive family.
• An autobiography of both husband and wife. Include information on where you grew up, your siblings and extended family, education, occupation, hobbies, talents, interests, and your relationship with the Lord.
• Why you desire to adopt a child. Some refer to this as a "Dear Birth Mother" letter, but it does not have to be in letter format.
• Pictures! Pictures! Pictures! Lots of well-labeled photos are a must. You may want to include individual pictures of each of you, wedding pictures, couple shots, vacations, holidays, your children (if you have any), pets, your home, the nursery, each of you doing your favorite hobby or sport, and your extended family. Action shots are always great.
• A current photo of you (and any children) on the FIRST PAGE. We have seen frustrated birth moms toss books aside after looking through all sorts of pictures of random family members before they finally find a picture of the adoptive couple and their kiddos.
• You can have a copy sent directly to Cheryl from Shutterfly.
• Do not use fonts smaller than 12 points. In our experience, 14-point type seems to profile better.
• Do not use fonts that look like script. Some girls have difficulty reading them.
• Make an extra copy of your Life Book for yourself if you wish. Once you are chosen by a birth mother, she will keep our copy.
Don't spend hours stressing about what to include in your book. Remember, God has a plan for you and your family! We've had girls chose couples because they liked the look of their cat, cheered for the same sports team, or simply liked where they had vacationed. So pray about it. And if you are not creative, find a friend or family member who can help you. If your grammar, spelling and punctuation aren't great, have someone proof what you write. Do your best, but don't stress.


More drivers are killed by drugged drivers than drunk drivers, according to a report by the Governors Highway Safety Association. The study showed that, of the fatally injured drivers who were tested for drugs in 2016, 44 percent tested positive for one or more substance. This represents an increase of 28 percent over the number a decade earlier. Furthermore, the number of drivers testing positive for drugs surpassed the number of drivers who were known to be tested for alcohol and tested positive, which totaled 37.9 percent. Accident attorneys at Florida law firm Ged Lawyers, LLP protect those who have been injured in accidents involving alcohol or drugs, and successfully hold the negligent parties accountable.
The Centers for Disease Control and Prevention (CDC) reports that 29 people die every day in the United States in car accidents that involve an alcohol-impaired driver, amounting to one death every 50 minutes. The CDC stated that almost 10,500 people died in alcohol-impaired driving crashes in 2016, which accounted for 28 percent of all traffic-related deaths in the United States. More than one million drivers were arrested nationwide for driving under the influence of alcohol or drugs (DUI) and drugs – not including alcohol – were involved in approximately 16 percent of car accidents that year. The CDC reports that marijuana use is on the rise and 13 percent of nighttime, weekend drivers were found with marijuana in their bloodstream.
In Florida, operating a vehicle while impaired by drugs or alcohol (DUI) is against the law and the penalties are the same for both offenses. Impairment due to alcohol is widely understood; but impairment due to drugs – legal and illegal – is often misunderstood. Impairment due to drugs may include prescription drugs, over the counter medications for coughs, colds, and allergy symptoms, and other medicine. Many products cause drowsiness and consumers are advised to always check the labels on medications for warnings, and to ask a doctor or pharmacist about potential side effects of using the drug. Drinking alcohol while taking medications is particularly dangerous, as the effects of the alcohol or the drug can be multiplied significantly.
Controlled substances and illegal drugs also affect an individual's response time, judgement, alertness, and reflexes, in addition to posing dangerous side effects. Some drugs render an individual incoherent and unable to appropriately respond to simple, everyday situations. Other drugs have the effect of boosting self-confidence, and provide a false sense of alertness and wellbeing.
At Ged Lawyers, LLP our accident attorneys believe that those responsible for causing harm should be held accountable. Our dedicated team aggressively fights on behalf of our clients, protecting their rights and securing the compensation they deserve for their injuries and other losses. If you have been injured in an accident that involved alcohol or drugs, contact a member of our team at 844-443-3529 or online to arrange for a confidential consultation to discuss your accident.


text:
Dr Mohammad Wasiullah (Wasi) Khan, a Pakistani American, got his MA and MEd Honors degrees from Panjab University and PhD in Educational Administration from Indiana University. He has been a teacher and administrator in Pakistan before he came to Berkeley, California in the 1970's. Later he was an educational researcher in Indiana and became Academic Dean in a minority college in Chicago. In November, 1978 he convened a Planning Group to establish a new, multi-cultural institution of higher learning in Chicago. After requisite approvals from the state and federal agencies, East-West University as a not-for-profit institution started operations in September, 1980 in its own building at 816 South Michigan Avenue, Chicago. The University offers Bachelor's and Associate degrees in several professional areas like Electronics, Computer Science, Business Administration, English and Communications, Social and Behavioral Sciences, Medical Technology and Office Administration. The University in April 2000
acquired another very large 8-story building as an extension of its campus and Fall 2003 enrollment has exceeded 1000. Twenty one classes of graduates have come out since the University achieved accreditation in 1983. For many years it has been listed in "America's Best Colleges" guide of the weekly US News and World Report. As founder-chancellor of the University, Dr Khan and the board of trustees have envisioned graduate programs and other campuses of the University in the next decade. Its Karachi, Pakistan campus made a small beginning in October 2000. Dr Khan has also been Senior Vice-President of the Pakistani American Congress and is the incumbant Chairman of the Indus Society, Chicago. He has to his credit many published articles and a book which he edited and contributed an extensive introduction to: Education and Society in the Muslim World, published by Hodder and Stoughton, Kent, UK.


text:
WORTLAND Juni 27, 2019 Pressemitteilung
Munich, 06/27/2019 PRESS RELEASE
Prof. Dr. Tania Peitzker
A German-Australian with a doctorate in Anglistik from the University of Potsdam.
Now an Associate Professor for AI management at the IAE Graduate Business School in Nice and a guest lecturer at Cambridge University Business School & Mannheim Business School.
Specialist author and Berlin correspondent for the London Times Higher Education Supplement and the New York Business Expert Press BEP among other publications (VentureBeat, Medium, WSJ).
Owner of velmai.com (an AI bot hologram tech venture for 2D and 3D bespoke avatars). See https://www.botsasaservice.eu/
Keynote speaker at Cebit, the London Mayor's Tech Week and most recently at the Applied Machine Learning Days on the EPFL in Lausanne.
Rankings on CrunchBase (Silicon Valley) at the beginning of 2019: # 1- # 4 for the categories ML, NLP and AI Europe-wide and worldwide (see also XING & LinkedIn Profiles).
Tania's Mission: To contribute to digitization in Germany and to lessen the negative effects of the coming crisis through job losses.
More information: https://www.botsasaservice.eu/ai-bot-resources-videos-images
cooperation website: https://md4970.wixsite.com/website-1
Wortland handles all the speaker bookings and workshop/seminar work of Prof. Dr. Tania Peitzker. Please feel free to contact us for more information: contact@wortland.com or 0049 89 12 19 23 29.


text:
Green Bay Packers: Ryan Reynolds, Anthony Kiedis + more of the best Packers puns
You might not have known, but the Green Bay Packers' new head coach Matt LeFleur has never watched an Aaron Rodgers interview. Even though Rodgers had been accused of disrespecting Las Vegas in an…
You might not have known, but the Green Bay Packers' new head coach Matt LeFleur has never watched an Aaron Rodgers interview.
Even though Rodgers had been accused of disrespecting Las Vegas in an interview he gave to the New York Times in April, he now apologises – and last night Rodgers allowed LeFleur to watch the entire session – something he has also done since agreeing to return to his hometown team.
LeFleur was reportedly close to hiring Rodgers before being persuaded to take the Green Bay head coach job.
But when LeFleur watched the interview, he was left staggered by what he found.
"I really didn't see anything," LeFleur said in a media briefing on Monday.
"I had a screening [screening] at some point yesterday morning. I hadn't seen it until I got here and walked into the meeting room and the other coaches and I were all kinda standing around talking and getting a feel and going through various things.
"I mean, you had to pull some hairs out and all that stuff. [Rodgers] actually did a really good job. There was a lot that was factually accurate and he talked very candidly. But at the same time he also had a lot of opinions that I would have liked to have heard a little bit more. I would have liked to have maybe heard what he thought about the defensive side of the ball in particular as well."
The Packers quarterback admits he could have handled his response to the interview better, but he was adamant he wanted to lead the team into the Super Bowl once again, and was desperate to leave nothing to chance.
It's a shame that LeFleur will not have the chance to watch another interview in future. Even if he did have a ready made video of his interview with Rodgers, some potential early signs of discontent could have been masked – like Rodgers' agreement to watch the interview.
Categories health Tags boxing, celebrity, espn, influenza, showtime, sports
Two killed and two injured in shoot-out after toll gate attendant shoots back at man carrying gun
Cuba protesters' march postponed amid crackdown fears