Wine-Devel
Threads by month
- ----- 2026 -----
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 20 participants
- 84526 discussions
[PATCH 3/6] gdi32: Use NtQueryFullAttributesFile directly in alloc_gdi_font.
by Jacek Caban Sept. 21, 2021
by Jacek Caban Sept. 21, 2021
Sept. 21, 2021
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/gdi32/font.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
1
0
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/gdi32/font.c | 77 ++++++++++++++++++++++++-------------------
dlls/gdi32/freetype.c | 7 ----
2 files changed, 43 insertions(+), 41 deletions(-)
1
0
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/gdi32/font.c | 3 +++
dlls/gdi32/text.c | 51 +++++++++++++++++++++++++++++++++++++++++------
2 files changed, 48 insertions(+), 6 deletions(-)
1
0
[PATCH 1/2] ole32/composite: Return requested interface in BindToObject() in NULL left moniker path.
by Nikolay Sivov Sept. 21, 2021
by Nikolay Sivov Sept. 21, 2021
Sept. 21, 2021
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/ole32/compositemoniker.c | 48 ++++++++++++++++-------------------
dlls/ole32/tests/moniker.c | 38 ++++++++++++++++++++++-----
2 files changed, 53 insertions(+), 33 deletions(-)
diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index 5914008fe39..38a2e2a4892 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -323,37 +323,33 @@ CompositeMonikerImpl_GetSizeMax(IMoniker* iface,ULARGE_INTEGER* pcbSize)
return S_OK;
}
-/******************************************************************************
- * CompositeMoniker_BindToObject
- ******************************************************************************/
-static HRESULT WINAPI
-CompositeMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc,
- IMoniker* pmkToLeft, REFIID riid, VOID** ppvResult)
+static HRESULT WINAPI CompositeMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc,
+ IMoniker *pmkToLeft, REFIID riid, void **result)
{
- HRESULT res;
- IRunningObjectTable *prot;
+ IRunningObjectTable *rot;
+ IUnknown *object;
+ HRESULT hr;
IMoniker *tempMk,*antiMk,*rightMostMk;
IEnumMoniker *enumMoniker;
- TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult);
+ TRACE("(%p,%p,%p,%s,%p)\n", iface, pbc, pmkToLeft, debugstr_guid(riid), result);
- if (ppvResult==NULL)
+ if (!result)
return E_POINTER;
- *ppvResult=0;
- /* If pmkToLeft is NULL, this method looks for the moniker in the ROT, and if found, queries the retrieved */
- /* object for the requested interface pointer. */
- if(pmkToLeft==NULL){
-
- res=IBindCtx_GetRunningObjectTable(pbc,&prot);
+ *result = NULL;
- if (SUCCEEDED(res)){
-
- /* if the requested class was loaded before ! we don't need to reload it */
- res = IRunningObjectTable_GetObject(prot,iface,(IUnknown**)ppvResult);
+ if (!pmkToLeft)
+ {
+ hr = IBindCtx_GetRunningObjectTable(pbc, &rot);
+ if (SUCCEEDED(hr))
+ {
+ hr = IRunningObjectTable_GetObject(rot, iface, &object);
+ IRunningObjectTable_Release(rot);
+ if (FAILED(hr)) return E_INVALIDARG;
- if (res==S_OK)
- return res;
+ hr = IUnknown_QueryInterface(object, riid, result);
+ IUnknown_Release(object);
}
}
else{
@@ -364,17 +360,17 @@ CompositeMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc,
IEnumMoniker_Next(enumMoniker,1,&rightMostMk,NULL);
IEnumMoniker_Release(enumMoniker);
- res=CreateAntiMoniker(&antiMk);
- res=IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
+ hr = CreateAntiMoniker(&antiMk);
+ hr = IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
IMoniker_Release(antiMk);
- res=IMoniker_BindToObject(rightMostMk,pbc,tempMk,riid,ppvResult);
+ hr = IMoniker_BindToObject(rightMostMk,pbc,tempMk,riid,result);
IMoniker_Release(tempMk);
IMoniker_Release(rightMostMk);
}
- return res;
+ return hr;
}
/******************************************************************************
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index b584f370d70..d65535a0584 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -2906,8 +2906,9 @@ static void test_generic_composite_moniker(void)
{
IMoniker *moniker, *inverse, *inverse2, *moniker1, *moniker2, *moniker3, *moniker4;
IEnumMoniker *enummoniker;
+ IRunningObjectTable *rot;
+ DWORD hash, cookie;
HRESULT hr;
- DWORD hash;
IBindCtx *bindctx;
FILETIME filetime;
IUnknown *unknown;
@@ -3032,15 +3033,9 @@ todo_wine
hr = IMoniker_GetTimeOfLastChange(moniker, bindctx, NULL, &filetime);
ok(hr == MK_E_NOTBINDABLE, "IMoniker_GetTimeOfLastChange should return MK_E_NOTBINDABLE, not 0x%08x\n", hr);
- hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
- todo_wine
- ok(hr == E_INVALIDARG, "IMoniker_BindToObject should return E_INVALIDARG, not 0x%08x\n", hr);
-
hr = IMoniker_BindToStorage(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
ok(hr == E_INVALIDARG, "IMoniker_BindToStorage should return E_INVALIDARG, not 0x%08x\n", hr);
- IBindCtx_Release(bindctx);
-
hr = IMoniker_Inverse(moniker, &inverse);
ok(hr == S_OK, "Failed to get inverse, hr %#x.\n", hr);
TEST_MONIKER_TYPE(inverse, MKSYS_GENERICCOMPOSITE);
@@ -3059,7 +3054,36 @@ todo_wine
todo_wine
ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+ /* BindToObject() */
+ hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+ hr = IBindCtx_GetRunningObjectTable(bindctx, &rot);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ hr = IRunningObjectTable_Register(rot, ROTFLAGS_REGISTRATIONKEEPSALIVE, (IUnknown *)moniker,
+ moniker, &cookie);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ IUnknown_Release(unknown);
+
+ hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IMoniker, (void **)&unknown);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ IUnknown_Release(unknown);
+
+ hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IDispatch, (void **)&unknown);
+ ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+
+ hr = IRunningObjectTable_Revoke(rot, cookie);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ IRunningObjectTable_Release(rot);
+
IMoniker_Release(moniker);
+
+ IBindCtx_Release(bindctx);
}
static void test_pointer_moniker(void)
--
2.33.0
1
1
Sept. 21, 2021
Fixes a regression in Hitman 2, Death Stranding introduced
by commit be5acd1c07e093c3b4fe079bff3db74f300ea83b.
Signed-off-by: Paul Gofman <pgofman(a)codeweavers.com>
---
v2:
- Increment and decrement recursion count atmoically.
The request is not thread safe and application should care about
synchronized use of it. Yet given the notfication callbacks can be called
either synchrnous or queued to the thread pool, recursion count increment
and decrement may race.
MSDN [1] explicitly warns about potential stack overflow when calling WinHttpReadData()
from notification callback: "When the read buffer is very small, WinHttpReadData may complete
synchronously, and if the WINHTTP_CALLBACK_STATUS_READ_COMPLETE completion then triggers another
call to WinHttpReadData, a stack overflow can result. It is best to use a read buffer that is
8 Kilobytes or larger in size.".
However, this exactly what happens in Hitman 2 in Wine with the referenced regression commit:
the buffer size is 256, WinHttpReadData() is called from notification callback while much bigger
amount of data is available and that eventually leads to stack overflow.
Testing on Windows shows that the native implementation actually prevents too long recursion
allowing maximum depth of 127 on older Windows (before Win7) and 2 on the newer Windows.
Unlike Hitman 2 which depends on just the stack overflow not to happen, Death Stranding depends
on the newer Windows recursion limit. It just hangs if it's notification callback is called
recusrively for read. It doesn't happen with the max recursion level of 2 as it interleaves
WinHttpQueryDataAvailable() and WinHttpReadData() from the notification callback (somewhat
similar to what my unit test is doing).
1. https://docs.microsoft.com/en-us/windows/win32/api/winhttp/nf-winhttp-winht…
dlls/winhttp/request.c | 11 ++-
dlls/winhttp/session.c | 4 +-
dlls/winhttp/tests/notification.c | 156 ++++++++++++++++++++++++++++++
dlls/winhttp/winhttp_private.h | 1 +
4 files changed, 167 insertions(+), 5 deletions(-)
diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index f2cb24d4486..ed3b41a3155 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -2825,6 +2825,11 @@ static DWORD query_data_ready( struct request *request )
return count;
}
+static BOOL skip_async_queue( struct request *request )
+{
+ return request->hdr.recursion_count < 3 && (end_of_read_data( request ) || query_data_ready( request ));
+}
+
static DWORD query_data_available( struct request *request, DWORD *available, BOOL async )
{
DWORD ret = ERROR_SUCCESS, count = 0;
@@ -2889,8 +2894,7 @@ BOOL WINAPI WinHttpQueryDataAvailable( HINTERNET hrequest, LPDWORD available )
return FALSE;
}
- if ((async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC) && !end_of_read_data( request )
- && !query_data_ready( request ))
+ if ((async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC) && !skip_async_queue( request ))
{
struct query_data *q;
@@ -2947,8 +2951,7 @@ BOOL WINAPI WinHttpReadData( HINTERNET hrequest, LPVOID buffer, DWORD to_read, L
return FALSE;
}
- if ((async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC) && !end_of_read_data( request )
- && !query_data_ready( request ))
+ if ((async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC) && !skip_async_queue( request ))
{
struct read_data *r;
diff --git a/dlls/winhttp/session.c b/dlls/winhttp/session.c
index 659a1ec8cee..3c8cb0fa992 100644
--- a/dlls/winhttp/session.c
+++ b/dlls/winhttp/session.c
@@ -48,8 +48,10 @@ void send_callback( struct object_header *hdr, DWORD status, void *info, DWORD b
{
if (hdr->callback && (hdr->notify_mask & status))
{
- TRACE("%p, 0x%08x, %p, %u\n", hdr, status, info, buflen);
+ TRACE("%p, 0x%08x, %p, %u, %u\n", hdr, status, info, buflen, hdr->recursion_count);
+ InterlockedIncrement( &hdr->recursion_count );
hdr->callback( hdr->handle, hdr->context, status, info, buflen );
+ InterlockedDecrement( &hdr->recursion_count );
TRACE("returning from 0x%08x callback\n", status);
}
}
diff --git a/dlls/winhttp/tests/notification.c b/dlls/winhttp/tests/notification.c
index 4cfffe6687e..da691efd27e 100644
--- a/dlls/winhttp/tests/notification.c
+++ b/dlls/winhttp/tests/notification.c
@@ -1212,6 +1212,161 @@ static void test_persistent_connection(int port)
CloseHandle( info.wait );
}
+struct test_recursion_context
+{
+ HANDLE request;
+ HANDLE wait;
+ LONG recursion_count, max_recursion_query, max_recursion_read;
+ BOOL read_from_callback;
+ BOOL have_sync_callback;
+};
+
+/* The limit is 128 before Win7 and 3 on newer Windows. */
+#define TEST_RECURSION_LIMIT 128
+
+static void CALLBACK test_recursion_callback( HINTERNET handle, DWORD_PTR context_ptr,
+ DWORD status, void *buffer, DWORD buflen )
+{
+ struct test_recursion_context *context = (struct test_recursion_context *)context_ptr;
+ DWORD err;
+ BOOL ret;
+ BYTE b;
+
+ switch (status)
+ {
+ case WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE:
+ case WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE:
+ SetEvent( context->wait );
+ break;
+
+ case WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE:
+ if (!context->read_from_callback)
+ {
+ SetEvent( context->wait );
+ break;
+ }
+
+ if (!*(DWORD *)buffer)
+ {
+ SetEvent( context->wait );
+ break;
+ }
+
+ ok(context->recursion_count < TEST_RECURSION_LIMIT,
+ "Got unexpected context->recursion_count %u, thread %#x.\n",
+ context->recursion_count, GetCurrentThreadId());
+ context->max_recursion_query = max( context->max_recursion_query, context->recursion_count );
+ InterlockedIncrement( &context->recursion_count );
+ ret = WinHttpReadData( context->request, &b, 1, NULL );
+ err = GetLastError();
+ ok(ret, "Failed to read data, GetLastError() %u.\n", err);
+ ok(err == ERROR_SUCCESS || err == ERROR_IO_PENDING, "Got unexpected err %u.\n", err);
+ if (err == ERROR_SUCCESS)
+ context->have_sync_callback = TRUE;
+ InterlockedDecrement( &context->recursion_count );
+ break;
+
+ case WINHTTP_CALLBACK_STATUS_READ_COMPLETE:
+ if (!buflen)
+ {
+ SetEvent( context->wait );
+ break;
+ }
+ ok(context->recursion_count < TEST_RECURSION_LIMIT,
+ "Got unexpected context->recursion_count %u, thread %#x.\n",
+ context->recursion_count, GetCurrentThreadId());
+ context->max_recursion_read = max( context->max_recursion_read, context->recursion_count );
+ context->read_from_callback = TRUE;
+ InterlockedIncrement( &context->recursion_count );
+ ret = WinHttpQueryDataAvailable( context->request, NULL );
+ err = GetLastError();
+ ok(ret, "Failed to query data available, GetLastError() %u.\n", err);
+ ok(err == ERROR_SUCCESS || err == ERROR_IO_PENDING, "Got unexpected err %u.\n", err);
+ if (err == ERROR_SUCCESS)
+ context->have_sync_callback = TRUE;
+ InterlockedDecrement( &context->recursion_count );;
+ break;
+ }
+}
+
+static void test_recursion(void)
+{
+ struct test_recursion_context context;
+ HANDLE session, connection, request;
+ DWORD size, status, err;
+ BOOL ret;
+ BYTE b;
+
+ memset( &context, 0, sizeof(context) );
+
+ context.wait = CreateEventW( NULL, FALSE, FALSE, NULL );
+
+ session = WinHttpOpen( L"winetest", 0, NULL, NULL, WINHTTP_FLAG_ASYNC );
+ ok(!!session, "Failed to open session, GetLastError() %u.\n", GetLastError());
+
+ WinHttpSetStatusCallback( session, test_recursion_callback, WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS, 0 );
+
+ connection = WinHttpConnect( session, L"test.winehq.org", 0, 0 );
+ ok(!!connection, "Failed to open a connection, GetLastError() %u.\n", GetLastError());
+
+ request = WinHttpOpenRequest( connection, NULL, L"/tests/hello.html", NULL, NULL, NULL, 0 );
+ ok(!!request, "Failed to open a request, GetLastError() %u.\n", GetLastError());
+
+ context.request = request;
+ ret = WinHttpSendRequest( request, NULL, 0, NULL, 0, 0, (DWORD_PTR)&context );
+ err = GetLastError();
+ if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
+ {
+ skip("Connection failed, skipping\n");
+ WinHttpSetStatusCallback( session, NULL, WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS, 0 );
+ WinHttpCloseHandle( request );
+ WinHttpCloseHandle( connection );
+ WinHttpCloseHandle( session );
+ CloseHandle( context.wait );
+ return;
+ }
+ ok(ret, "Failed to send request, GetLastError() %u.\n", GetLastError());
+
+ WaitForSingleObject( context.wait, INFINITE );
+
+ ret = WinHttpReceiveResponse( request, NULL );
+ ok(ret, "Failed to receive response, GetLastError() %u.\n", GetLastError());
+
+ WaitForSingleObject( context.wait, INFINITE );
+
+ size = sizeof(status);
+ ret = WinHttpQueryHeaders( request, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, NULL,
+ &status, &size, NULL );
+ ok(ret, "Request failed, GetLastError() %u.\n", GetLastError());
+ ok(status == 200, "Request failed unexpectedly, status %u.\n", status);
+
+ ret = WinHttpQueryDataAvailable( request, NULL );
+ ok(ret, "Failed to query data available, GetLastError() %u.\n", GetLastError());
+
+ WaitForSingleObject( context.wait, INFINITE );
+
+ ret = WinHttpReadData( request, &b, 1, NULL );
+ ok(ret, "Failed to read data, GetLastError() %u.\n", GetLastError());
+
+ WaitForSingleObject( context.wait, INFINITE );
+ if (context.have_sync_callback)
+ {
+ ok(context.max_recursion_query >= 2, "Got unexpected max_recursion_query %u.\n", context.max_recursion_query);
+ ok(context.max_recursion_read >= 2, "Got unexpected max_recursion_read %u.\n", context.max_recursion_read);
+ }
+ else
+ {
+ skip("No sync callbacks.\n");
+ }
+
+ WinHttpSetStatusCallback( session, NULL, WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS, 0 );
+
+ WinHttpCloseHandle( request );
+ WinHttpCloseHandle( connection );
+ WinHttpCloseHandle( session );
+ CloseHandle( context.wait );
+}
+
START_TEST (notification)
{
HMODULE mod = GetModuleHandleA( "winhttp.dll" );
@@ -1230,6 +1385,7 @@ START_TEST (notification)
test_redirect();
test_async();
test_websocket();
+ test_recursion();
si.event = CreateEventW( NULL, 0, 0, NULL );
si.port = 7533;
diff --git a/dlls/winhttp/winhttp_private.h b/dlls/winhttp/winhttp_private.h
index 069951d4811..291a38e7bdd 100644
--- a/dlls/winhttp/winhttp_private.h
+++ b/dlls/winhttp/winhttp_private.h
@@ -49,6 +49,7 @@ struct object_header
LONG refs;
WINHTTP_STATUS_CALLBACK callback;
DWORD notify_mask;
+ LONG recursion_count;
struct list entry;
};
--
2.31.1
3
2
[PATCH 1/6] dinput8/tests: Don't check device object data sequence numbers.
by Rémi Bernon Sept. 21, 2021
by Rémi Bernon Sept. 21, 2021
Sept. 21, 2021
We usually have them wrong but sometimes right.
Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com>
---
dlls/dinput8/tests/hid.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/dlls/dinput8/tests/hid.c b/dlls/dinput8/tests/hid.c
index b02cdf1aa30..e5e1bfde79d 100644
--- a/dlls/dinput8/tests/hid.c
+++ b/dlls/dinput8/tests/hid.c
@@ -4214,8 +4214,6 @@ static void test_simple_joystick(void)
ok( res == 1, "got %u expected %u\n", res, 1 );
check_member( objdata[0], expect_objdata[0], "%#x", dwOfs );
check_member( objdata[0], expect_objdata[0], "%#x", dwData );
- todo_wine
- check_member( objdata[0], expect_objdata[0], "%#x", dwSequence );
ok( objdata[0].uAppData == -1, "got %p, expected %p\n", (void *)objdata[0].uAppData, (void *)-1 );
res = 4;
hr = IDirectInputDevice8_GetDeviceData( device, sizeof(DIDEVICEOBJECTDATA), objdata, &res, 0 );
@@ -4226,8 +4224,6 @@ static void test_simple_joystick(void)
winetest_push_context( "objdata[%d]", i );
check_member( objdata[i], expect_objdata[1 + i], "%#x", dwOfs );
check_member( objdata[i], expect_objdata[1 + i], "%#x", dwData );
- todo_wine
- check_member( objdata[i], expect_objdata[1 + i], "%#x", dwSequence );
ok( objdata[i].uAppData == -1, "got %p, expected %p\n", (void *)objdata[i].uAppData, (void *)-1 );
winetest_pop_context();
}
--
2.33.0
1
5
[PATCH v13 1/2] ntdll/socket: Implement exclusive flag for IOCTL_AFD_POLL.
by Guillaume Charifi Sept. 21, 2021
by Guillaume Charifi Sept. 21, 2021
Sept. 21, 2021
Signed-off-by: Guillaume Charifi <guillaume.charifi(a)sfr.fr>
---
dlls/ntdll/unix/socket.c | 6 +--
include/wine/afd.h | 2 +-
server/protocol.def | 1 +
server/sock.c | 101 ++++++++++++++++++++++++++++++++++-----
4 files changed, 95 insertions(+), 15 deletions(-)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c
index 73d61c0d4e6..c40d0b526d7 100644
--- a/dlls/ntdll/unix/socket.c
+++ b/dlls/ntdll/unix/socket.c
@@ -736,12 +736,11 @@ static NTSTATUS sock_poll( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi
|| in_size < offsetof( struct afd_poll_params, sockets[params->count] ))
return STATUS_INVALID_PARAMETER;
- TRACE( "timeout %s, count %u, unknown %#x, padding (%#x, %#x, %#x), sockets[0] {%04lx, %#x}\n",
- wine_dbgstr_longlong(params->timeout), params->count, params->unknown,
+ TRACE( "timeout %s, count %u, exclusive %u, padding (%#x, %#x, %#x), sockets[0] {%04lx, %#x}\n",
+ wine_dbgstr_longlong(params->timeout), params->count, params->exclusive,
params->padding[0], params->padding[1], params->padding[2],
params->sockets[0].socket, params->sockets[0].flags );
- if (params->unknown) FIXME( "unknown boolean is %#x\n", params->unknown );
if (params->padding[0]) FIXME( "padding[0] is %#x\n", params->padding[0] );
if (params->padding[1]) FIXME( "padding[1] is %#x\n", params->padding[1] );
if (params->padding[2]) FIXME( "padding[2] is %#x\n", params->padding[2] );
@@ -782,6 +781,7 @@ static NTSTATUS sock_poll( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi
SERVER_START_REQ( poll_socket )
{
req->async = server_async( handle, &async->io, event, apc, apc_user, iosb_client_ptr(io) );
+ req->exclusive = !!params->exclusive;
req->timeout = params->timeout;
wine_server_add_data( req, input, params->count * sizeof(*input) );
wine_server_set_reply( req, async->sockets, params->count * sizeof(async->sockets[0]) );
diff --git a/include/wine/afd.h b/include/wine/afd.h
index e67ecae25a9..f4682f464e8 100644
--- a/include/wine/afd.h
+++ b/include/wine/afd.h
@@ -104,7 +104,7 @@ struct afd_poll_params
{
LONGLONG timeout;
unsigned int count;
- BOOLEAN unknown;
+ BOOLEAN exclusive;
BOOLEAN padding[3];
struct
{
diff --git a/server/protocol.def b/server/protocol.def
index a5030fcf813..6a3faf3e625 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1451,6 +1451,7 @@ struct poll_socket_output
/* Perform an async poll on a socket */
@REQ(poll_socket)
+ int exclusive;
async_data_t async; /* async I/O parameters */
timeout_t timeout; /* timeout */
VARARG(sockets,poll_socket_input); /* list of sockets to poll */
diff --git a/server/sock.c b/server/sock.c
index fc234e89865..f2799eb120a 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -128,6 +128,7 @@ struct poll_req
struct async *async;
struct iosb *iosb;
struct timeout_user *timeout;
+ int exclusive;
unsigned int count;
struct poll_socket_output *output;
struct
@@ -205,6 +206,7 @@ struct sock
struct list accept_list; /* list of pending accept requests */
struct accept_req *accept_recv_req; /* pending accept-into request which will recv on this socket */
struct connect_req *connect_req; /* pending connection request */
+ struct poll_req *main_poll; /* main poll */
union win_sockaddr addr; /* socket name */
int addr_len; /* socket name length */
unsigned int rcvbuf; /* advisory recv buffer size */
@@ -231,6 +233,7 @@ static int sock_get_poll_events( struct fd *fd );
static void sock_poll_event( struct fd *fd, int event );
static enum server_fd_type sock_get_fd_type( struct fd *fd );
static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async );
+static void sock_cancel_async( struct fd *fd, struct async *async );
static void sock_queue_async( struct fd *fd, struct async *async, int type, int count );
static void sock_reselect_async( struct fd *fd, struct async_queue *queue );
@@ -274,7 +277,7 @@ static const struct fd_ops sock_fd_ops =
default_fd_get_file_info, /* get_file_info */
no_fd_get_volume_info, /* get_volume_info */
sock_ioctl, /* ioctl */
- default_fd_cancel_async, /* cancel_async */
+ sock_cancel_async, /* cancel_async */
sock_queue_async, /* queue_async */
sock_reselect_async /* reselect_async */
};
@@ -840,6 +843,8 @@ static void complete_async_polls( struct sock *sock, int event, int error )
LIST_FOR_EACH_ENTRY_SAFE( req, next, &poll_list, struct poll_req, entry )
{
unsigned int i;
+ unsigned int j;
+ int complete = 0;
if (req->iosb->status != STATUS_PENDING) continue;
@@ -848,28 +853,50 @@ static void complete_async_polls( struct sock *sock, int event, int error )
if (req->sockets[i].sock != sock) continue;
if (!(req->sockets[i].flags & flags)) continue;
- if (debug_level)
- fprintf( stderr, "completing poll for socket %p, wanted %#x got %#x\n",
- sock, req->sockets[i].flags, flags );
+ complete = 1;
+ break;
+ }
- req->output[i].flags = req->sockets[i].flags & flags;
- req->output[i].status = sock_get_ntstatus( error );
+ if (!complete)
+ continue;
- async_request_complete( req->async, STATUS_SUCCESS, 0,
- req->count * sizeof(*req->output), req->output );
- break;
+ if (debug_level)
+ fprintf( stderr, "completing poll for socket %p, wanted %#x got %#x\n",
+ sock, req->sockets[i].flags, flags );
+
+ for (j = 0; j < req->count; ++j)
+ {
+ struct sock *sock = req->sockets[j].sock;
+
+ if (sock->main_poll == req)
+ sock->main_poll = NULL;
}
+
+ req->output[i].flags = req->sockets[i].flags & flags;
+ req->output[i].status = sock_get_ntstatus( error );
+
+ async_request_complete( req->async, STATUS_SUCCESS, 0,
+ req->count * sizeof(*req->output), req->output );
}
}
static void async_poll_timeout( void *private )
{
struct poll_req *req = private;
+ unsigned int i;
req->timeout = NULL;
if (req->iosb->status != STATUS_PENDING) return;
+ for (i = 0; i < req->count; ++i)
+ {
+ struct sock *sock = req->sockets[i].sock;
+
+ if (sock->main_poll == req)
+ sock->main_poll = NULL;
+ }
+
async_request_complete( req->async, STATUS_TIMEOUT, 0, req->count * sizeof(*req->output), req->output );
}
@@ -1217,6 +1244,29 @@ static enum server_fd_type sock_get_fd_type( struct fd *fd )
return FD_TYPE_SOCKET;
}
+static void sock_cancel_async( struct fd *fd, struct async *async )
+{
+ struct poll_req *req;
+
+ LIST_FOR_EACH_ENTRY( req, &poll_list, struct poll_req, entry )
+ {
+ unsigned int i;
+
+ if (req->async != async)
+ continue;
+
+ for (i = 0; i < req->count; i++)
+ {
+ struct sock *sock = req->sockets[i].sock;
+
+ if (sock->main_poll == req)
+ sock->main_poll = NULL;
+ }
+ }
+
+ async_terminate( async, STATUS_CANCELLED );
+}
+
static void sock_queue_async( struct fd *fd, struct async *async, int type, int count )
{
struct sock *sock = get_fd_user( fd );
@@ -1383,6 +1433,7 @@ static struct sock *create_socket(void)
sock->ifchange_obj = NULL;
sock->accept_recv_req = NULL;
sock->connect_req = NULL;
+ sock->main_poll = NULL;
memset( &sock->addr, 0, sizeof(sock->addr) );
sock->addr_len = 0;
sock->rd_shutdown = 0;
@@ -2840,7 +2891,32 @@ static int poll_single_socket( struct sock *sock, int mask )
return get_poll_flags( sock, pollfd.revents ) & mask;
}
-static void poll_socket( struct sock *poll_sock, struct async *async, timeout_t timeout,
+static void poll_handle_exclusive(struct poll_req *req)
+{
+ unsigned int i;
+
+ for (i = 0; i < req->count; ++i)
+ {
+ struct sock *sock = req->sockets[i].sock;
+ struct poll_req *main_poll = sock->main_poll;
+
+ if (main_poll && main_poll->exclusive && req->exclusive)
+ {
+ /* Previous exclusive main poll replaced by new exclusive poll. */
+ main_poll->iosb->status = STATUS_SUCCESS;
+ main_poll->iosb->out_data = main_poll->output;
+ main_poll->iosb->out_size = main_poll->count * sizeof(*main_poll->output);
+ async_terminate(main_poll->async, STATUS_ALERTED);
+
+ main_poll = NULL;
+ }
+
+ if (!main_poll)
+ sock->main_poll = req;
+ }
+}
+
+static void poll_socket( struct sock *poll_sock, struct async *async, int exclusive, timeout_t timeout,
unsigned int count, const struct poll_socket_input *input )
{
struct poll_socket_output *output;
@@ -2881,11 +2957,14 @@ static void poll_socket( struct sock *poll_sock, struct async *async, timeout_t
req->sockets[i].flags = input[i].flags;
}
+ req->exclusive = exclusive;
req->count = count;
req->async = (struct async *)grab_object( async );
req->iosb = async_get_iosb( async );
req->output = output;
+ poll_handle_exclusive(req);
+
list_add_tail( &poll_list, &req->entry );
async_set_completion_callback( async, free_poll_req, req );
queue_async( &poll_sock->poll_q, async );
@@ -3287,7 +3366,7 @@ DECL_HANDLER(poll_socket)
if ((async = create_request_async( sock->fd, get_fd_comp_flags( sock->fd ), &req->async )))
{
- poll_socket( sock, async, req->timeout, count, input );
+ poll_socket( sock, async, req->exclusive, req->timeout, count, input );
reply->wait = async_handoff( async, NULL, 0 );
reply->options = get_fd_options( sock->fd );
release_object( async );
--
2.33.0
1
1
[PATCH 1/2] loader/wine.inf: Fill gaps in Dynamic DST timezone data.
by Giovanni Mascellani Sept. 21, 2021
by Giovanni Mascellani Sept. 21, 2021
Sept. 21, 2021
Microsoft data is contiguous, and there applications (e.g., Mono) that
depend on that.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51758
Signed-off-by: Giovanni Mascellani <gmascellani(a)codeweavers.com>
---
loader/wine.inf.in | 226 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 226 insertions(+)
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index ac30d9560c6..3f2827f60d6 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -2793,6 +2793,8 @@ HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2008",1,98,f
HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2009",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2010",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2011",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2012",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2013",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2014",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2015",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Altai Standard Time\Dynamic DST,"2016",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
@@ -2863,6 +2865,8 @@ HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2008",1,
HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2009",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2010",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2011",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2012",1,10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2013",1,10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2014",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2015",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Astrakhan Standard Time\Dynamic DST,"2016",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
@@ -2969,6 +2973,13 @@ HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2000",1,b4,0
HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2001",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,0a,00,00,00,02,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2002",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,0b,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2003",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2004",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2005",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2006",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2007",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2008",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2009",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2010",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2011",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,0a,00,00,00,03,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2012",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Bahia Standard Time\Dynamic DST,"2013",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
@@ -3387,6 +3398,9 @@ HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2007",1,88,f
HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2008",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,08,00,05,00,05,00,00,00,00,00,00,00,00,00,00,00,04,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2009",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,08,00,05,00,03,00,00,00,00,00,00,00,00,00,00,00,04,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2010",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,04,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2011",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2012",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2013",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2014",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,04,00,00,00,00,00,00,00,00,00,00,00,05,00,05,00,03,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"2015",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Egypt Standard Time\Dynamic DST,"FirstEntry",0x10001,"2000"
@@ -3444,15 +3458,31 @@ HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2017",1,30,fd
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2018",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2019",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2020",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0c,00,00,00,03,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2021",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2022",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2023",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2024",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2025",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2026",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2027",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2028",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2029",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2030",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2031",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2032",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2033",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2034",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2035",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2036",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2037",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2038",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2039",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2040",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2041",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2042",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2043",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2044",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2045",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2046",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2047",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Fiji Standard Time\Dynamic DST,"2048",1,30,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,02,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,02,00,02,00,00,00,00,00,00,00
@@ -3497,19 +3527,52 @@ HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time,"MUI_Std",,"@tzres.dl
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time,"Std",,"Greenland Standard Time"
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time,"TZI",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2001",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2002",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2003",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2004",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2005",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2006",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2007",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2008",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2009",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2010",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2011",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2012",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2013",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2014",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2015",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2016",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2017",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2018",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2019",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2020",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2021",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2022",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2023",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2024",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2025",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2026",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2027",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2028",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2029",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2030",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2031",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2032",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2033",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2034",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2035",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2036",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2037",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2038",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2039",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2040",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2041",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2042",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2043",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2044",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2045",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2046",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2047",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2048",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"2049",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,17,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,16,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Greenland Standard Time\Dynamic DST,"FirstEntry",0x10001,"2001"
@@ -3547,6 +3610,10 @@ HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2008",1,2c,0
HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2009",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2010",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2011",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2012",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2013",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2014",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2015",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2016",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"2017",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Haiti Standard Time\Dynamic DST,"FirstEntry",0x10001,"2000"
@@ -3578,6 +3645,8 @@ HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2002",1,2e,ff
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2003",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2004",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,03,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2005",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,02,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2006",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2007",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2008",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,03,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2009",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2010",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,04,00,00,00,00,00,00,00,00,00
@@ -3644,10 +3713,39 @@ HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2010",1,88,
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2011",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2012",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2013",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2014",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2015",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2016",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2017",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2018",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2019",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2020",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2021",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2022",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2023",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2024",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2025",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2026",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2027",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2028",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2029",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2030",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2031",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2032",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2033",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2034",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2035",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2036",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2037",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2038",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2039",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2040",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2041",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2042",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2043",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2044",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2045",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2046",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2047",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2048",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"FirstEntry",0x10001,"2000"
@@ -3665,13 +3763,44 @@ HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2002",1,88,
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2003",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2004",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,03,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2005",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2006",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2007",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2008",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2009",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2010",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2011",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2012",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2013",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0c,00,05,00,03,00,00,00,00,00,00,00,00,00,00,00,01,00,02,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2014",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2015",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2016",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2017",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2018",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2019",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2020",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2021",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2022",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2023",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2024",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2025",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2026",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2027",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2028",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2029",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2030",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2031",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2032",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2033",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2034",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2035",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2036",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2037",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2038",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2039",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2040",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2041",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2042",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2043",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2044",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,01,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"2045",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time\Dynamic DST,"FirstEntry",0x10001,"2000"
@@ -3794,6 +3923,7 @@ HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"2011",1
HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"2012",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,05,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"2013",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,02,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"2014",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"2015",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"2016",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,05,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,08,00,00,00,02,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"2017",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Magallanes Standard Time\Dynamic DST,"FirstEntry",0x10001,"2000"
@@ -3960,6 +4090,8 @@ HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"20
HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2009",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2010",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2011",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2012",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2013",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2014",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2015",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\N. Central Asia Standard Time\Dynamic DST,"2016",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,07,00,00,00,04,00,02,00,00,00,00,00,00,00
@@ -4187,12 +4319,32 @@ HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2016",1
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2017",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,05,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,08,00,00,00,02,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2018",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,05,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,08,00,00,00,02,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2019",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,02,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2020",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2021",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2022",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2023",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2024",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,02,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2025",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2026",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2027",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2028",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2029",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2030",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,02,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2031",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2032",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2033",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2034",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2035",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2036",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2037",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2038",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2039",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2040",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2041",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,02,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2042",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2043",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2044",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2045",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2046",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2047",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,02,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pacific SA Standard Time\Dynamic DST,"2048",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,01,00,00,00,00,00,00,00,00,00
@@ -4243,6 +4395,11 @@ HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time,"MUI_Std",,"@tzres.dll
HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time,"Std",,"Pakistan Standard Time"
HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time,"TZI",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2002",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2003",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2004",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2005",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2006",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2007",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2008",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2009",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,04,00,03,00,03,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Pakistan Standard Time\Dynamic DST,"2010",1,d4,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
@@ -4458,6 +4615,8 @@ HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2008",1,a
HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2009",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2010",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2011",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2012",1,6c,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2013",1,6c,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2014",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2015",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Sakhalin Standard Time\Dynamic DST,"2016",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
@@ -4517,6 +4676,8 @@ HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2008",1,4c
HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2009",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2010",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2011",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2012",1,10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2013",1,10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2014",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2015",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Saratov Standard Time\Dynamic DST,"2016",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,0c,00,00,00,01,00,02,00,00,00,00,00,00,00
@@ -4605,6 +4766,7 @@ HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2005",1,88,f
HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2006",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,04,00,00,00,00,00,00,00,00,00,00,00,04,00,06,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2007",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2008",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2009",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2010",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,00,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2011",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,04,00,00,00,00,00,00,00,00,00,00,00,04,00,05,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Syria Standard Time\Dynamic DST,"2012",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,05,00,05,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
@@ -4630,6 +4792,7 @@ HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"2002",1,a
HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"2003",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"2004",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"2005",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"2006",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,03,00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"2007",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"2008",1,a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,04,00,00,00,01,00,03,00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tasmania Standard Time\Dynamic DST,"FirstEntry",0x10001,"2000"
@@ -4645,6 +4808,14 @@ HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2000",1,
HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2001",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,0a,00,00,00,02,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2002",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,0b,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2003",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2004",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2005",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2006",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2007",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2008",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2009",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2010",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2011",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2012",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,0a,00,00,00,03,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2013",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,02,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,01,00,02,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tocantins Standard Time\Dynamic DST,"2014",1,b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
@@ -4676,6 +4847,8 @@ HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2008",1,98,f
HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2009",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2010",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2011",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2012",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2013",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2014",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2015",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tomsk Standard Time\Dynamic DST,"2016",1,98,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,05,00,00,00,05,00,02,00,00,00,00,00,00,00
@@ -4692,6 +4865,19 @@ HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time,"TZI",1,f4,fc,ff,ff,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2000",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2001",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2002",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,02,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2003",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2004",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2005",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2006",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2007",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2008",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2009",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2010",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2011",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2012",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2013",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2014",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2015",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2016",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,05,00,01,00,00,00,00,00,00,00,00,00,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2017",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,00,00,03,00,03,00,00,00,00,00,00,00,00,00,01,00,00,00,01,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Tonga Standard Time\Dynamic DST,"2018",1,f4,fc,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
@@ -4765,6 +4951,14 @@ HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2
HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2004",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,04,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2005",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,04,00,00,00,01,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2006",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,04,00,00,00,01,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2007",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2008",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2009",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2010",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2011",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2012",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2013",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2014",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,01,00,02,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2015",1,2c,01,00,00,00,00,00,00,c4,ff,ff,ff,00,00,01,00,04,00,01,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,02,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2016",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Turks And Caicos Standard Time\Dynamic DST,"2017",1,f0,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
@@ -4785,6 +4979,14 @@ HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2003",
HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2004",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2005",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2006",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2007",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2008",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2009",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2010",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2011",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2012",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2013",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2014",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2015",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2016",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Ulaanbaatar Standard Time\Dynamic DST,"2017",1,20,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
@@ -4930,6 +5132,9 @@ HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2011",1,
HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2012",1,10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2013",1,10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2014",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2015",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2016",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2017",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2018",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,01,00,01,00,00,00,00,00,00,00,00,00,00,00,0a,00,00,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2019",1,10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Volgograd Standard Time\Dynamic DST,"2020",1,4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0c,00,00,00,04,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
@@ -4977,6 +5182,14 @@ HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2003",
HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2004",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2005",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,02,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2006",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2007",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2008",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2009",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2010",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2011",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2012",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2013",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2014",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2015",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2016",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\W. Mongolia Standard Time\Dynamic DST,"2017",1,5c,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
@@ -5016,22 +5229,35 @@ HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2016",1,
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2017",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,01,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2018",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,01,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2019",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2020",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2021",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2022",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2023",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2024",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2025",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2026",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2027",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2028",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2029",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2030",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2031",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2032",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2033",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2034",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2035",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2036",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2037",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2038",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2039",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2040",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2041",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2042",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2043",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2044",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2045",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2046",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2047",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,05,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2048",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2049",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,05,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"2050",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,06,00,04,00,01,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\West Bank Standard Time\Dynamic DST,"FirstEntry",0x10001,"2000"
--
2.33.0
1
1
[PATCH vkd3d 1/4] vkd3d: Simplify checking if a descriptor has a view.
by Conor McCarthy Sept. 21, 2021
by Conor McCarthy Sept. 21, 2021
Sept. 21, 2021
Saves a few CPU cycles on a potentially very hot code path.
Based on a vkd3d-proton patch by Philip Rebohle.
Signed-off-by: Conor McCarthy <cmccarthy(a)codeweavers.com>
---
libs/vkd3d/resource.c | 10 ++--------
libs/vkd3d/vkd3d_private.h | 16 ++++++++++------
2 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c
index e6b326e6..cae5b580 100644
--- a/libs/vkd3d/resource.c
+++ b/libs/vkd3d/resource.c
@@ -2130,9 +2130,7 @@ void d3d12_desc_write_atomic(struct d3d12_desc *dst, const struct d3d12_desc *sr
pthread_mutex_lock(mutex);
/* Nothing to do for VKD3D_DESCRIPTOR_MAGIC_CBV. */
- if ((dst->magic == VKD3D_DESCRIPTOR_MAGIC_SRV
- || dst->magic == VKD3D_DESCRIPTOR_MAGIC_UAV
- || dst->magic == VKD3D_DESCRIPTOR_MAGIC_SAMPLER)
+ if ((dst->magic & VKD3D_DESCRIPTOR_MAGIC_HAS_VIEW)
&& !InterlockedDecrement(&dst->u.view->refcount))
destroy_desc = *dst;
@@ -2165,12 +2163,8 @@ void d3d12_desc_copy(struct d3d12_desc *dst, const struct d3d12_desc *src,
mutex = d3d12_device_get_descriptor_mutex(device, src);
pthread_mutex_lock(mutex);
- if (src->magic == VKD3D_DESCRIPTOR_MAGIC_SRV
- || src->magic == VKD3D_DESCRIPTOR_MAGIC_UAV
- || src->magic == VKD3D_DESCRIPTOR_MAGIC_SAMPLER)
- {
+ if (src->magic & VKD3D_DESCRIPTOR_MAGIC_HAS_VIEW)
vkd3d_view_incref(src->u.view);
- }
tmp = *src;
diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h
index 0b326b11..9829e0aa 100644
--- a/libs/vkd3d/vkd3d_private.h
+++ b/libs/vkd3d/vkd3d_private.h
@@ -41,13 +41,17 @@
#define VK_CALL(f) (vk_procs->f)
+#define MAKE_MAGIC(a,b,c,f) (((uint32_t)a) | (((uint32_t)b) << 8) | (((uint32_t)c) << 16) | f)
+
+#define VKD3D_DESCRIPTOR_MAGIC_HAS_VIEW 0x01000000u
+
#define VKD3D_DESCRIPTOR_MAGIC_FREE 0x00000000u
-#define VKD3D_DESCRIPTOR_MAGIC_CBV 0x00564243u
-#define VKD3D_DESCRIPTOR_MAGIC_SRV 0x00565253u
-#define VKD3D_DESCRIPTOR_MAGIC_UAV 0x00564155u
-#define VKD3D_DESCRIPTOR_MAGIC_SAMPLER 0x504d4153u
-#define VKD3D_DESCRIPTOR_MAGIC_DSV 0x00565344u
-#define VKD3D_DESCRIPTOR_MAGIC_RTV 0x00565452u
+#define VKD3D_DESCRIPTOR_MAGIC_CBV MAKE_MAGIC('C', 'B', 'V', 0)
+#define VKD3D_DESCRIPTOR_MAGIC_SRV MAKE_MAGIC('S', 'R', 'V', VKD3D_DESCRIPTOR_MAGIC_HAS_VIEW)
+#define VKD3D_DESCRIPTOR_MAGIC_UAV MAKE_MAGIC('U', 'A', 'V', VKD3D_DESCRIPTOR_MAGIC_HAS_VIEW)
+#define VKD3D_DESCRIPTOR_MAGIC_SAMPLER MAKE_MAGIC('S', 'M', 'P', VKD3D_DESCRIPTOR_MAGIC_HAS_VIEW)
+#define VKD3D_DESCRIPTOR_MAGIC_DSV MAKE_MAGIC('D', 'S', 'V', 0)
+#define VKD3D_DESCRIPTOR_MAGIC_RTV MAKE_MAGIC('R', 'T', 'V', 0)
#define VKD3D_MAX_COMPATIBLE_FORMAT_COUNT 6u
#define VKD3D_MAX_QUEUE_FAMILY_COUNT 3u
--
2.32.0
2
4
[PATCH 1/7] winebus.sys: Pass a unix_device pointer in every bus event.
by Rémi Bernon Sept. 21, 2021
by Rémi Bernon Sept. 21, 2021
Sept. 21, 2021
Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com>
---
dlls/winebus.sys/bus_iohid.c | 38 +++++++++++++++++++++--
dlls/winebus.sys/bus_sdl.c | 4 ++-
dlls/winebus.sys/bus_udev.c | 25 ++++++++++------
dlls/winebus.sys/main.c | 53 +++++----------------------------
dlls/winebus.sys/unix_private.h | 2 +-
dlls/winebus.sys/unixlib.c | 17 ++++++-----
dlls/winebus.sys/unixlib.h | 9 +-----
7 files changed, 75 insertions(+), 73 deletions(-)
diff --git a/dlls/winebus.sys/bus_iohid.c b/dlls/winebus.sys/bus_iohid.c
index 8bdd7857ae6..492d5a70ddb 100644
--- a/dlls/winebus.sys/bus_iohid.c
+++ b/dlls/winebus.sys/bus_iohid.c
@@ -95,9 +95,19 @@
WINE_DEFAULT_DEBUG_CHANNEL(plugplay);
#ifdef HAVE_IOHIDMANAGERCREATE
+static CRITICAL_SECTION iohid_cs;
+static CRITICAL_SECTION_DEBUG iohid_cs_debug =
+{
+ 0, 0, &iohid_cs,
+ { &iohid_cs_debug.ProcessLocksList, &iohid_cs_debug.ProcessLocksList },
+ 0, 0, { (DWORD_PTR)(__FILE__ ": iohid_cs") }
+};
+static CRITICAL_SECTION iohid_cs = { &iohid_cs_debug, -1, 0, 0, 0, 0 };
+
static IOHIDManagerRef hid_manager;
static CFRunLoopRef run_loop;
static struct list event_queue = LIST_INIT(event_queue);
+static struct list device_list = LIST_INIT(device_list);
static const WCHAR busidW[] = {'I','O','H','I','D',0};
static struct iohid_bus_options options;
@@ -114,6 +124,16 @@ static inline struct platform_private *impl_from_unix_device(struct unix_device
return CONTAINING_RECORD(iface, struct platform_private, unix_device);
}
+static struct platform_private *find_device_from_iohid(IOHIDDeviceRef IOHIDDevice)
+{
+ struct platform_private *private;
+
+ LIST_FOR_EACH_ENTRY(private, &device_list, struct platform_private, unix_device.entry)
+ if (!private->device == IOHIDDevice) return private;
+
+ return NULL;
+}
+
static void CFStringToWSTR(CFStringRef cstr, LPWSTR wstr, int length)
{
int len = min(CFStringGetLength(cstr), length-1);
@@ -170,6 +190,10 @@ static void iohid_device_stop(struct unix_device *iface)
struct platform_private *private = impl_from_unix_device(iface);
IOHIDDeviceRegisterInputReportCallback(private->device, NULL, 0, NULL, NULL);
+
+ EnterCriticalSection(&iohid_cs);
+ list_remove(&private->unix_device.entry);
+ LeaveCriticalSection(&iohid_cs);
}
static NTSTATUS iohid_device_get_report_descriptor(struct unix_device *iface, BYTE *buffer,
@@ -336,6 +360,7 @@ static void handle_DeviceMatchingCallback(void *context, IOReturn result, void *
TRACE("dev %p, desc %s.\n", IOHIDDevice, debugstr_device_desc(&desc));
if (!(private = unix_device_create(&iohid_device_vtbl, sizeof(struct platform_private)))) return;
+ list_add_tail(&device_list, &private->unix_device.entry);
private->device = IOHIDDevice;
private->buffer = NULL;
@@ -344,13 +369,18 @@ static void handle_DeviceMatchingCallback(void *context, IOReturn result, void *
static void handle_RemovalCallback(void *context, IOReturn result, void *sender, IOHIDDeviceRef IOHIDDevice)
{
+ struct platform_private *device;
+
TRACE("OS/X IOHID Device Removed %p\n", IOHIDDevice);
IOHIDDeviceRegisterInputReportCallback(IOHIDDevice, NULL, 0, NULL, NULL);
/* Note: Yes, we leak the buffer. But according to research there is no
safe way to deallocate that buffer. */
IOHIDDeviceUnscheduleFromRunLoop(IOHIDDevice, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
IOHIDDeviceClose(IOHIDDevice, 0);
- bus_event_queue_device_removed(&event_queue, busidW, IOHIDDevice);
+
+ device = find_device_from_iohid(IOHIDDevice);
+ if (device) bus_event_queue_device_removed(&event_queue, &device->unix_device);
+ else WARN("failed to find device for iohid device %p\n", IOHIDDevice);
}
NTSTATUS iohid_bus_init(void *args)
@@ -377,6 +407,7 @@ NTSTATUS iohid_bus_init(void *args)
NTSTATUS iohid_bus_wait(void *args)
{
struct bus_event *result = args;
+ CFRunLoopRunResult ret;
/* cleanup previously returned event */
bus_event_cleanup(result);
@@ -384,7 +415,10 @@ NTSTATUS iohid_bus_wait(void *args)
do
{
if (bus_event_queue_pop(&event_queue, result)) return STATUS_PENDING;
- } while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 10, TRUE) != kCFRunLoopRunStopped);
+ EnterCriticalSection(&iohid_cs);
+ ret = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 10, TRUE);
+ LeaveCriticalSection(&iohid_cs);
+ } while (ret != kCFRunLoopRunStopped);
TRACE("IOHID main loop exiting\n");
bus_event_queue_destroy(&event_queue);
diff --git a/dlls/winebus.sys/bus_sdl.c b/dlls/winebus.sys/bus_sdl.c
index 6a6f364edf6..d48f9507abb 100644
--- a/dlls/winebus.sys/bus_sdl.c
+++ b/dlls/winebus.sys/bus_sdl.c
@@ -799,7 +799,9 @@ static void process_device_event(SDL_Event *event)
else if (event->type == SDL_JOYDEVICEREMOVED)
{
id = ((SDL_JoyDeviceEvent *)event)->which;
- bus_event_queue_device_removed(&event_queue, sdl_busidW, ULongToPtr(id));
+ device = find_device_from_id(id);
+ if (device) bus_event_queue_device_removed(&event_queue, &device->unix_device);
+ else WARN("failed to find device with id %d\n", id);
}
else if (event->type >= SDL_JOYAXISMOTION && event->type <= SDL_JOYBUTTONUP)
{
diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c
index 23b649ff511..8cbcabf25e8 100644
--- a/dlls/winebus.sys/bus_udev.c
+++ b/dlls/winebus.sys/bus_udev.c
@@ -200,6 +200,16 @@ static struct platform_private *find_device_from_syspath(const char *path)
return NULL;
}
+static struct platform_private *find_device_from_udev(struct udev_device *dev)
+{
+ struct platform_private *device;
+
+ LIST_FOR_EACH_ENTRY(device, &device_list, struct platform_private, unix_device.entry)
+ if (device->udev_device == dev) return device;
+
+ return NULL;
+}
+
#ifdef HAS_PROPER_INPUT_HEADER
static const BYTE ABS_TO_HID_MAP[][2] = {
@@ -1062,14 +1072,6 @@ static void udev_add_device(struct udev_device *dev)
#endif
}
-static void try_remove_device(struct udev_device *dev)
-{
- bus_event_queue_device_removed(&event_queue, hidraw_busidW, dev);
-#ifdef HAS_PROPER_INPUT_HEADER
- bus_event_queue_device_removed(&event_queue, lnxev_busidW, dev);
-#endif
-}
-
static void build_initial_deviceset(void)
{
struct udev_enumerate *enumerate;
@@ -1161,6 +1163,7 @@ error:
static void process_monitor_event(struct udev_monitor *monitor)
{
+ struct platform_private *device;
struct udev_device *dev;
const char *action;
@@ -1180,7 +1183,11 @@ static void process_monitor_event(struct udev_monitor *monitor)
else if (strcmp(action, "add") == 0)
udev_add_device(dev);
else if (strcmp(action, "remove") == 0)
- try_remove_device(dev);
+ {
+ device = find_device_from_udev(dev);
+ if (device) bus_event_queue_device_removed(&event_queue, &device->unix_device);
+ else WARN("failed to find device for udev device %p\n", dev);
+ }
else
WARN("Unhandled action %s\n", debugstr_a(action));
diff --git a/dlls/winebus.sys/main.c b/dlls/winebus.sys/main.c
index 162787c4e4a..a80bd8a186e 100644
--- a/dlls/winebus.sys/main.c
+++ b/dlls/winebus.sys/main.c
@@ -146,17 +146,6 @@ static void unix_device_remove(DEVICE_OBJECT *device)
winebus_call(device_remove, ext->unix_device);
}
-static int unix_device_compare(DEVICE_OBJECT *device, void *context)
-{
- struct device_extension *ext = (struct device_extension *)device->DeviceExtension;
- struct device_compare_params params =
- {
- .iface = ext->unix_device,
- .context = context
- };
- return winebus_call(device_compare, ¶ms);
-}
-
static NTSTATUS unix_device_start(DEVICE_OBJECT *device)
{
struct device_extension *ext = (struct device_extension *)device->DeviceExtension;
@@ -359,29 +348,6 @@ static DEVICE_OBJECT *bus_create_hid_device(struct device_desc *desc, struct uni
return device;
}
-static DEVICE_OBJECT *bus_find_hid_device(const WCHAR *bus_id, void *platform_dev)
-{
- struct device_extension *ext;
- DEVICE_OBJECT *ret = NULL;
-
- TRACE("bus_id %s, platform_dev %p\n", debugstr_w(bus_id), platform_dev);
-
- EnterCriticalSection(&device_list_cs);
- LIST_FOR_EACH_ENTRY(ext, &device_list, struct device_extension, entry)
- {
- if (strcmpW(ext->desc.busid, bus_id)) continue;
- if (unix_device_compare(ext->device, platform_dev) == 0)
- {
- ret = ext->device;
- break;
- }
- }
- LeaveCriticalSection(&device_list_cs);
-
- TRACE("returning %p\n", ret);
- return ret;
-}
-
static DEVICE_OBJECT *bus_find_unix_device(struct unix_device *unix_device)
{
struct device_extension *ext;
@@ -625,28 +591,25 @@ static DWORD CALLBACK bus_main_thread(void *args)
case BUS_EVENT_TYPE_NONE: break;
case BUS_EVENT_TYPE_DEVICE_REMOVED:
EnterCriticalSection(&device_list_cs);
- if (!(device = bus_find_hid_device(event->device_removed.bus_id, event->device_removed.context)))
- WARN("could not find removed device matching bus %s, context %p\n",
- debugstr_w(event->device_removed.bus_id), event->device_removed.context);
- else
- bus_unlink_hid_device(device);
+ device = bus_find_unix_device(event->device);
+ if (!device) WARN("could not find device for %s bus device %p\n", debugstr_w(bus.name), event->device);
+ else bus_unlink_hid_device(device);
LeaveCriticalSection(&device_list_cs);
IoInvalidateDeviceRelations(bus_pdo, BusRelations);
break;
case BUS_EVENT_TYPE_DEVICE_CREATED:
- device = bus_create_hid_device(&event->device_created.desc, event->device_created.device);
+ device = bus_create_hid_device(&event->device_created.desc, event->device);
if (device) IoInvalidateDeviceRelations(bus_pdo, BusRelations);
else
{
- WARN("failed to create device for %s bus device %p\n",
- debugstr_w(bus.name), event->device_created.device);
- winebus_call(device_remove, event->device_created.device);
+ WARN("failed to create device for %s bus device %p\n", debugstr_w(bus.name), event->device);
+ winebus_call(device_remove, event->device);
}
break;
case BUS_EVENT_TYPE_INPUT_REPORT:
EnterCriticalSection(&device_list_cs);
- device = bus_find_unix_device(event->input_report.device);
- if (!device) WARN("could not find device for %s bus device %p\n", debugstr_w(bus.name), event->input_report.device);
+ device = bus_find_unix_device(event->device);
+ if (!device) WARN("could not find device for %s bus device %p\n", debugstr_w(bus.name), event->device);
else process_hid_report(device, event->input_report.buffer, event->input_report.length);
LeaveCriticalSection(&device_list_cs);
break;
diff --git a/dlls/winebus.sys/unix_private.h b/dlls/winebus.sys/unix_private.h
index 3f8d73d033a..9b2c6d81fa2 100644
--- a/dlls/winebus.sys/unix_private.h
+++ b/dlls/winebus.sys/unix_private.h
@@ -64,7 +64,7 @@ extern NTSTATUS iohid_bus_stop(void *) DECLSPEC_HIDDEN;
extern void bus_event_cleanup(struct bus_event *event) DECLSPEC_HIDDEN;
extern void bus_event_queue_destroy(struct list *queue) DECLSPEC_HIDDEN;
-extern BOOL bus_event_queue_device_removed(struct list *queue, const WCHAR *bus_id, void *context) DECLSPEC_HIDDEN;
+extern BOOL bus_event_queue_device_removed(struct list *queue, struct unix_device *device) DECLSPEC_HIDDEN;
extern BOOL bus_event_queue_device_created(struct list *queue, struct unix_device *device, struct device_desc *desc) DECLSPEC_HIDDEN;
extern BOOL bus_event_queue_input_report(struct list *queue, struct unix_device *device,
BYTE *report, USHORT length) DECLSPEC_HIDDEN;
diff --git a/dlls/winebus.sys/unixlib.c b/dlls/winebus.sys/unixlib.c
index 87cc7de3474..008fb6e77a2 100644
--- a/dlls/winebus.sys/unixlib.c
+++ b/dlls/winebus.sys/unixlib.c
@@ -343,8 +343,8 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
void bus_event_cleanup(struct bus_event *event)
{
- if (event->type == BUS_EVENT_TYPE_INPUT_REPORT)
- unix_device_decref(event->input_report.device);
+ if (event->type == BUS_EVENT_TYPE_NONE) return;
+ unix_device_decref(event->device);
}
void bus_event_queue_destroy(struct list *queue)
@@ -358,15 +358,16 @@ void bus_event_queue_destroy(struct list *queue)
}
}
-BOOL bus_event_queue_device_removed(struct list *queue, const WCHAR *bus_id, void *context)
+BOOL bus_event_queue_device_removed(struct list *queue, struct unix_device *device)
{
ULONG size = sizeof(struct bus_event);
struct bus_event *event = HeapAlloc(GetProcessHeap(), 0, size);
if (!event) return FALSE;
+ if (unix_device_incref(device) == 1) return FALSE; /* being destroyed */
+
event->type = BUS_EVENT_TYPE_DEVICE_REMOVED;
- event->device_removed.bus_id = bus_id;
- event->device_removed.context = context;
+ event->device = device;
list_add_tail(queue, &event->entry);
return TRUE;
@@ -378,8 +379,10 @@ BOOL bus_event_queue_device_created(struct list *queue, struct unix_device *devi
struct bus_event *event = HeapAlloc(GetProcessHeap(), 0, size);
if (!event) return FALSE;
+ if (unix_device_incref(device) == 1) return FALSE; /* being destroyed */
+
event->type = BUS_EVENT_TYPE_DEVICE_CREATED;
- event->device_created.device = device;
+ event->device = device;
event->device_created.desc = *desc;
list_add_tail(queue, &event->entry);
@@ -395,7 +398,7 @@ BOOL bus_event_queue_input_report(struct list *queue, struct unix_device *device
if (unix_device_incref(device) == 1) return FALSE; /* being destroyed */
event->type = BUS_EVENT_TYPE_INPUT_REPORT;
- event->input_report.device = device;
+ event->device = device;
event->input_report.length = length;
memcpy(event->input_report.buffer, report, length);
list_add_tail(queue, &event->entry);
diff --git a/dlls/winebus.sys/unixlib.h b/dlls/winebus.sys/unixlib.h
index 61684d0c0af..cd5f64cbb51 100644
--- a/dlls/winebus.sys/unixlib.h
+++ b/dlls/winebus.sys/unixlib.h
@@ -76,23 +76,16 @@ struct bus_event
enum bus_event_type type;
struct list entry;
+ struct unix_device *device;
union
{
struct
{
- const WCHAR *bus_id;
- void *context;
- } device_removed;
-
- struct
- {
- struct unix_device *device;
struct device_desc desc;
} device_created;
struct
{
- struct unix_device *device;
USHORT length;
BYTE buffer[1];
} input_report;
--
2.33.0
3
10