Open hsterk opened 3 years ago
GPUThermalInformation
class used for getting thermal sensors is using NvAPI_GPU_GetThermalSettings
under the hood with the NVAPI_THERMAL_TARGET_ALL
value as the parameter. So it is NVAPI that is not returning memory sensor info here as someone already pointed out in the link you provided from the Nvidia developer forum.
Usually what we do is reverse engineer an app that reports correct values to find out how it works. We did it with another function to change cooler settings for RTX cards earlier, and this also seems like a problem that requires some reverse engineering.
I have tried GPUZ and HWInfo on my system and they don't have any memory info available for RTX2060 (HWINFO has a Hotspot temp but no memory temp) so I can't personally take a deeper look into this.
As for NvAPI_GPU_GetAllTempsEx
, I have never heard of it neither did I find anything about it on the internet; but I will take a look to see what is it and how it works.
Ok,
So this new function is promising, as it returns some form of data, however, it requires a Mask
parameter that I have no idea how it works and I don't remember having something similar to this in any other part of NVAPI, private or public.
Take a look at this data:
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0 = 128,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -268435456,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = 60,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1 = 127,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 805306420,
[1]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 805306431,
[2]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-1-0 = 805306422,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63,
[4]: (String) 0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 1610612788,
[5]: (String) 0-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = 134217787,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 52,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-1-1-0-0-0 = 184
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 134217728,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 52,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = -805306316,
[1]: (String) 1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = -805306306,
[2]: (String) 1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-1 = -805306315,
[3]: (String) 0-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = 671088702,
[4]: (String) 1-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = -2013265868,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = 59,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0-0-0 = 144
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -2147483648,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = 59,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = 31,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = -1610612684,
[1]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = -1610612674,
[2]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-1 = -1610612683,
[3]: (String) 0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = 268435518,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 52,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0 = 128
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 536870912,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 52,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1 = 15,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = -1610612684,
[1]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = -1610612674,
[2]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-1 = -1610612683,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = 62,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0-0 = 136
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0 = 8,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 1-0-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -1207959552,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = 62,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1 = 7,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = -2147483596,
[1]: (String) 1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = -2147483586,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-1 = 53,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0-0 = 120
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0 = 4,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -2147483648,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-1 = 53,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1 = 3,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 1-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = -1744830412,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = 62,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-0-0-0 = 112
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0 = 2,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 1-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -1744830464,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0 = 62,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1 = 1,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 52,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-0-0-0 = 112
};
this is the result that I got along with the supplied Mask
value represented in both bits and the actual integer. Take a look and see if it makes some sense; if we can figure out how this works we can add it to the library, otherwise, as it is now, @JustAMan's logic is vague and is not working on my device (expect it to reports normal temp as hotspot, and returns invalid values due to the use of max
).
Anything around 50 is my GPU temp and anything around 60 is what HwInfo reports as "Hotspot Temp". The fact that the returned data is alternating depending on the even or odd bits is confusing.
If you are interested to see what you get on your GPU, checkout the rtx30-temp-test
branch and run the sample.
unless it is a max-avg-min sorta thing.
@falahati as I've stated elsewhere, I have not checked that on 20xx series as I don't have access to them.
As for
NvAPI_GPU_GetAllTempsEx
, I have never heard of it neither did I find anything about it on the internet; but I will take a look to see what is it and how it works.
Me neither, I've invented the name (because I got the offset by reverse engineering some software).
As for mask - I think it's which sensors you request (or their historical points), however I must admit I haven't tried any values except "all ones", and the only masks that I really tried ('cause they worked) are 8- and 10-bit "all ones" (8-bit for when there is no VRAM temperature sensor - Quadro RTX 3000 / GTX 1080 / GTX 1080 Ti; 10-bit for RTX 3090 / RTX 3060).
Then you must interpret the temperatures correctly - they're signed int8_t
packed as 4-byte items, hence me doing that weird casting thing (however simply masking a 4-byte integer with 0xFF
should work as the only case it would be missing would be negative temperature).
So, taking your output as example:
(<>f__AnonymousType3`3) {
Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1 = 127,
Temperatures: (WhereSelectArrayIterator`2) {
[0]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 805306420,
[1]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 805306431,
[2]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-1-0 = 805306422,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63,
[4]: (String) 0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 1610612788,
[5]: (String) 0-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = 134217787,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-1-0-0 = 52,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-1-1-0-0-0 = 184
};
I interpret temperatures there as [48, 48, 48, 0, 96, 8, 0, 0, 0, 0]
, and first three actually make sense (and we should probably throw away last 3 as you're requesting only 7 items due to mask being (1<<7)-1
).
P.S. TBH what bugs me most in the structure I had to declare is the non-4-divisible size of paddings... they look very strange :)
Another thought on interpreting the temperatures - I've tried a closer look on those at my RTX cards, and I think that maybe the hotspot is temperatures[1]
, core is temperatures[0]
.
As for RAM temperature - on 3090 it's temperatures[9]
(and temperatures[8]
seems to be again core) while on 3060 it's temperatures[8]
and temperatures[9]
is 0). Maybe those cards have different amount of sensors installed (one is ASUS TUF 3090, another is ASUS ROG Strix 3060).
Also do note that if I take your outputs where you request 1 << N
items, and take temperatures[N]
as value, I'll get:
N=7: mask=128: temp=60
N=6: mask=64 : temp=52
N=5: mask=32 : temp=59
N=4: mask=16 : temp=52
N=3: mask=8 : temp=62
N=2: mask=4 : temp=53
N=1: mask=2 : temp=62
N=0: mask=1 : temp=52
No garbage values in there, they all seem reasonable!
Also I must've interpreted your mask=127
values wrongly, if I just & 0xFF
them I get [52, 63, 54, 63, 52, 59, 52, 0, 0, 0]
which, if I take just 7 elements, yield [52, 63, 54, 63, 52, 59, 52]
- all temperatures seem valid to me.
Here are my readings (using my code... to lazy to compile .net now):
NVIDIA GeForce RTX 3090: bitsize=10 (mask=1023):
hotspots 44 56 44 46 54 46 51 49
vram 45 84
NVIDIA GeForce RTX 3060: bitsize=9 (mask=511):
hotspots 55 66 55 55 55 55 62 56
vram 51 0
GPU-z for 3090:
GPU-z for 3060 (not showing RAM temperature for some reason - maybe it only supports even bit sizes):
& 0xFF
does in fact makes the values more readable. I wonder if the other part of the value is the decimal. (multiplier/divider)
I get another value as part of the padding (last byte) which happens when I am mixing and matching the bits, can you test that on your device to see if it makes some sense there? (Unknown
in my examples are the value of this byte)
I get another value as part of the padding (last byte) which happens when I am mixing and matching the bits, can you test that on your device to see if it makes some sense there? (
Unknown
in my examples are the value of this byte)
I'm not sure I follow what you want from me here. That value resembles a bitmask for me (as I cannot interpret it as a temperature value due to it either being 0 or >100 degrees).
Whenever I test using bitmask of all ones, second unknown (all 87 bytes) is always 0 to me, and first unknown is all-zero except last byte which is 0xE0
for Quadro 3000 (bitsize=8), 0x48
for RTX 3090 (bitsize=10) and 0xD8
for RTX 3060 (bitsize=9).
Also if I try to look at remaining bytes of each temperature unit, the only non-zero I have are 24-to-31 bits (i.e. value >> 24
).
Quadro:
bitsize=8
pad1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e0
hotspots 56 [4=28|40] 66 [4=28|40] 57 [4=28|40] 66 [4=f0|240] 56 [4=f0|240] 65 [4=88|136] 56 [4=88|136] 65 [4=0|0]
3090:
bitsize=10
pad1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48
hotspots 45 [4=e8|232] 56 [4=48|72] 45 [4=88|136] 47 [4=88|136] 55 [4=50|80] 47 [4=20|32] 52 [4=e8|232] 49 [4=0|0]
vram 45 [4=0|0] 84 [4=0|0]
3060:
bitsize=9
pad1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d8
hotspots 54 [4=80|128] 66 [4=d8|216] 54 [4=e8|232] 54 [4=e8|232] 54 [4=d8|216] 54 [4=c0|192] 61 [4=80|128] 56 [4=0|0]
vram 50 [4=0|0] 0 [4=0|0]
(maybe those would make sense to you; numbers after [4=
are hex and decimal value of 4th octet in the temperature uint).
I've also noted that the last octet of first unknown is changing from measurement to measurement, but is always divisible by 8
. Other than that it's value seems to be ever-changing in a non-monotonic fashion (somewhat random; so maybe it's another sensor being read or smth).
Well, after trying my latest things on my 1080 / 1080 Ti I no longer think that "bitsize" controls the history... it's probably really different sensors, because my 10xx cards only support bitsize=2
! This also confirms my observations of temperatures[0]
being the core temperature and temperatures[1]
being the hotspot (as I've never seen it not being the max).
Thanks @JustAMan for testing on 1080 and providing additional information. This sure helps to figure out what is going on.
Since all these programs seem to be able to show at least one decimal point, I am thinking that we are probably missing something here regarding this. But then if the high 16 bits are the decimals, why sometimes it is present and sometimes it is not. I think I have to compare the returned values with a program like HwInfo or GPUZ to see if I can find any correlation between the numbers.
I also tested the values while pushing the card for a little and it does seem inline with your theory that each number represents a different sensor (if not physically, at least virtually, and for sure has nothing to do with historic data).
Whenever I test using bitmask of all ones, second unknown (all 87 bytes) is always 0 to me, and first unknown is all-zero except last byte which is 0xE0 for Quadro 3000 (bitsize=8), 0x48 for RTX 3090 (bitsize=10) and 0xD8 for RTX 3060 (bitsize=9). Also if I try to look at remaining bytes of each temperature unit, the only non-zero I have are 24-to-31 bits (i.e. value >> 24). I've also noted that the last octet of first unknown is changing from measurement to measurement, but is always divisible by 8. Other than that it's value seems to be ever-changing in a non-monotonic fashion (somewhat random; so maybe it's another sensor being read or smth).
This is the other part that needs a little investigation, for me, this number is always zero when requesting a single bit, but if multiple bits are requested, this value is filled. Maybe it has something to do with the type of information available. You see, the fact that in your tests, memory temp moves around indicates that sensors can be in any arbitrary index and so there should be a way to detect this behavior.
I have to take a deeper look into this, can you please tell me from what application did you extract this address? And if you guys know about more applications that use this new method, please feel free to tell me their names so that I can take a look. Some might have information that can be used.
Thank you for looking into this so quickly! This enhancement request has been languishing on LibreHardwareMonitor for months. I guess we were barking up the wrong tree. Thanks to @JustAMan for getting this started.
I put multiple Temp Test results for a EVGA 3080ti FTW on google drive(for readability of this thread). The matching HWInfo screenshots are probably a second behind but the mem/hotspot temps somewhat match @JustAMan observations
Run 2: hotspot=temperatures[1],m=3 vram=temperatures[9] m=512 Run 4: vram=temperatures[9] ,m=512 Run 5: hotspot=temperatures[1],m=2 vram(just doesn't match).
https://drive.google.com/drive/folders/1Ik0mXvknbpIpsuxG-UQfuFTyGxgUD8Gb?usp=sharing
I guess I need to look at this more systematically with HWINFO logging. Why did NVidia keep this function undocumented? I read somewhere Gamersnexus Steve Burke asked Nvidia about the temp apis and they were cagey about it.
The EVGA FTW series has 9 extra temp sensors as shown in the last section below but the masked values in the test don't appear to show any of these extra sensors keeping things simple.
If you want more data for different 30 series cards, we should round up requestors for the original LibreHardwareMonitor issue. Let me know if there is anything else I can do to help.
I tried matching up hotspot/vram temp readings from HWInfo with JustAMan's python script and both mostly match. About 10-20% of the time the temp readings vary by more than 1 degree which I think has to do with exactly when the temp reading must have been taken within that second. The anomalous 6 degree difference was when the GPU was ramping up fast to launch a game. It's highly possible that within a second a reading can vary. But I guess as an end user, I'd be very happy to have these readings as I'm just trying to make sure I have continuous readings taken via ohmgraphite and set an alert when there is sustained readings over 80C.
sooooo ... i hope it helps a bit. I was only to be able by help from a friend
Please keep in mind that the values are not always precise (cause of sync)
RTX 3080 Asus TUF
read out with GPU-Z
GPU: 30,4°C HotSpot: 40,3°C VRAM: 38,0°C
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0-0-0 = 512, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0 = 36
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1-1-1 = 511, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1 = -536870883,
[1]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = -268435417,
[2]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1 = -536870883,
[3]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = -536870881,
[4]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = -268435417,
[5]: (String) 1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = -1879048161,
[6]: (String) 1-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0 = -1744830428,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1 = 33,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0-0-0 = 240
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0-0 = 256, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1 = 33,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1-1 = 255, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = -536870882,
[1]: (String) 0-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = 134217767,
[2]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = -536870882,
[3]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = -536870881,
[4]: (String) 0-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = 134217767,
[5]: (String) 1-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = -1476394976,
[6]: (String) 1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0 = -1342177244,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0 = 8
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0 = 128, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -1342177280,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1 = 127, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = -536870882,
[1]: (String) 0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = 268435495,
[2]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = -536870882,
[3]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = -536870881,
[4]: (String) 0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = 268435495,
[5]: (String) 1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = -1342177248,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0 = 36,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 1-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -1476395008,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0 = 36,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = -536870882,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = 39,
[2]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = -536870882,
[3]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = -536870881,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1 = 39,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = 31, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[1]: (String) 0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 268435496,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 40,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 40,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1 = 15, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[1]: (String) 0-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 671088680,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 40
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0 = 8, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1 = 7, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[1]: (String) 0-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 402653224,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-0-0 = 24
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0 = 4, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 402653184,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1 = 3, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 40,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-0-0 = 24
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0 = 2, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 40,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1 = 1, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0 = 30,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16
GPU: 61,6°C HotSpot: 72,6°C VRAM: 78,0°C
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0-0-0 = 512, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-1-1-0 = 78
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1-1-1 = 511, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[1]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0-0 = -1610612664,
[2]: (String) 1-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -2013265859,
[3]: (String) 1-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = -2013265857,
[4]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = -1610612665,
[5]: (String) 0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 1073741887,
[6]: (String) 1-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = -1744830396,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1 = 65,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0-0-0 = 160
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0-0 = 256, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1-1 = 255, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -805306307,
[1]: (String) 0-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 1207959623,
[2]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -939524035,
[3]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = -939524033,
[4]: (String) 0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 1342177351,
[5]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = -268435393,
[6]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1-1 = -536870845,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0-0 = 72
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0 = 128, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -536870912,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1 = 127, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -939524035,
[1]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 805306439,
[2]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -939524035,
[3]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = -939524033,
[4]: (String) 0-0-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 939524167,
[5]: (String) 1-1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = -671088577,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1-1 = 67,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-0-0-0 = 48
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 1-1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -671088640,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1-1 = 67,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -939524035,
[1]: (String) 0-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 671088711,
[2]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -939524035,
[3]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = -939524033,
[4]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 805306439,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 40
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 402653184,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = 31, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = -939524036,
[1]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = -268435385,
[2]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = -939524036,
[3]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = -939524033,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 71,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0-0-0 = 240
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -939524096,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 71,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1 = 15, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = -939524036,
[1]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = -268435385,
[2]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = -939524036,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0-0-0 = 240
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0 = 8, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -939524096,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1 = 7, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = -1610612675,
[1]: (String) 0-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 402653255,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-0-0 = 24
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0 = 4, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1 = 3, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = 939524156,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 71,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-0-0-0 = 248
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0 = 2, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 939524096,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-1-1 = 71,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1 = 1, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = 60,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-0-0-0-0 = 224
};
GPU: 56,3°C HotSpot: 64,3°C VRAM: 72,0°C
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0-0-0 = 512, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-1-0 = 74
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1-1-1 = 511, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -1744830406,
[1]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 805306436,
[2]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 805306426,
[3]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = 805306428,
[4]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 805306436,
[5]: (String) 1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = -805306308,
[6]: (String) 1-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = -1744830400,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 58,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-0-0-0 = 48
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0-0 = 256, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 58,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1-1 = 255, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -1476394950,
[1]: (String) 0-0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 134217796,
[2]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 805306426,
[3]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = 805306428,
[4]: (String) 0-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 268435524,
[5]: (String) 1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = -1342177220,
[6]: (String) 1-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = -1476394944,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0 = 8
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-0 = 128, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 1-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -1476395008,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-1 = 61,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1-1 = 127, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-0-1 = 1744830521,
[1]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = -268435388,
[2]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-0-1 = 805306425,
[3]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = 805306428,
[4]: (String) 1-1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = -134217660,
[5]: (String) 1-0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = -1744830405,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0-0-0 = 240
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 1-1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -402653184,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0 = 64,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1-1 = 63, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 1207959610,
[1]: (String) 0-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 805306436,
[2]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -268435398,
[3]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = -268435397,
[4]: (String) 0-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1-1 = 671088707,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-0-0 = 60,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-0-0-0-0 = 48
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 1-1-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -402653184,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = 59,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1-1 = 31, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -1342177222,
[1]: (String) 0-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 1207959620,
[2]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -268435398,
[3]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = -268435397,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1-1 = 67,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-1-0-0-0 = 72
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -268435456,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-1-1 = 67,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-1 = 15, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-0-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -1342177222,
[1]: (String) 0-0-1-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 671088708,
[2]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -268435398,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = 59,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-1-0-0-0 = 40
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0 = 8, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 1-1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -268435456,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-1 = 59,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1 = 7, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-1-0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -939524038,
[1]: (String) 0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 536870980,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 58,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0 = 4, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[1]: (String) 0-0-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 536870912,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 58,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1 = 3, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = -2147483590,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 68,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0 = 16
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0 = 2, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = -2147483648,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-1-0-0 = 68,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
};
(<>fAnonymousType33) { Mask: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1 = 1, Temperatures: (WhereSelectArrayIterator
2) {
[0]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-1-1-0-1-0 = 58,
[1]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[2]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[3]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[4]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[5]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[6]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[7]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[8]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0,
[9]: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 = 0
},
Unknown: (String) 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0-0-0-0 = 32
@falahati Okay, after a little more experiments I believe that the structure should actually be slightly different (ref: https://github.com/JustAMan/pynvraw/tree/0.0.2):
typedef struct {
NvU32 version;
NvU32 sensor_mask;
NvU32 unknown[8];
NvU32 sensors[32];
} NV_GPU_THERMAL_EX;
As you can see, it doesn't have any weird non-4-divisible offsets anymore and makes much more sense overall IMHO :)
And then to get the temperatures in Celsius you just take sensors[i] / 256.0f
(and you get resolution much lower than 1C).
I've been testing that on my RTX 3000/RTX 3090/RTX 3060 looking at my script and GPU-z - and they seem to agree good enough.
That said, maybe there would be cards which have more than 10 sensors working through this interface (like the one here https://github.com/falahati/NvAPIWrapper/issues/45#issuecomment-887681553 with a bunch of extra sensors), but my cards have no more than 10 sensors only. Trying all the way from 32 sensors down to 1 doesn't hurt, though 😄
Thanks so much for looking at this! I have a reference 3090 (PNY) if you need a tester.
Thank you all guys.
@RaptorTP, your results do in fact match with what is discussed here. thanks for the confirmation.
@JustAMan, what you suggest makes total sense actually. I was thinking about the fact that the alone number at the end of the first unknown
is probably part of the sensor data but didn't have the time to check it out. But now that you solved the whole thing, it is so easy to see it, alignment, the array of 32 items (and 32 bits for mask), and the / 256
part (which is common practice with temperature sensors when working with microcontrollers) do in fact all makes sense. nice finding.
I have made the changes necessary to the rtx30-temp-test
branch and I also made the code run in a loop and cleaned up the output. I think we already figured out how this structure works so no need for additional data that was there. Now I am more interested to find out what each index represents. I also included the response of the NvAPI_GPU_GetThermalSettings
method for comparison. If more people can run this next to GPU-Z and HWInfo, it might give us more info about each index. Specifically, I am interested to see what @hsterk going to get when running both this and HWInfo alongside each other. If there is a correlation between the values, we can find out the meaning of each index.
This is mine on a 2060 (laptop edition):
I also renamed the function to NvAPI_GPU_QueryThermalSensors
in this commit since NvAPI_GPU_GetAllTempsEx
implies that there is a NvAPI_GPU_GetAllTemps
which we don't know if it even exists. I hope you guys don't mind. It is accessible as GpuAPI.QueryThermalSensors()
if you want to use this branch for other purposes before getting it merged into master and release it as part of the nugget package.
this is the compiled version if you can't compile the whole project: NvAPISample.zip
@falahati Thanks so much for the fast turnaround and @JustAMan for figuring this all out. I'm absolutely thrilled by the prospect of having these temps. The temps match in the same way @JustAMan's python code did to HWInfo and you can see the graphs are very tight.
core 8.33% >1C difference, hotspot 6.7% ,VRAM 20%
The VRAM temps when they diverge differs curiously exactly by multiple of 2. 2C or -2C in this run. 4C was the largest difference for the python run.
You can see the google spreadsheet used to generate the graphs https://docs.google.com/spreadsheets/d/15v0DYZ3QrXEknpvTMNNdTVU8stddstHJADDkUWeKiiE/edit?usp=sharing
Tomorrow I'll try to see what the other columns match up to in HWInfo.
@falahati this is hijacking the issue, but I hope you'd forgive me... I've studied thoroughly one of monitoring tools, and I managed to pry from it how to measure power rails, e.g. how much power is consumed from PCI-E slot.
You might want to take a look at https://github.com/JustAMan/pynvraw/commit/d98c7e0c1463fcd0059a9fe685a86d37fc83e465
@JustAMan Nah it is ok, I just wished you made a new issue tho as it would be easier to track these two issues separately. I will probably make one myself
This might also be related and be of interest: https://forums.guru3d.com/threads/capframex-osd-with-rtss.429259/page-5
Thanks! I found some interesting bits there. Also I've made a separate issue: https://github.com/falahati/NvAPIWrapper/issues/46, sorry for me being lazy :)
@hsterk, the provided charts indicate that we are ok with the numbers, the discrepancies are probably due to rounding (HWInfo rounds the number to one decimal point). However it would be great to have a side-by-side screenshot of the sample application I made with HDInfo's additional sensor page, we might be able to find a relationship between the indexes. If it is possible for you to post a screenshot of this, it would be great and allows me to add this function to high-level API as well, otherwise, I have to just put it as a low-level API and let the consumer of the library figure it out.
Tried it on an MSI RTX3060 that I had access to but got no memory temp or additional temperatures except the 8 I get with RTX2060 with GPU-Z and HWInfo, supposedly not supporting it; so I am useless here. xD
ping @maynardminer for potential testing
Just a reminder I've offered up my 3090 for testing. I'm trying to not interrupt but I think I may have been lost in the shuffle ;)
@xcasxcursex Thanks, but can you check and see if HWInfo shows additional sensor information for your card? Apparently, it is only available for some cards. If it did, take a picture next to the sample project I have compiled and put up a few posts above.
Yes, I get the extra sensors (hotspot and memory junction). I think the fact this is a reference card may be useful here.
I chose option 6 in your app, am I doing it right?
(<>f__AnonymousType2`3) {
DriverBranchVersion: (String) r470_96,
DriverVersion: (UInt32) 47111,
InterfaceVersionString: (String) NVidia Complete Version 1.10
};
option 1 is the one we want. I have put it temporarily there to test this new feature
In regard to additional temperature info, well I am more interested to see these:
do you have them?
I don't have the second entry with those additional sensors, nor the extra fan (mine's a triple fan cooler but they all run the same speed).
Your app seems like it might be doing better than HWinfo is, it's returning 10 distinct temps. . Edit: It's pretty clear running alongside hwinfo, that index 9 is the Memory Junction, with indices 0 and 1 being GPU Core and Hotspot. The other values don't behave like junk data.
Option one scrolls endlessly like so:
(<>f__AnonymousType3`2) {
GetThermalSettings: (GPUThermalSensor[]) {
[0]: (GPUThermalSensor) [GPU @ GPU] Current: 29°C - Default Range: [(-42°C) , (127°C)]
},
QueryThermalSensors: (WhereSelectEnumerableIterator`2) {
[0]: (String) 29.03,
[1]: (String) 39.03,
[2]: (String) 29.03,
[3]: (String) 31.03,
[4]: (String) 39.03,
[5]: (String) 31.03,
[6]: (String) 35.44,
[7]: (String) 31.66,
[8]: (String) 31.00,
[9]: (String) 38.00
}
};
(<>f__AnonymousType3`2) {
GetThermalSettings: (GPUThermalSensor[]) {
[0]: (GPUThermalSensor) [GPU @ GPU] Current: 28°C - Default Range: [(-42°C) , (127°C)]
},
QueryThermalSensors: (WhereSelectEnumerableIterator`2) {
[0]: (String) 28.88,
[1]: (String) 38.97,
[2]: (String) 28.88,
[3]: (String) 30.97,
[4]: (String) 38.97,
[5]: (String) 30.88,
[6]: (String) 35.31,
[7]: (String) 31.50,
[8]: (String) 31.00,
[9]: (String) 38.00
}
};
(<>f__AnonymousType3`2) {
GetThermalSettings: (GPUThermalSensor[]) {
[0]: (GPUThermalSensor) [GPU @ GPU] Current: 28°C - Default Range: [(-42°C) , (127°C)]
},
QueryThermalSensors: (WhereSelectEnumerableIterator`2) {
[0]: (String) 28.84,
[1]: (String) 38.84,
[2]: (String) 28.84,
[3]: (String) 30.84,
[4]: (String) 38.84,
[5]: (String) 30.84,
[6]: (String) 35.28,
[7]: (String) 31.50,
[8]: (String) 31.00,
[9]: (String) 38.00
}
};
.....
Screenshot for correlation:
Here's a little while running unigine heaven maxed to get it hot. After a time, the only non-unique value I saw was [2], that's always identical to [0]. My point here is not that I'm certain it is a duplicate 'filler', but that it suggests all the other values are actual temp sensors and not junk. new 9.txt
Idle temps from EVGA 3080ti FTW Ultra.
The below comes from medium load with more varying numbers than idle for differentiation. Unfortunately the EVGA PX1 (presumably the most accurate source) doesn't show us temps in a concise list and can only be scrolled.
Not exactly clear what the extra temps match up to. I would have to do a time analysis.
I'll try with a different dataset but I couldn't get any of the unmatched values (cols 2-8) to EVGA FTW extra power or memory sensors
(Above chart is still data from the last batch) https://docs.google.com/spreadsheets/d/15v0DYZ3QrXEknpvTMNNdTVU8stddstHJADDkUWeKiiE/edit?usp=sharing)
Based on what I saw in GPU-z, I am going to guess that those additional sensors are i2c-controlled (if gpu-z can show these).
Also, basing on common sense I think we can assume some of the sensors are for VRM (the power circuitry; there are quite a few power measurements being done for different sources - voltage, current, energy, etc).
Here is a side by side with GPU-Z and HWiNFO64 on a 3080 TI:
BTW after looking a few weeks into numbers I believe that my 3060 does not have a memory temperature sensor at all, so sensor #8 is something else, maybe, as I guessed earlier, a power management or whatever related to backplate.
Ways to tell could be to disassemble a device and run it without cooling while being continuously filmed by a thermal camera, then comparing what sensors say to what is detected... But that could ruin a card under experiment.
пн, 27 сент. 2021 г., 7:18 Tim Sirmovics @.***>:
Here is a side by side with GPU-Z and HWiNFO64 on a 3080 TI:
[image: image] https://user-images.githubusercontent.com/10243286/134844767-a74a319b-0832-4ab6-8c31-01de947ba252.png
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/falahati/NvAPIWrapper/issues/45#issuecomment-927516441, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHW6RVCPHNUECFSMIKNUA3UD7WANANCNFSM5BBFUPIA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Based on the @hsterk analyses and images shared by other users, there doesn't seem to be a clear relationship for these values except maybe for the core temp. Since we couldn't figure out exactly what each sensor represents (probably there is another API for this info that we are unaware of) I am going to merge this new low-level API "as is". hopefully, we know more about the values at a later time and I can add a higher level API for easier access.
@falahati in the screenshots from myself and other users above, array index [9] correlates exactly with Memory Temperature on the examples with 3080 TI's and 3090's. @JustAMan does not have this sensor with a 3060.
Do you think this sensor is specific to cards with GDDR6X memory? As only the 3070 TI and above have GDDR6X.
In my efforts to pin down the root cause of a bug, I've noticed the example app above causes it. Link to the relevant issue: https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/issues/598
@xcasxcursex getting the temp causes stutter or getting fan status? or is it changing the policy of the fan? is the stutter the result of high CPU usage or something internal to the Nvidia driver? if it is unrelated to this specific feature, please consider opening a new issue.
@xcasxcursex getting the temp causes stutter or getting fan status? or is it changing the policy of the fan? is the stutter the result of high CPU usage or something internal to the Nvidia driver? if it is unrelated to this specific feature, please consider opening a new issue.
I don't know anything that specific. This bug has been around since the 30 series has, but never in an open source tool, so it was just "when I use this app, the game stutters". Nvidia have actively ignored it. It's only this morning I've been presented with a) an open source app that triggers the bug and b) one where I can toggle the broken feature on and off. I'm pretty sure this is going to give us the ability to pin it down to something more specific, now.
I opened the issue and linked it above but it does look like it might come back to this project, maybe while on its way to nvidia (I'm assuming it is a problem with their API since closed-source projects have the exact same bug, so either it's the API below this, or closed-source projects have borrowed your code without giving credit, and the former seems more likely). I'm just posting here to create a link between them for troubleshooting purposes.
Any update regarding this issue?
I think the low-level API is already available on the rtx30-temp-test
branch if you are interested in using it.
I am yet to merge it upstream tho.
Hello. A single GPU temperature(for my 3080ti) is reported by NvAPIWrapper but RTX cards also have memory and hotspot temperatures.
I see NvAPI_GPU_GetThermalSettings is being used but NvAPI_GPU_GetAllTempsEx( 0x65FE3AAD) appears to have the hotspot and vram temperatures. Any plans to add this?