Wine release 4.12

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The Wine development release 4.12 is now available.

What's new in this release (see below for details):
  - Still more DLLs are built as PE files by default.
  - Support for Plug & Play device drivers.
  - Better support for the Visual Studio remote debugger.
  - More support for enumerating display devices.
  - Various bug fixes.

The source is available from the following locations:

  https://dl.winehq.org/wine/source/4.x/wine-4.12.tar.xz
  http://mirrors.ibiblio.org/wine/source/4.x/wine-4.12.tar.xz

Binary packages for various distributions will be available from:

  https://www.winehq.org/download

You will find documentation on https://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check https://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 4.12 (total 27):

  18490  Multiple games fail to set pixel format on D3D device context created on desktop window (Empire: Total War, Napoleon: Total War, Utopia City)
  21378  lego digital designer crashes on scrolling
  27576  RT Se7en Lite installer hangs
  31260  Tomb Raider 4 Broken Lighting
  31737  Need For Speed Hot Pursuit (2010): Gamepad is not configured
  34978  Many applications need a EnumDisplayDevicesW implementation for multi-monitor environment support (DisplayFusion, Turbo Tax 2012, WPF 4.x .NET apps, CEFv3 apps, VS Code < 1.16.0)
  35413  err:module:import_dll Library libgcc_s_sjlj-1.dll not found needed by mono-2.0
  36061  winedbg crash dialog shows a leak in imm32
  37709  All Qt5 based applications have broken menu/combos positioning in multiple monitor setup due to GetMonitorInfo() returning the same hard-coded device name for all monitors
  38421  Windows Media Player 9 & 10: mp3 sound plays too fast
  41608  Golden Krone Hotel fails to launch (InitializeProcThreadAttributeList is a stub)
  42374  Hardwood Solitaire can not connect to his server
  45656  Acronis Storage Filter Management Driver 'fltsrv.sys' crashes on unimplemented function 'ntoskrnl.exe.KeBugCheckEx' in 'CrashOnError' mode
  47013  winebus.sys: hidraw_set_feature_report buffer too small for some devices in SteelSeries Engine
  47014  Multiple kernel drivers need 'ntoskrnl.exe.ExInitializePagedLookasideList' implementation (Norton 360/Symantec Eraser Control Driver)
  47017  Symantec Eraser Control Driver 'eeCtrl64.sys' (Norton 360) crashes on unimplemented function ntoskrnl.exe.IoGetStackLimits
  47340  Adobe Acrobat Reader DC crashes on startup with corefonts installed
  47352  Levelhead: Can't connect to game's network
  47367  Some WPF 4.x apps from Windows 10 SDK (10.0.17763.x) spam console with fixme:d3d:wined3d_driver_info_init Unhandled OS version 6.3, reporting Win 8. (WinVer set to 'Windows 8.1')
  47385  Overwatch crashes on unimplemented function mfreadwrite.dll.MFCreateSinkWriterFromURL
  47392  Drakensang Online crashes when exiting fullscreen
  47399  Mozart 11-13 crashes on startup
  47410  Regression in 4.10, Dune 2000 installer crashes in winevdm
  47418  Quickbooks 2018 installer crashes on Validating Install
  47424  DataTransferLength in SCSI_PASS_THROUGH and SCSI_PASS_THROUGH_DIRECT *must* have return value
  47431  Multiple applications and games show too high CPU usage and UI slowness/lag with wine-4.11-84-g074abfe097 (EnumDisplayMonitors implementation uses expensive registry accesses)
  47443  compile error: undefined reference to `clock_gettime'

----------------------------------------------------------------

Changes since 4.11:

Alexandre Julliard (127):
      t2embed: Build with msvcrt.
      tapi32: Build with msvcrt.
      taskschd: Build with msvcrt.
      tdh: Build with msvcrt.
      tdi.sys: Build with msvcrt.
      toolhelp: Build with msvcrt.
      traffic: Build with msvcrt.
      twain: Build with msvcrt.
      twain_32: Build with msvcrt.
      typelib: Build with msvcrt.
      uianimation: Build with msvcrt.
      uianimationcore: Build with msvcrt.
      uiribbon: Build with msvcrt.
      updspapi: Build with msvcrt.
      url: Build with msvcrt.
      urlmon: Build with msvcrt.
      ntdll: Try to use the name of the PE file also when loading .so builtin.
      advapi32: Move more event log stubs to ntdll.
      advapi32: Move SHA1 implementation to ntdll.
      advapi32: Move MD4 implementation to ntdll.
      advapi32: Move MD5 implementation to ntdll.
      usbd.sys: Build with msvcrt.
      user.exe: Build with msvcrt.
      userenv: Build with msvcrt.
      usp10: Build with msvcrt.
      uxtheme: Build with msvcrt.
      vbscript: Build with msvcrt.
      vcomp: Build with msvcrt.
      vdhcp.vxd: Build with msvcrt.
      vdmdbg: Build with msvcrt.
      ver: Build with msvcrt.
      version: Build with msvcrt.
      virtdisk: Build with msvcrt.
      vmm.vxd: Build with msvcrt.
      vnbt.vxd: Build with msvcrt.
      vnetbios.vxd: Build with msvcrt.
      vssapi: Build with msvcrt.
      vtdapi.vxd: Build with msvcrt.
      vulkan-1: Build with msvcrt.
      vwin32.vxd: Build with msvcrt.
      advapi32: Move registry functions to kernelbase.
      advapi32: Move sid functions to kernelbase.
      advapi32: Move token functions to kernelbase.
      advapi32: Move security descriptor functions to kernelbase.
      advapi32: Move access control functions to kernelbase.
      advapi32: Move performance stubs to kernelbase.
      winebuild: Set the default entry point also for Windows builds.
      w32skrnl: Build with msvcrt.
      w32sys: Build with msvcrt.
      wbemdisp: Build with msvcrt.
      wdscore: Build with msvcrt.
      webservices: Build with msvcrt.
      wer: Build with msvcrt.
      wevtapi: Build with msvcrt.
      wiaservc: Build with msvcrt.
      wimgapi: Build with msvcrt.
      win32s16: Build with msvcrt.
      win87em: Build with msvcrt.
      windebug: Build with msvcrt.
      windowscodecsext: Build with msvcrt.
      winehid.sys: Build with msvcrt.
      winemapi: Build with msvcrt.
      include: Implement some inline functions in C instead of assembly.
      wineps16.drv: Build with msvcrt.
      wing: Build with msvcrt.
      wing32: Build with msvcrt.
      winnls: Build with msvcrt.
      winnls32: Build with msvcrt.
      winscard: Build with msvcrt.
      winsock: Build with msvcrt.
      winsta: Build with msvcrt.
      wintab: Build with msvcrt.
      wintab32: Build with msvcrt.
      wintrust: Build with msvcrt.
      wlanapi: Build with msvcrt.
      wmasf: Build with msvcrt.
      wmiutils: Build with msvcrt.
      wmp: Build with msvcrt.
      wmphoto: Build with msvcrt.
      wmvcore: Build with msvcrt.
      wow32: Build with msvcrt.
      wpc: Build with msvcrt.
      wsdapi: Build with msvcrt.
      wshom.ocx: Build with msvcrt.
      wsnmp32: Build with msvcrt.
      wsock32: Build with msvcrt.
      wtsapi32: Build with msvcrt.
      wuapi: Build with msvcrt.
      wuaueng: Build with msvcrt.
      xinput1: Build with msvcrt.
      xmllite: Build with msvcrt.
      xolehlp: Build with msvcrt.
      xpsprint: Build with msvcrt.
      xpssvcs: Build with msvcrt.
      kernelbase: Get rid of some string helper functions.
      kernel32: Move lstr* string functions to kernelbase.
      kernel32: Move event functions to kernelbase.
      kernel32: Move mutex functions to kernelbase.
      kernel32: Move semaphore functions to kernelbase.
      kernel32: Move waitable timer functions to kernelbase.
      kernel32: Move timer queue functions to kernelbase.
      kernel32: Move critical section functions to kernelbase.
      kernel32: Move file mapping functions to kernelbase.
      kernel32: Move condition variable functions to kernelbase.
      kernel32: Move I/O completion functions to kernelbase.
      kernel32: Move named pipe functions to kernelbase.
      kernel32: Move wait functions to kernelbase.
      include: Avoid depending on wine/port.h.
      d3d8: Build with msvcrt.
      d3d9: Build with msvcrt.
      d3d11: Build with msvcrt.
      ddraw: Build with msvcrt.
      ntdll: Initialize filesystem redirects before kernel32 is loaded.
      d3dcompiler: Copy the C preprocessor source into d3dcompiler_43.
      d3dcompiler: Build with msvcrt.
      wpp: Get rid of the no longer needed callbacks.
      kernelbase: Forward functions directly to ntdll where possible.
      kernel32: Move resource functions to kernelbase.
      kernel32: Move activation context functions to kernelbase.
      configure: Error on unused command line argument to catch unknown options with clang.
      wineboot: Avoid using getopt_long().
      kernel32: Set environment variables for the various Wine paths.
      wineps.drv: Build with msvcrt.
      wineboot: Build with msvcrt.
      setupapi: Build with msvcrt.
      appwiz.cpl: Build with msvcrt.
      mscoree: Build with msvcrt.

Alistair Leslie-Hughes (5):
      wininet: Support QueryOption INTERNET_OPTION_ERROR_MASK for http.
      wininet: Always set last error in HttpQueryInfoW.
      wininet: Always set last error in InternetReadFile.
      include: Complete IMimeHeaderTable/IMimeEnumHeaderRows interfaces.
      winebus.sys: Increase buffer size to match max length available.

André Hentschel (1):
      kernelbase: Return on failed allocation (Coverity).

Dmitry Timoshkov (3):
      ntdll: Add '-norelay' flag for _vsnprintf().
      msvcrt: Add '-norelay' flag for _vsnprintf().
      msvcrt: Fix handling of dst == src in wcscpy_s.

Ethan Lee (2):
      xaudio2: Add TRACE functions to CreateAudioReverb/CreateAudioVolumeMeter.
      xaudio2: Export functions by ordinal.

Fabian Maurer (2):
      kernel32/tests: Add sxs tests.
      ntdll: Check the activation context before looking for the module basename.

Hans Leidekker (10):
      wbemprox: Add support for parsing ASSOCIATORS OF queries.
      include: Use WS_ prefix with struct timeval.
      ntdll: Support NtQuerySystemInformation(SystemFirmwareTableInformation) on macOS.
      ntdll: Fix sysfs path for the product name.
      ntdll: Use a common structure for the SMBIOS table entry header.
      ntdll: Use the machine ID for the system UUID on Linux.
      wbemprox: Retrieve the system UUID from the SMBIOS table.
      wbemprox: Build with msvcrt.
      bcrypt: Ignore the size parameter in BCRYPT_CHAINING_MODE setters.
      wbemprox: Add support for CIM_REFERENCE.

Henri Verbeet (50):
      wined3d: Pass a wined3d_context_gl structure to find_arb_ps_compile_args().
      wined3d: Pass a wined3d_context_gl structure to find_arb_vs_compile_args().
      wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_bind().
      wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_create_buffer_object().
      wined3d: Move texture2d_load_drawable() to texture.c.
      wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_destroy_buffer_object().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_load_program_resources().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_init_transform_feedback().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_normalmatrix_uniform().
      wined3d: Move texture2d_load_renderbuffer() to texture.c.
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_texmatrix_uniform().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_material_uniform().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_lightambient_uniform().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_light_uniform().
      wined3d: Handle Windows 8.1 in wined3d_driver_info_init().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_pointsize_uniform().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_load_fog_uniform().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_clip_plane_uniform().
      wined3d: Pass a wined3d_context_gl structure to shader_generate_glsl_declarations().
      wined3d: Explicitly handle Windows 2 & 3 in wined3d_driver_info_init().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_pshader().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_vshader().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_hull_shader().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_domain_shader().
      wined3d: Use Windows 7 as fallback driver version in wined3d_driver_info_init().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_geometry_shader().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_compute_shader().
      wined3d: Pass a wined3d_context_gl structure to find_glsl_pshader().
      wined3d: Pass a wined3d_context_gl structure to find_glsl_vshader().
      ddraw: Use wined3d_bit_scan() in viewport_alloc_active_light_index().
      wined3d: Pass a wined3d_context_gl structure to find_glsl_hull_shader().
      wined3d: Pass a wined3d_context_gl structure to find_glsl_domain_shader().
      wined3d: Pass a wined3d_context_gl structure to find_glsl_geometry_shader().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_ffp_fragment_shader().
      wined3d: Unhook swapchains in swapchain_cleanup().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_find_ffp_fragment_shader().
      wined3d: Pass a wined3d_context_gl structure to shader_glsl_compile_compute_shader().
      wined3d: Pass a wined3d_context_gl structure to find_glsl_compute_shader().
      wined3d: Pass a wined3d_context_gl structure to set_glsl_compute_shader_program().
      wined3d: Also try to create a depth/stencil buffer for WINED3D_NO3D devices in swapchain_init().
      wined3d: Pass a wined3d_context_gl structure to set_glsl_shader_program().
      wined3d: Pass a wined3d_context_gl structure to glsl_blitter_get_program().
      wined3d: Pass a wined3d_context_gl structure to nvts_activate_dimensions().
      wined3d: Pass a wined3d_context_gl structure to wined3d_query_create_buffer_object().
      wined3d: Try harder to reuse the current context.
      wined3d: Pass a wined3d_context_gl structure to wined3d_query_destroy_buffer_object().
      wined3d: Pass a wined3d_context_gl structure to wined3d_query_buffer_queue_result().
      wined3d: Pass a wined3d_context_gl structure to wined3d_so_statistics_query_end().
      wined3d: Pass a wined3d_context_gl structure to wined3d_pipeline_statistics_query_end().
      wined3d: Merge wined3d_texture_download_data() and wined3d_texture_gl_download_data().

Jacek Caban (27):
      ntoskrnl.exe: Implement IoGetStackLimits.
      ntoskrnl.exe: Implement ExInitializePagedLookasideList.
      ntoskrnl.exe: Implement ExDeletePagedLookasideList.
      tdi.sys: Fix EXTRADLLFLAGS.
      ntoskrnl.exe: Implement KeBugCheck and KeBugCheckEx.
      mshtml/tests: Fix comment tests on recent IE versions.
      mshtml/tests: Introduce set_body_html helper.
      mshtml/tests: Merge text range tests.
      mshtml/tests: Rename elements.js to dom.js.
      mshtml/tests: Improve tests exception handling.
      mshtml: Include URL pathname and query in test traces.
      winedbg: Move continue_on_first_exception handling out of dbg_attach_debuggee.
      winedbg: Set auto attach event after processing the first exception.
      msxml3: Fix string length handling in I[VB]SAXContentHandler::characters.
      ntdll: Move null terminating result to pf_vsnprintf callers.
      ntdll: Implement _snprintf_s and _vsnprintf_s.
      kernel32/tests: Add more debugger tests.
      server: Fix debug event order in generate_startup_debug_events.
      kernel32: Terminate process in unhandled exception handler.
      ntdll: Implement DbgUiIssueRemoteBreakin.
      kernel32: Reimplement DebugBreakProcess on top of DbgUiIssueRemoteBreakin.
      winternl.h: Remove inline DbgBreakPoint version.
      kernel32: Use DebugBreakProcess in DebugActiveProcess.
      server: Remove no longer needed break_process.
      server: Rename cpu_type_t to client_cpu_t.
      winmm: Use condition variable to sleep in timer thread.
      winmm: Build with msvcrt.

Jactry Zeng (4):
      d3d8/tests: Add tests for 32-bit depth format support.
      d3d9/tests: Add tests for 32-bit depth format support.
      ddraw/tests: Add tests for 32-bit depth format support.
      wined3d: Drop support for WINED3DFMT_D32_UNORM.

Jeff Smith (2):
      d3drm: CreateViewport checks for non-NULL viewport pointer first.
      d3drm: Fix reference leak in d3drm_viewport2_Clear().

Justin Martin (1):
      d3d9: Implement d3d9_device_CreateRenderTargetEx().

Józef Kucia (2):
      d3d12/tests: Add test for creating swapchain on desktop window.
      dxgi: Forbid creating D3D12 swapchains on desktop window.

Ken Thomases (1):
      gdi32: Also accept "\\.\DISPLAY<n>" devices names with <n> other than 1 as display devices.

Marcus Meissner (1):
      mshtml: Fixed buffer size to WideCharToMultiByte.

Michael Müller (1):
      wininet: Allow to set INTERNET_OPTION_HTTP_DECODING on sessions and connections.

Nikolay Sivov (20):
      mfplat: Improve PROPVARIANT arguments traces.
      mfplat: Add MF_LOW_LATENCY attribute GUID.
      mfreadwrite: Add MFCreateSinkWriterFromURL() stub.
      mshtml: Add IDocumentRange stub.
      user32/tests: Use SendInput() directly.
      user32/tests: Add another test for KEYEVENTF_UNICODE mode.
      server: Use KEYEVENTF_UNICODE mode only when virtual key code was not specified.
      mfplat: Trace MF_PD_DURATION guid.
      mshtml: Add IHTMLDOMRange stub.
      strmbase: Remove unused function.
      dwrite: Remove unused functions.
      shlwapi: Remove unused function.
      d2d1: Remove unused function.
      devenum: Don't free uninitialized pointer value.
      kernel32: Remove unused functions.
      quartz: Remove unused function.
      d3d10core/tests: Use d3d10 enumeration types.
      winegstreamer: Add stub Video Processor MFT.
      mf: Return clock rate as session rate.
      mf: Fix method name.

Paul Gofman (6):
      ddraw: Factor out fixup_texture_alpha_op() function.
      ddraw: Set _TSS_ALPHA_OP to _SELECT_ARG1 in case of NULL texture in fixup_texture_alpha_op().
      d3d9/tests: Test sample and texture dimensions mismatch.
      wined3d: Do not modify shader register maps in backends.
      wined3d: Fixup 3D sampler when sampling 2D texture for PS models 2 and 3.
      wined3d: Fixup 2D sampler when sampling 3D texture for PS models 2 and 3.

Zebediah Figura (61):
      strmbase: Add default implementations of filter state change methods.
      quartz/filesource: Use strmbase filter state change methods.
      quartz/tests: Add more tests for standard media samples.
      quartz/memallocator: Clear some sample properties when freeing the sample.
      quartz/memallocator: Set the sample end time only if the start time is valid.
      quartz/memallocator: Forbid setting the start media time without setting the end time.
      quartz/memallocator: Avoid using a magic value for the start media time.
      quartz/memallocator: Return S_OK when clearing the media type.
      quartz/memallocator: Set the AM_SAMPLE_TYPECHANGED flag.
      wined3d: Store the cursor texture in a local variable in swapchain_gl_present().
      wine.inf: Add the GUID_DEVCLASS_SYSTEM class key.
      ntoskrnl.exe: Add a stub PnP manager driver.
      ntoskrnl.exe: Load a driver's root PnP devices when the driver is started.
      setupapi: Delay-load user32.
      services: Load root PnP drivers on startup.
      qcap/vfwcapture: Store the source pin inline in the VfwCapture structure.
      qcap/vfwcapture: Don't expose IAMStreamConfig from the filter.
      quartz/parser: Don't store the sink pin in the "ppPins" array.
      quartz/parser: Store the source pins as an array of Parser_OutputPin pointers.
      quartz/vmr9: Return S_OK when calling IVMRFilterConfig9::SetNumberOfStreams(1).
      ntoskrnl.exe: Handle some no-op PnP requests.
      ntoskrnl.exe: Handle IRP_MN_QUERY_ID for root PnP devices.
      ntoskrnl.exe: Stub PoStartNextPowerIrp().
      ntoskrnl.exe: Implement PoCallDriver().
      qcap/tests: Add some tests for IBaseFilter::EnumPins on the AVI muxer.
      qcap/tests: Add some tests for IBaseFilter::FindPin() on the AVI mux filter.
      qcap/tests: Add some tests for querying AVI mux pin information.
      qcap/tests: Add some tests for AVI mux pin interfaces.
      qcap/tests: Add some more tests for AVI mux media types.
      setupapi: Also start newly installed root PnP services in SetupDiInstallDevice().
      hidclass.sys: Detach the HID device before deleting it.
      quartz/tests: Add some tests for VMR7 media types.
      quartz/tests: Add some tests for VMR9 media types.
      quartz/tests: Add some tests for IEnumMediaTypes().
      qcap/tests: Add some tests for IEnumMediaTypes().
      qedit/tests: Add some tests for media types.
      qedit/tests: Add some tests for IEnumMediaTypes().
      strmbase: Simplify IEnumMediaTypesImpl_Next().
      strmbase: Fix implementation of IEnumMediaTypes::Skip().
      msi: Close all handles opened by a custom action thread.
      ntdll: Correctly fill DataTransferLength in SCSI_PASS_THROUGH and SCSI_PASS_THROUGH_DIRECT.
      strmbase: Remove unused "ThreadSignal" event.
      strmbase: Rename "evComplete" to "state_event" for clarity.
      strmbase: Wait for the presentation time in BaseRendererImpl_Receive().
      strmbase: Do not set RenderEvent in IBaseFilter::Run().
      strmbase: Split RenderEvent into separate events for advising and flushing.
      quartz/dsoundrender: Use flush_event instead of reimplementing it.
      quartz/dsoundrender: Use BaseRendererImpl_Pause().
      strmbase: Remove several unused callbacks.
      strmbase: Rename pfnOnStartStreaming to renderer_start_stream.
      strmbase: Rename pfnOnStopStreaming to renderer_stop_stream.
      ntoskrnl.exe: Use the registered interface class in IoSetDeviceInterfaceState().
      user32/tests: Test opening raw input devices.
      services: Report a PID of 0 for drivers.
      services: Do not overwrite the service type in SetServiceStatus().
      winebus.sys: Create a stub mouse device.
      winehid.inf: Add WINEMOUSE to the list of winehid device IDs.
      include: Add ntddmou.h.
      hidclass.sys: Create a mouse device interface for HID mouse devices.
      user32: Introduce and use an array_reserve() helper.
      user32: Factor out add_device().

Zhiyi Zhang (10):
      user32: Move EnumDisplayDevicesA/W to sysparams.c.
      user32: Avoid a possible race.
      dxgi/tests: Add more IDXGISwapChain_Present() tests.
      dxgi: Return DXGI_STATUS_OCCLUDED for minimised windows in d3d11_swapchain_present().
      dxgi/tests: Add IDXGIOutput ownership tests.
      winex11.drv: Use generic EnumDisplayMonitors.
      winex11.drv: Use generic GetMonitorInfo.
      winex11.drv: Specify enumerator when calling SetupDiGetClassDevsW.
      user32: Specify enumerator when calling SetupDiGetClassDevsW.
      user32: Cache monitor information.

--
Alexandre Julliard
julliard@xxxxxxxxxx




[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux