[Feature] Enable lazy loading to improve website performance

Description
Lazy loading is a technique that can be used to improve the performance of a website by delaying the loading of images and other resources until they are needed. This can help to reduce the initial load time of a page, which can improve the user experience and make the website more responsive.
The benefits of lazy loading include:
Reduced initial load time
Improved user experience
More responsive website
Increased SEO ranking
Screenshots
No response
Checklist

[X] I have checked the existing issues
[X] I have read the [Contributing Guidelines]
[X] I am willing to work on this issue (optional)
[X] I am a GSSoC'23 contributor

This is a good to have feature, but not now specially when we don't have any images on our website.
Maybe we can work on this later. For now, you can look for some other features to be developed / issues to be solved.

I would like to work under SWOC 2024

Go ahead @ayann07 ! You may add lazy-loading for images present on the home page and about page.

Any updates or issues @ayann07 ? Please try to complete it in the next 3 days.


fix: reduced cli parsing complexity

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Hide on-screen controls.

Add ability to completely hide on-screen controls/buttons. Turn off controls in basic/kiosk profile.
Make sure setting is available in preferences. Probably Auto, Always, Never. Auto would use the same behavious as now (no mouse movement for a few seconds).

All the above implemented in 8e8de44837f396bc4bd60495e6926c0fd75c69a8


feat: replace zstd-related symbol to avoid duplication

Purpose or design rationale of this PR
PR title
Your PR title must follow conventional commits (as we are doing squash merge for each PR), so it must start with one of the following types:

[x] feat: A new feature

Breaking change label
Does this PR have the breaking-change label?

[x] No, this PR is not a breaking change

shouldn't we also add scroll_ prefix to the points in the code where we are calling zstd functions?


Render upside down using WebGL on Safari

Hi, here is the situation:
const filmObj = _getFilmObj() /* draw obj somewhere else */
const renderer_1 = PIXI.autoDetectRenderer(width, height)
renderer_1.render(filmObj)
const filmTexture = new PIXI.Texture(new PIXI.BaseTexture(renderer_1.view))
renderer_1.destroy()

const artboardObj = new PIXI.Sprite(filmTexture)
const renderer_2 = PIXI.autoDetectRenderer(width, height)
renderer_2.render(artboardObj)
const artboardTexture =new PIXI.Texture(new PIXI.BaseTexture(renderer_2.view))
renderer_2.destroy()

/* render artboardTexture somewhere else */

When test it on Safari (iOS / Mac OS X), renderer_2.view is fliped upside down against filmObj, while renderer_1.view is natural. It seems like renderer_2 rendering incorrect coordinate on renderer_1.view. Would you please check if anything worng?
Addtional Info:

On Chrome (desktop / mobile) everything is fine;
Using CanvasRenderer everything is fine too, even on Safari.

Tested in Safari / Firefox / Chrome and got below:

weird! will make sure to take a look..

I seem to have a similar problem with canvas being flipped upside down on Safari whereas Chrome displays it correct.

Now I set baseTexture.flipY = true on Safari and use a dirty hack below to get over it.
diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js
index 05258f6..82b1c84 100644
--- a/src/core/renderers/webgl/WebGLRenderer.js
+++ b/src/core/renderers/webgl/WebGLRenderer.js
@@ -396,6 +396,9 @@ WebGLRenderer.prototype.updateTexture = function (texture)

     gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]);

+    if (texture.flipY) {
+        gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1);
+    }
     gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultipliedAlpha);
     gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.source);

I have a similar problem where I add Sprites to a Sprites and then on the canvas call toDataURL(). The image returned is flipped vertically on newer safari, while older safari (7.1 tested) and other browsers seems to return a non flipped image. Any suggestions how to fix this?
@holymonson maybe worth testing on older safari to see if you have a similar behaviour?

Curious if anyone have found the source to this problem?

for the sake of not letting this thread die: I haven't found a solution to it and had to fall back to forced canvas rendering.

This might be related to WebGL context alpha and premultipliedAlpha; in my case, I can only reproduce the issue if alpha is true and premultipliedAlpha is false for the second renderer. Will need to pull out an isolated demo to verify.

I hate an idea of how could that happen, but i need to reproduce it first.

Here is a reproducible case; only affects images generated with toDataURL in Safari.
https://jsbin.com/qivife/14/edit?js,output

is there a way to export with toDataURL API the image not flipped?

@redsend
Its not guaranteed that toDataURL and getImageData returns right stuff for WebGL, its not even in the standart. You have to use PIXI extract API:
//if you want canvas
var canvas =renderer.extract.canvas(stage);
//if you want base64
var base64=renderer.extract.base64(stage);

var base64=renderer.extract.base64(stage); and var canvas =renderer.extract.canvas(stage); fix the upside down issue But then the size of the canvas has changed, and background colors do not persist.  Any suggestions

I am using  PIXI.RenderTexture which fixes the image size issue, but the background color still does not stick


Forbidden Link when downloading the python.zip file in AdvTest dataset

Hello
I think this link is broken (I saw the message as forbidden when I run "wget" to downloadit from instruction of uniXccoder:
https://s3.amazonaws.com/code-search-net/CodeSearchNet/v2/python.zip
Thank you

https://zenodo.org/record/7857872/files/python.zip


Comments from @sethmlarson

https://gist.github.com/sethmlarson/b933cbc6970b81e9069d2da4c16089ce
This is mostly around tags https://github.com/slsa-framework/slsa-verifier/issues/193.

[x] https://github.com/ossf/scorecard/pull/2131
[x] https://github.com/slsa-framework/slsa-verifier/pull/192

Thanks @sethmlarson for writing this up.

I think this issue can be closed now! :rocket:

Thank you, closing.


LHN on HybridApp shows chats as Hidden and on web just empty spaces between the commas

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number:
Reproducible in staging?: Needs Reproduction
Reproducible in production?: Needs Reproduction
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?:
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @davidcardoza
Slack conversation (hyperlinked to channel name): expensify_quality
Action Performed:

Signout/Signin on HybridApp
Navigate to the left-hand navigation (LHN) panel.

Expected Result:
Chats showing the email of the user
Actual Result:
On Hybrid app shows chat as Hidded
On web  just empty spaces between the commas
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Standalone
[ ] Android: HybridApp
[ ] Android: mWeb Chrome
[ ] iOS: Standalone
[x] iOS: HybridApp
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

View all open jobs on GitHub
Issue OwnerCurrent Issue Owner: @davidcardoza

This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989

Checking

Requested QA team to check if they can reproduce it here

We need to get the Onyx data for these reports in the thread please

Doza should be able to right click one and copy Onyx data

I agree, I can't recreate.

Sorry for the delay, I was OOO yesterday. I can no longer reproduce. I will reopen the issue if/when it sprouts up again.

This issue has been reproduced by @zsgreenwald

Slack conversation - https://expensify.slack.com/archives/C05LX9D6E07/p1734546191501819
Onyx state - onyx-state.txt

Sorry to delete that, let's just err on the side of caution with posting the onyx state to GH. We redact sensitive information but I would rather we kept them in Slack just to be 100% safe

@muttmuure - Sounds good, am I good to just link to the Slack convo in that case?

Yeah Slack convo is great!

- Slack conversation

Hey, thanks for the Onyx data, I'm wrapping up another issue and will come back to this soon. @muttmuure this is the first time I'll be working on Onyx related stuff, I'm may need some assistance 😅

Sorry for the late update, yesterday I worked on this one and I'm still trying to pinpoint where the "Hidden" was introduced in the pipeline. I'll bring updates today.

I've left an update here, we've got an Onyx state export and it seems the personalDetailsList is missing a lot of data (that is the reason we're seeing the "Hidden" labels). I'm checking where we're sending the onyx updates that are possibly overwriting the valid values with empty. But so far it seems to be a backend issue.


Race condition in add_arg_scope causes silent incorrect behavior

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
Linux Mint 17.3 Rosa
TensorFlow installed from (source or binary):
binary
TensorFlow version (use command below):
v1.2.0-5-g435cdfc 1.2.1
Python version:
3.6.1
Bazel version (if compiling from source):
N/A
CUDA/cuDNN version:
CUDA Version 8.0.44
cudnn 5.1.5
GPU model and memory:
GTX 970 4GB
Exact command to reproduce:
python add_arg_scope.py

Describe the problem
There is a race condition in tensorflow.contrib.framework.python.ops.add_arg_scope where it doesn't reliably extract the arg list. Sometimes the list is incorrect and sometimes when a function is redefined or reloaded, the old arg list is returned.
In practice, even a function that isn't reloaded can get the wrong arg list. The behavior is strange and seems to depend on the contents of the function and not just its args.
This may be causing errors since arg_scope silently ignores any arguments not in the argspec of the ops it's given.
Source code / logs
import tensorflow as tf
from tensorflow.contrib.framework.python.ops import add_arg_scope, arg_scope, arg_scoped_arguments

# initial definition
@add_arg_scope
def foo(x='x', y='y'):
    if x:
        pass
    if y:
        pass

for i in range(50):
    # redefine the function with different args
    @add_arg_scope
    def foo(a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8):
        pass

    print(arg_scoped_arguments(foo))

sample output (it isn't always regular):
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('x', 'y')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('x', 'y')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('x', 'y')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('x', 'y')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
('x', 'y')
('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
...

Tracked the issue down to memory reuse. The keys for the _DECORATED_OPS dict in arg_scope.py are str(func), which are based on the function's address. When memory is reused and a new function has the same address as a garbage collected one, the old one still appears in the decorator dictionary.
Simple fix is to always update the dict for the latest call to the decorator:
def _add_op(op):
    key_op = _key_op(op)
    #if key_op not in _DECORATED_OPS:
    _DECORATED_OPS[key_op] = _kwarg_names(op)

Thanks for the detailed analysis.  An internal bug has been opened.  You might also just submit a PR with your fix.

After looking at the code some more, it appears scope args will be passed correctly even if the cached argspec is wrong.
My fix works but isn't ideal - a non-decorated op could have the same address as a freed one. A better approach would be to remove the _DECORATED_OPS dict and store the argspec on the wrapper or recompute it on demand.
It's also unsound to use the fn address as the key into the arg scope for the same reason of memory reuse. Better would be an autoincrementing id created by the decorator and stored on the wrapper fn.

@currivan if you have suggestions on how to fix it, feel free to create PR for it.

It has been 14 days with no activity and this issue has an assignee.Please update the label and/or status accordingly.

Please remove the assignee, as this issue is inviting external contributions. Otherwise, remove the contributions welcome label. Thank you.

Please remove the assignee, as this issue is inviting external contributions. Otherwise, remove the contributions welcome label. Thank you.

Please remove the assignee, as this issue is inviting external contributions. Otherwise, remove the contributions welcome label. Thank you.

Please remove the assignee, as this issue is inviting external contributions. Otherwise, remove the contributions welcome label. Thank you.

Please remove the assignee, as this issue is inviting external contributions. Otherwise, remove the contributions welcome label. Thank you.

Please remove the assignee, as this issue is inviting external contributions. Otherwise, remove the contributions welcome label. Thank you.


Can't change 'DIR_WRITTABLE' icon

Hi people,
I can't find a way to change this icon, because it seens not to work properly when using 'awesome-fontconfig', but when using 'awesome-patched' works properly, but many others resources icons stop working as dirs (home and subfolder) icons, load and etc...
Any tips?

Hi there,
you can get a list of all available icons (and the variable name) with get_icon_names.
The symptom you describe sounds like your fontconfig setup is not right. So you could change the icon, or try to fix the setup.
Hope that helps.

Re-reading the issue title, you want to change the icon of the dir_writable segment, right? That segment uses the lock icon, which is POWERLEVEL9K_LOCK_ICON. You just need to assign that variable an icon and it should work..


Query.watch doesn't allow generic type like watchQuery

Versions:
"apollo-angular": "^1.4.1",
"@angular/core": "^6.1.9",
I was going through the tutorials and ran into Query Watch.
However, when mapping the response to my Observable of users$ I got typing errors on on the data object.
this.data$ = this.allUsersGQL.watch()
      .valueChanges
      .pipe(
        map( result => result.data.allUsers )  // <-- `allUsers` not known
      )

When I use watchQuery I can pass in the generic type of the response:
interface User {
  firstName: string;
  lastName: string;
  id: string;

}

interface Response {
  allUsers: User[];
}

this.data$ = this.apollo
    .watchQuery<Response>({
      query: AllUsers,
    })
    .valueChanges
    .pipe(
      tap( result => this.loading = result.loading ),
      map( (result ) => result.data.allUsers )
    ),
    catchError( err => this.error = err ) ;

I this an omission in the code base of Apollo-Angular?  I would like to pass <Response> as a generic return type for watch as I do for watchQuery.

How your AllUsersGQL looks like? Did you created it by yourself? If so, then you should provide a generic type in it.
import { Query } from 'apollo-angular';

export class AllUsersGQL extends Query<Response, Variables> {
  document = gql`...`
}

export class AllUsersGQL extends Query {
  document = gql`
    query {
      allUsers {
        firstName,
        lastName,
        id
      }
    }
  `;
}

I see you put the typing when you extend the query. Excellent!


Re-package all the files from original release folder

Fixes #102

relx does this a little smarter by only including overlay files in addition to the required files.
This may be a good temporary fix and then we should figure out a way to have relx's tar functionality work for exrm.

I'll merge this for now, but yes, I want to defer to relx where possible.


P2P Connection cannot be established for devices in different networks

Hi @pdcarroll, I am a student attempting to create a video chat application and your repo was a big help for a beginner in WebRTC like me.
I was able to set up an elastic beanstalk web application on https and it works. However it only works when both devices are connected to the same network.
When the 2nd device on a separate network (my phone on mobile data), connects as a viewer, the master receives the sdp offer, peer track, and ice candidates.
However, the ice connection state does not change and the media stream does not show.
When Connecting from same network:

Connecting from different network:

I followed the code as showed in your documentation.
Do you have any idea what the issue might be?

Hi @WyeK. I have not seen this issue previously, but will attempt to reproduce...

Hello @pdcarroll, after switching my browser from Chrome to Firefox, the ice connection state was able to change.
However, the ice connection state failed.
After checking the logs of webrtc in the browser, all trickled candidates for the viewer failed.

Do you know what the problem could be?


Support WebView.setBackgroundColor

Electron version: Any??
Operating system: Any??

This is where I found out about it: https://developer.chrome.com/multidevice/webview/tipsandtricks

I've just found https://github.com/atom/electron/issues/1397, I think it's a duplicate of that...

@zcbenz with css background style working now for webview tag, is this method required ?

Probably not. I'll check how the latest version works when I update.

@deepak1556 You are right, setting the background color with CSS would do the job.


fix Enhance SQL Expression Handling by Introducing printSqlInParens to CompoundPredicate

pick #39064
This PR enhances SQL expression handling by introducing a printSqlInParens flag to the CompoundPredicate class and setting it to true. This ensures that expressions in a CompoundPredicate are always enclosed in parentheses, similar to how it is handled in a BinaryPredicate. . By removing redundant handling of CompoundPredicate, the logic for handling SQL generation in the JdbcScanNode node has been simplified as the updated toSql method now handles this uniformly across expressions.

run buildall

run buildall


Convert tag header to comment at top of html

probably best not to use meta as this may have unforeseen side effects, the comment will be a comment
https://stackoverflow.com/questions/77802837/is-it-a-bad-idea-to-use-the-meta-tag-in-html-to-specify-custom-metadata-for-retr

Also include version information


Siftr moderation

games.moderated is true if notes should be invisible by default until the game owner approves them.
notes.published is:

PENDING if the note needs moderator approval (either games.moderated is false, or the note was flagged)
AUTO if it is visible but hasn't been approved
APPROVED if it was PENDING but then received moderator approval

This should be ready to go; both the DB and PHP changes have been tested on my local.


Incorrrect module path resolution

Related to this issue which was resolved in android-runtime. Also logged and discussed here
Steps to reproduce:

use this test application
without any modification, the moment library would work on Android and will not work on iOS.
using this "hack" will also resolve the issue for iOS.

Milestone: Correct the module path resolution for iOS as it works in Android.

Closing this issue as resolved.


Applied the same fix for transform_iterator.cpp addressed in ONSAM-1375.

Description
Applied the same fix for transform_iterator.cpp addressed in ONSAM-1375. This is similar to the fix for counting_iterator.cpp. Replaced  include/algorithm with include/numeric
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (issue)
ONSAM-1375
Type of change
Please delete options that are not relevant. Add a 'X' to the one that is applicable.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Sample Migration (Moving sample from old repository after completing checklist established)

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Command Line
[ ] oneapi-cli
[ ] Visual Studio
[ ] Eclipse IDE
[ ] VSCode

Checklist for Moving samples:
Links and Details can be found in the samples WG Teams Files.

[ ] Review sample design with domain reviewers https://github.com/oneapi-src/oneAPI-samples/wiki/Reviewers-and-Domain-Experts
[ ] Implement coding guidelines and ensure code quality.
[ ] Adhere to sample.json specification. https://github.com/oneapi-src/oneAPI-samples/wiki/sample-json-specification
[ ] Run jsonlint on sample.json to verify json syntax. www.jsonlint.com
[ ] Adhere to readme template
[ ] Ensure/create CI test configurations for sample (ciTests field) https://github.com/oneapi-src/oneAPI-samples/wiki/sample-json-ci-test-object
[ ] Enforce format via clang-format config file
[ ] Review DPC++ code with Paul Peterseon. (GitHub User: pmpeter1)
[ ] Review readme with Tom Lenth or Joe Oster. (GitHub User: JoeOster)
[ ] Tested using Dev Cloud when applicable
[ ] Implement fixes for ONSAM Jiras
[ ] If you have new dependencies/binaries, inform Samples Project Manager Swapna R Dontharaju (@srdontha) or @JoeOster

submitting a new PR as this is failed for Linux

closed the PR by mistake. all the tests are passed


fix: upgrade eslint to v5

N.b. needs to manually run patterns to lint through the glob module before linting until eslint/eslint#10587 is resolved.

@hugomrdias thanks for merging - any chance of this being released?

Sure I'll release it asap. On my phone right now


Add missing Deprecated package to required packages

Here's a pull request that fixes the issue (#27) I've raised

Thank you!


noexcept on destructor causing MSVC ICE

https://github.com/mapnik/mapnik/issues/3277#issuecomment-177471394
I will send a pull request commenting 24f69e1e9586579e8020baea02e9cf2f7d23380e out for MSC. If there's something wrong with either std::is_nothrow_destructible or default exception-specification on destructors in MSVC, I think having none is still better than having an ICE-ing one :icecream:
But this needs a test case that MSVC won't compile (with noexcept on destructor). So far it seems it needs to involve:
struct with_user_declared_dtor
{
    ~with_user_declared_dtor() // noexcept(true) by default
    {}
};

struct with_virtual_dtor
{
    virtual ~with_virtual_dtor() // noexcept(true) by default
    {}
};

struct with_variant_member_and_dtor : with_virtual_dtor
{
    variant<int, with_user_declared_dtor> var;
    virtual ~with_variant_member_and_dtor() // noexcept(true) by default
    // but MSVC somehow concludes this dtor is noexcept(false),
    // probably because is_nothrow_destructible<tuple<int, with_user_declared_dtor>>
    // returns false (which is wrong, imo)
    {}
};

Can someone test this with MSVC, please?
Edit: forgot to derive from with_virtual_dtor, that's important!

@BergWerkGIS - could you try compiling the above code ^ ?

Those two alone build fine with VS2015:

https://github.com/mapbox/variant
https://github.com/lightmare/variant/tree/noexcept-destructor

going for a mapnik build with https://github.com/lightmare/variant/tree/noexcept-destructor next

Nope:
       "c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik.sln" (mapnik;csv;gdal;geojson;ogr;pgraster;postgis
       ;raster;shape;sqlite;topojson target) (1) ->
       "c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\gdal.vcxproj.metaproj" (default target) (7) ->
       "c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\gdal.vcxproj" (default target) (8) ->
       (ClCompile target) ->
         c:\mb\windows-builds-64\packages\mapnik-master\plugins\input\gdal\gdal_featureset.hpp(71): error C2694: 'gdal_featureset
       ::~gdal_featureset(void) noexcept(<expr>)': overriding virtual function has less restrictive exception specification than
       base class virtual member function 'mapnik::Featureset::~Featureset(void)' (compiling source file ..\..\plugins\input\gdal
       \gdal_datasource.cpp) [c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\gdal.vcxproj]
         c:\mb\windows-builds-64\packages\mapnik-master\plugins\input\gdal\gdal_featureset.hpp(71): error C2694: 'gdal_featureset
       ::~gdal_featureset(void) noexcept(<expr>)': overriding virtual function has less restrictive exception specification than
       base class virtual member function 'mapnik::Featureset::~Featureset(void)' (compiling source file ..\..\plugins\input\gdal
       \gdal_featureset.cpp) [c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\gdal.vcxproj]
         ..\..\plugins\input\gdal\gdal_featureset.cpp(79): fatal error C1903: unable to recover from previous error(s); stopping
       compilation [c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\gdal.vcxproj]
         cl : Command line error D8040: error creating or communicating with child process [c:\mb\windows-builds-64\packages\mapn
       ik-master\mapnik-gyp\build\gdal.vcxproj]

    818 Warning(s)
    4 Error(s)

Found another noexcept on dtor: https://github.com/mapbox/variant/blob/master/recursive_wrapper.hpp#L46
Can you try without it:
 ~recursive_wrapper() /*noexcept*/ { delete p_; };

And if that compiles, try explicit:
 ~recursive_wrapper() noexcept(std::is_nothrow_destructible<T>::value) { delete p_; };

If both compile, then maybe commenting out https://github.com/lightmare/variant/commit/5b9528c3e8a68f94aa53e49ed5f54bec2a51634c isn't necessary.

~recursive_wrapper() /*noexcept*/ { delete p_; };

:white_check_mark:

 ~recursive_wrapper() noexcept(std::is_nothrow_destructible<T>::value) { delete p_; };

:x:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(671): error C3672: pseudo-destructor expression can
       only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_feature_collection_grammar.cpp)
       [c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
     C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(671): error C3672: pseudo-destructor expression can
       only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_feature_grammar.cpp) [c:\mb\wind
       ows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]

       "c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik.sln" (mapnik-json;mapnik-wkt target) (1) ->
       "c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj" (default target) (2) ->
       (ClCompile target) ->
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xmemory0(583): error C3672: pseudo-destructor expression
       can only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_generator_grammar.cpp) [c:\m
       b\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(671): error C3672: pseudo-destructor expression ca
       n only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_generator_grammar.cpp) [c:\mb\
       windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xmemory0(583): error C3672: pseudo-destructor expression
       can only be used as part of a function call (compiling source file ..\..\src\json\mapnik_topojson_grammar.cpp) [c:\mb\wind
       ows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(671): error C3672: pseudo-destructor expression ca
       n only be used as part of a function call (compiling source file ..\..\src\json\mapnik_topojson_grammar.cpp) [c:\mb\window
       s-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xmemory0(583): error C3672: pseudo-destructor expression
       can only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_feature_collection_grammar.c
       pp) [c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xmemory0(583): error C3672: pseudo-destructor expression
       can only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_feature_grammar.cpp) [c:\mb\
       windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(671): error C3672: pseudo-destructor expression ca
       n only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_feature_collection_grammar.cpp
       ) [c:\mb\windows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]
         C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(671): error C3672: pseudo-destructor expression ca
       n only be used as part of a function call (compiling source file ..\..\src\json\mapnik_json_feature_grammar.cpp) [c:\mb\wi
       ndows-builds-64\packages\mapnik-master\mapnik-gyp\build\mapnik-json.vcxproj]

    0 Warning(s)
    8 Error(s)

@BergWerkGIS Thanks, I will update the pull with a possible workaround.

Okay, the only quick solution is:
~reference_wrapper() noexcept(false)

because if we had:
~variant() noexcept(std::is_nothrow_destructible<std::tuple<Types...>>::value) {}
// and
~recursive_wrapper() noexcept(std::is_nothrow_destructible<T>::value) {}

Then there'd be infinite recursion -- variant's nothrow-destructibility depends on recursive_wrapper's, and that in turn depends on variant's.

The mission of recursive_wrapper is to wrap incomplete type. One of the two: variant definition or recursive_wrapper definition, — will be first. Second of them will be just only forward declared at that moment.

The only workaround thinkable is to forward provide ad-hoc type traits as part of the recursive_wrapper type. I.e. template< typename wrapped_type, bool is_default_constructible, bool is_nothrow_destructible /* etc... plenty of them */ > class recursive_wrapper.

They both need to be complete at the point where destructor is instantiated. And I actually got a template instantiation depth limit reached error when I tried the above.

The only workaround thinkable is to forward provide ad-hoc type traits as part of the recursive_wrapper type. I.e. template< typename wrapped_type, bool is_default_constructible, bool is_nothrow_destructible /* etc... plenty of them */ > class recursive_wrapper.

+1 but I think for now I'll "hot-fix" that with "don't put stuff with throwing dtor in recursive_wrapper"

@lightmare fair enough.

The noexcept specifier on the destructor creeped into the code in https://github.com/mapbox/variant/commit/46622cbc920f2911c6dd8a285574a4f5f8c66f5f. I presume the easiest solution is to revert back and remove it to dodge https://github.com/mapnik/mapnik/issues/3277#issuecomment-177471394.

It was not this noexcept that caused trouble, it was the complicated one involving (broken) is_nothrow_destructible that I added later (and was reverted already). Without explicit noexcept it's computed from bases' and members' destructors (i.e. everything that happens after this destructor's body), which in this case is the same as noexcept or noexcept(true).

@lightmare okay, thanks for clarifying. So do I understand right then that https://github.com/mapnik/mapnik/issues/3277#issuecomment-177471394 is likely fixed / no longer relevant as long as mapnik is using the latest variant (which it is)?

So do I understand right then that mapnik/mapnik#3277 (comment) is likely fixed

Answered my own question. https://github.com/mapnik/mapnik/issues/3277#issuecomment-184896603. This issue is therefore resolved, closing!


Audio lost when plugging in earphones to Nokia Android phone

User able to hear audio normally on Nokia Android
Plugs in earphones
Audio listening lost

This sounds like a platform specific issue, are you sure this isn't a issue with Android on Nokia. Can you also provide other information like your browser name, browser version, android version, and phone make.


Character ^ missed in input parsing for az appconfig

Describe the bug
When we run CLI command in powershell, ^ is missed in input argument. For example, if --input is "a^b", then it becomes "ab". This issue only happens in powershell. After some verifications, character is drop in CLI input pipeline before service team's code can reach it.
To Reproduce
$mypass = 'hello^test'
az appconfig kv set -n 'resource-name' --key 'myKey' --value $mypass --yes -y
Expected behavior
All characters should be preserved as input.
Environment summary
CLI version: 2.26.0
Env: Powershell
Additional context

Issue cut by service team on behalf of a customer reported issue. Looks like it is a generic problem for running CLI in powershell.

route to service team

@yonzhan Can you help to redirect to CLI framework folks who work on cli in powershell? This issue is not limit to az appconfig but all other commands.

In Command Prompt, ^ in such case is interpreted as the the Escape Character which as no meaning before t:
C:\>echo hello^test
hellotest

See https://ss64.com/nt/syntax-esc.html
When calling az.cmd from PowerShell, please pay attention to PowerShell's quoting rules: https://github.com/Azure/azure-cli/blob/dev/doc/quoting-issues-with-powershell.md.
You may surround the value with double quotes:
PS > az --debug '"hello^test"'
cli.knack.cli: Command arguments: ['--debug', 'hello^test']

Or prevent PowerShell from parsing quotes:
PS > az --% --debug "hello^test"
cli.knack.cli: Command arguments: ['--debug', 'hello^test']

Or repeat ^ 4 times:
PS > az --debug 'hello^^^^test'
cli.knack.cli: Command arguments: ['--debug', 'hello^test']

This causes the az.cmd script to receive hello^^test, and it passes hello^test to python.exe.


DPAT handles hashcat $HEX[ ] output

Hashcat returns password with special characters like umlauts as well as password with a colon (:) in them inside of a $HEX[ ] tag. DPAT now converts this hex back to the actual password for display.
This also fixes the the bug reported as issue #5 where the password length would get reported wrong in these cases.

Thank you Cameron!


MOD 10KTL3-X HA Energy usage graph

Hey all,
Just installed homeassistant-grott (thank you) and noticed that at the beginning of the day I get all the energy from grid (between when it goes off and comes back on) in one go. I noticed that the inverter goes off at night and it seems that it does not transmit anything until morning.
Is there anyway to set it so that it continues logging during night time? It's mostly because of the ugly looking Energy usage graph otherwise the data is correct as the smart meter is incrementing import and export during this time. Just the first hour when it comes back online is a large bar in HA.
Thanks

Hmmmm, that's an interesting one. It would all depend on what data is flowing into grott. Essentially this integration just visualises the data from grott.
Could you capture some logs from grott overnight and see if there's a distinct point where this value suddenly changes?

Sure, I will check tonight, but I suspect that no data is flowing into grott as the inverter basically goes offline when it receives no power from the panels. The meter still stores the import and export values during the night and when the inverter comes back online, it transmits the new meter values.

Managed to get them now. They are the last data transmission before shutdown, something in the middle (I don't know what), and the first this morning:
	 - Growatt original Data: 		 \x00\x41\x00\x06\x01\x0e\x01\x20\x1f\x35\x2b\x42\x23\x33\x24\x71\x20\x3c\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x3d\x3c\x29\x30\x37\x0b\x45\x5f\x44\x2a\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x76\x7e\x76\x54\x77\x7a\x77\xa9 		 \x74\x74\x47\xfc\x6f\x77\x69\xde\x74\x47\x7a\xa7\x77\x61\x7c\xdb\x47\x72\x6f 		 \x5a\x61\x74\x74\x50\x72\x6f\x77\x26\x74\x74\x65\x4a\x6f\x77\x6f\x11\x74\x47 		 \x49\xf8\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x8d\x90\x98\x85\x8b 		 \x8b\xb4\x15\x90\x88\x98\x2c\x74\x47\x71\x07\x77\x61\x76\xb6\x47\x72\x6c\xcb 		 \x61\x74\x18\x72\x72\x6f\x77\x61\x8b\x8b\x9b\xd0\x6f\x77\x62\x03\x74\x47\x73 		 \x9c\x77\x61\x7b\x6f\x47\x72\x60\x57\x61\x74\x7b\x41\x72\x6f\x64\x44\x74\x74 		 \x48\x59\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61 		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47 		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74 		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x25\xdd 	 - Grott automatic protocol detection 	 - Grott data record length 278 	 - layout   :  T060120 	 - Record layout used :  T060120 	 - Growatt data decrypted V2 	 - Grott Growatt data decrypted 	 - Growatt plain data:<PHONE_NUMBER>0e01205847443542475036525300000000000000000000000000000000000000005 		 24b4844434c3730334b0000000000000000000000000000000000000000170a0213051500c800 		 00008e000008aa000008c8000008af0000002d00000017000000470000223800000e6500003b9<PHONE_NUMBER>000000000000000ffffefe4fffff367fffff95800000368000002c2000003bc0000 		 6c3500000000ffffdca200000377000001f300000f1b00000f2000000f060000132500000f2b0<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>0004aaa 	 - Growatt new layout processing 		 - decrypt       :  True 		 - offset        :  6 		 - record layout :  T060120 	 - Grott data record date/time processing started 	 - date-time:  2023-10-02T19:05:21 	 - Grott values retrieved: 		 -  datalogserial        :  XGD5BGP6RS 		 -  pvserial             :  RKHDCL703K 		 -  voltage_l1           :  221.8 		 -  voltage_l2           :  224.8 		 -  voltage_l3           :  222.3 		 -  Current_l1           :  4.5 		 -  Current_l2           :  2.3 		 -  Current_l3           :  7.1 		 -  act_power_l1         :  876.0 		 -  act_power_l2         :  368.5 		 -  act_power_l3         :  1525.5 		 -  app_power_l1         :  0.0 		 -  app_power_l2         :  0.0 		 -  app_power_l3         :  0.0 		 -  react_power_l1       :  -412.4 		 -  react_power_l2       :  -322.5 		 -  react_power_l3       :  -170.4 		 -  powerfactor_l1       :  0.9 		 -  powerfactor_l2       :  0.7 		 -  powerfactor_l3       :  1.0 		 -  pos_rev_act_power    :  2770.1 		 -  pos_act_power        :  2770.1 		 -  rev_act_power        :  2770.1 		 -  app_power            :  0.0 		 -  react_power          :  -905.4 		 -  powerfactor          :  0.9 		 -  frequency            :  49.9 		 -  L1-2_voltage         :  386.7 		 -  L2-3_voltage         :  387.2 		 -  L3-1_voltage         :  384.6 		 -  pos_act_energy       :  490.1 		 -  rev_act_energy       :  388.3 	 - MQTT jsonmsg:  			 {"device": "XGD5BGP6RS", "time": "2023-10-02T19:05:21", "buffered": "no", 			 "values": {"datalogserial": "XGD5BGP6RS", "pvserial": "RKHDCL703K", 			 "voltage_l1": 2218, "voltage_l2": 2248, "voltage_l3": 2223, "Current_l1": 			 45, "Current_l2": 23, "Current_l3": 71, "act_power_l1": 8760, 			 "act_power_l2": 3685, "act_power_l3": 15255, "app_power_l1": 0, 			 "app_power_l2": 0, "app_power_l3": 0, "react_power_l1": -4124, 			 "react_power_l2": -3225, "react_power_l3": -1704, "powerfactor_l1": 872, 			 "powerfactor_l2": 706, "powerfactor_l3": 956, "pos_rev_act_power": 27701, 			 "pos_act_power": 27701, "rev_act_power": 27701, "app_power": 0, 			 "react_power": -9054, "powerfactor": 887, "frequency": 499, "L1-2_voltage": 			 3867, "L2-3_voltage": 3872, "L3-1_voltage": 3846, "pos_act_energy": 4901, 			 "rev_act_energy": 3883}} 	 - Grott MQTT topic used : energy/growatt 	 - Grott MQTT message retain enabled 	 - MQTT message message sent 	 - Grott Send data to PVOutput disabled  	 - Grott Send data to Influx disabled  	 - Grott extension processing disabled  	 - Growatt packet received: 		  <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 21908)> 	 - Data less then minimum record length, data not processed 	 - Grott connection error 	 - peer has disconnected 	 - ('<IP_ADDRESS>', 7136) has connected 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 7136)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 7136)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Growatt original Data: 		 \x00\x02\x00\x06\x02\x41\x01\x03\x1f\x35\x2b\x42\x23\x33\x24\x71\x20\x3c\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x3d\x3c\x29\x30\x37\x0b\x45\x5f\x44\x2a\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x75\x61 		 \x74\x74\x3b\x72\x6e\x77\xf0\x8b\x8b\x47\x16\x6f\x77\x46\x64\x74\x46\xf4\xcf 		 \x71\x21\x30\x38\x76\x5c\x5f\x77\x3b\x36\x35\x06\x72\x7d\x77\x60\x74\x74\x41 		 \x32\x6f\x4b\x61\x48\x74\x23\x72\x0b\x77\x61\x26\x3f\x0f\x36\x2c\x3b\x56\x44 		 \x47\x0c\x72\x6f\x77\x61\x74\x75\x47\x16\x6f\x77\x61\x74\x54\x67\x52\x3f\x21 		 \x41\x3d\x1a\x31\x17\x1d\x03\x04\x06\x54\x67\x72\x6f\x64\xeb\x7c\x77\x40\x95 		 \x6f\x7d\x61\x77\x74\x40\x72\x65\x77\x67\x74\x76\x4b\x01\x7e\x92\x73\xfa\x60 		 \x59\x78\x8b\x66\x84\x66\xfa\x53\x6c\x65\x93\x70\x91\x66\xc9\x66\x71\x7a\x5b 		 \x65\x6a\x54\x0c\x7c\xe5\x61\x46\x74\x75\x72\x5d\x77\x53\x74\x46\x47\x40\x6f 		 \x45\x61\x46\x74\x75\x72\x5d\x77\x53\x74\x46\x56\x6c\x6f\x77\x25\x38\x35\x06 		 \x42\x5a\x42\x50\x44\x45\x76\x4a\x6e\x46\x61\x74\x74\x47\x61\xf3\x77\x53\x64 		 \xba\x56\x6c\x61\x26\x6f\x75\x74\x53\x72\x6a\x67\x36\x7b\xe4\x61\xae\x49\xab 		 \x47\xb6\x53\xcc\x55\xe4\x50\x08\x74\x6a\x47\x72\x6e\x93\x61\x8b\x3a\x67\x72 		 \x90\x39\x41\x74\x8b\x09\x52\x6f\x88\x2f\x54\x4a\x4e\x72\x6f\x78\x60\x74\x10 		 \x47\x73\x6f\x7d\x61\x74\x74\x3a\x72\x96\x27\x37\x54\x54\x67\x33\x5f\x47\x51 		 \x54\x54\x67\x52\x4f\x57\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x7c\x03\x72\xe8\x76\x1f\x72\x6f\x70\xa9\x66\xd8\x56 		 \x6c\x7e\x69\x61\x10\x67\x39\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74 		 \x74\x47\x72\x6f\x77\x61\x74\x5c\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x40 		 \x7c\xeb\x61\x74\x74\x47\x72\x6e\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61 		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x6f\x25\x2a\x3c\x30\x04\x3e\x58\x47\x52\x3f\x2c\x1f 		 \x2a\x37\x2f\x39\x2c\x2c\x1f\x2a\x37\x2f\x39\x2c\x2c\x1f\x2a\x37\x2f\x39\x74 		 \x74\x47\x72\x6f\x77\x61\x7e\x74\x4d\x72\x65\x77\x61\x74\x74\x47\x72\x6f\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x9d\x6f\x77\x61\x74\x74\x47\x72 		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x21\x0c 	 - Grott automatic protocol detection 	 - Grott data record length 585 	 - layout   :  T060103XTL3 	 - no matching record layout found, try generic 	 - Record layout used :  T060103XTL3 	 - Growatt data decrypted V2 	 - Grott Growatt data decrypted 	 - Growatt plain data:<PHONE_NUMBER>4101035847443542475036525300000000000000000000000000000000000000005 		 24b4844434c3730334b0000000000000000000000000000000000000000000000000000020000 		 007c00010091ffff006400002710000186a00640444c312e30005a42414100120001000006400 		 03c003c006400640000524b4844434c3730334b00000000000100640000000020202050562049 		 6e76657274657220200000138a080307e7000a00030007000a000600020c7311e5128e141e0ae 		 411e5128e141e0ae411e5128e141e0d3a111e137e139200320032003200320032003200320032<PHONE_NUMBER>320032111e0000444c41413035353130313138013100000000139c003210ce111e0 		 e510e010014000510570f9026dc26dc26c2278b278b2769001e000001e400ff4e2000ff4e2000 		 ff4e2000ff4e203e0900000f0100640001000a0000007d00f9505620202041303030202020202<PHONE_NUMBER>00000000000000000000000000000001374139c0258000007c812ac111e111e0064 		 137e0000000000000000000000000000000000000028000000000000000000000000000000000<PHONE_NUMBER>00000000000000032139c0000000000010000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000 		 0524b4844434c3730334b5858585858585858585858585858585858585858000000000000000a 		 000a000a00000000000000000000000000000000000000ef00000000000000000000000000000<PHONE_NUMBER>05363 	 - Grott data ack record or data record not defined no processing done 	 - Growatt packet received: 		  <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 7136)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 7136)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Growatt original Data: 		 \x00\x02\x00\x06\x02\x41\x01\x04\x1f\x35\x2b\x42\x23\x33\x24\x71\x20\x3c\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x3d\x3c\x29\x30\x37\x0b\x45\x5f\x44\x2a\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x64\x7c\x7a\x44\x5d\x7c\x75\x61 		 \x74\x74\x3b\x72\x6f\x77\x61\x74\x74\x4a\xa4\x6f\x77\x61\x74\x74\x47\x7f\xba 		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47 		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74 		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77 		 \x61\x67\xf3\x4f\x9c\x6f\x77\x61\x74\x74\x47\x7a\x83\x77\x61\x74\x74\x47\x72 		 \x67\x9d\x61\x74\x74\x47\x72\x6f\x78\xe4\x7b\x01\x48\x29\x6f\x77\x61\x74\x74 		 \x47\x72\x4c\x77\x61\x1e\x5d\x47\x72\x6f\x77\x61\x74\x74\x51\x72\x6f\x77\x61 		 \x74\x74\x47\x79\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47 		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x40\x75 		 \x6a\x47\x0a\x6f\x00\x61\x74\x74\x47\x74\xb5\x71\xad\x3a\x54\x47\x72\x6f\x76 		 \xe7\xd4\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x6f\x77\x61\x74\x79\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x3a\x72\x96\x77\x61\x74\x74\x47\x72\x6f\x77\x61 		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47 		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74 		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x71\x87\x77\x61\x74\x74\x47\x72\x6f\x60\x61\x7e\x74\x45\x72\x78\x77\x6b 		 \x74\x77\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47 		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74 		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77 		 \x61\x74\xc9\x72\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\xb9\x79 	 - Grott automatic protocol detection 	 - Grott data record length 585 	 - layout   :  T060104XTL3 	 - no matching record layout found, try generic 	 - Record layout used :  T06NNNNXTL3 	 - Growatt data decrypted V2 	 - Grott Growatt data decrypted 	 - Growatt plain data:<PHONE_NUMBER>4101045847443542475036525300000000000000000000000000000000000000005 		 24b4844434c3730334b000000000000000000000000000000000000000005080e032f13020000 		 007c0000000000000dd60000000000000dd500000000000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000013 		 8708ee00000000000008ec00000000000008ea0000000000000f850f750f5b000000000000002 		 300006a290000000000000016000000000000000b000000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000021011e00780<PHONE_NUMBER>006da06cc4e200000000186a0000000000000000000000000000000000000000000 		 0d0000000000000000000000000000000000000000007d00f9000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>00000000000000000000000000000000000000000000000000000000003e8000000<PHONE_NUMBER>000a00020017000a000300000000000000000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>000000000000000000bd35000000000000000000000000000000000000000000000<PHONE_NUMBER>0cb16 	 - Growatt new layout processing 		 - decrypt       :  True 		 - offset        :  6 		 - record layout :  T06NNNNXTL3 	 - Grott data record date/time processing started 	 - date-time:  2005-08-14T03:47:19 	 - Grott values retrieved: 		 -  datalogserial        :  XGD5BGP6RS 		 -  pvserial             :  RKHDCL703K 		 -  pvstatus             :  0 		 -  pvpowerin            :  0.0 		 -  pv1voltage           :  354.2 		 -  pv1current           :  0.0 		 -  pv1watt              :  0.0 		 -  pv2voltage           :  354.1 		 -  pv2current           :  0.0 		 -  pv2watt              :  0.0 		 -  pvpowerout           :  0.0 		 -  pvfrequentie         :  50.0 		 -  pvgridvoltage        :  228.6 		 -  pvgridcurrent        :  0.0 		 -  pvgridpower          :  0.0 		 -  pvgridvoltage2       :  228.4 		 -  pvgridcurrent2       :  0.0 		 -  pvgridpower2         :  0.0 		 -  pvgridvoltage3       :  228.2 		 -  pvgridcurrent3       :  0.0 		 -  pvgridpower3         :  0.0 		 -  Vac_RS               :  397.3 		 -  Vac_ST               :  395.7 		 -  Vac_TR               :  393.1 		 -  pvenergytoday        :  0.0 		 -  pvenergytotal        :  3.5 		 -  totworktime          :  3.8 		 -  epv1today            :  0.0 		 -  epv1total            :  2.2 		 -  epv2today            :  0.0 		 -  epv2total            :  1.1 		 -  epvtotal             :  3.3 		 -  pvtemperature        :  28.6 		 -  pvipmtemperature     :  12.0 		 -  pvboottemperature    :  11.9 		 -  uwBatVolt_DSP        :  0.0 		 -  pbusvolt             :  1754 		 -  nbusvolt             :  1740 	 - MQTT jsonmsg:  			 {"device": "RKHDCL703K", "time": "2005-08-14T03:47:19", "buffered": "no", 			 "values": {"datalogserial": "XGD5BGP6RS", "pvserial": "RKHDCL703K", 			 "pvstatus": 0, "pvpowerin": 0, "pv1voltage": 3542, "pv1current": 0, 			 "pv1watt": 0, "pv2voltage": 3541, "pv2current": 0, "pv2watt": 0, 			 "pvpowerout": 0, "pvfrequentie": 4999, "pvgridvoltage": 2286, 			 "pvgridcurrent": 0, "pvgridpower": 0, "pvgridvoltage2": 2284, 			 "pvgridcurrent2": 0, "pvgridpower2": 0, "pvgridvoltage3": 2282, 			 "pvgridcurrent3": 0, "pvgridpower3": 0, "Vac_RS": 3973, "Vac_ST": 3957, 			 "Vac_TR": 3931, "pvenergytoday": 0, "pvenergytotal": 35, "totworktime": 			 27177, "epv1today": 0, "epv1total": 22, "epv2today": 0, "epv2total": 11, 			 "epvtotal": 33, "pvtemperature": 286, "pvipmtemperature": 120, 			 "pvboottemperature": 119, "uwBatVolt_DSP": 0, "pbusvolt": 1754, "nbusvolt": 			 1740}} 	 - Grott MQTT topic used : energy/growatt 	 - Grott MQTT message retain enabled 	 - MQTT message message sent 	 - Grott Send data to PVOutput disabled  	 - Grott Send data to Influx disabled  	 - Grott extension processing disabled  	 - Growatt packet received: 		  <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 7136)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 7136)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 41752), raddr=('<IP_ADDRESS>', 5279)> 	 - Growatt original Data: 		 \x00\x02\x00\x06\x01\x0e\x01\x20\x1f\x35\x2b\x42\x23\x33\x24\x71\x20\x3c\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x3d\x3c\x29\x30\x37\x0b\x45\x5f\x44\x2a\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x76\x7e\x77\x40\x79\x77\x77\xa9 		 \x74\x74\x47\xfc\x6f\x77\x69\x92\x74\x47\x7a\x83\x77\x61\x7c\x86\x47\x72\x6f 		 \x55\x61\x74\x74\x4c\x72\x6f\x77\x62\x74\x74\x51\xf8\x6f\x77\x64\xfb\x74\x47 		 \x73\xc3\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x8d\x90\x81\x87\x8b 		 \x8b\xbf\x57\x90\x88\x9f\x34\x74\x47\x70\xb3\x77\x61\x76\x65\x47\x72\x6e\x83 		 \x61\x74\x69\x81\x72\x6f\x77\x61\x8b\x8b\xaa\x38\x6f\x77\x63\xe8\x74\x47\x73 		 \x9b\x77\x61\x7b\x1a\x47\x72\x60\x0e\x61\x74\x7b\x33\x72\x6f\x64\xe3\x74\x74 		 \x48\x59\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61 		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47 		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74 		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x15\x2c 	 - Grott automatic protocol detection 	 - Grott data record length 278 	 - layout   :  T060120 	 - Record layout used :  T060120 	 - Growatt data decrypted V2 	 - Grott Growatt data decrypted 	 - Growatt plain data:<PHONE_NUMBER>0e01205847443542475036525300000000000000000000000000000000000000005 		 24b4844434c3730334b0000000000000000000000000000000000000000170a03070b1800c800 		 00008e000008e6000008ec000008f2000000220000000b000000030000168a0000058f000001a 		 c000000000000000000000000fffff6e6fffff825fffffe40000002dc00000211000001f40000 		 1dc600000000ffffed4a0000029c000001f400000f6e00000f7900000f740000138200000f2b0<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000<PHONE_NUMBER>0007a5b 	 - Growatt new layout processing 		 - decrypt       :  True 		 - offset        :  6 		 - record layout :  T060120 	 - Grott data record date/time processing started 	 - date-time:  2023-10-03T07:11:24 	 - Grott values retrieved: 		 -  datalogserial        :  XGD5BGP6RS 		 -  pvserial             :  RKHDCL703K 		 -  voltage_l1           :  227.8 		 -  voltage_l2           :  228.4 		 -  voltage_l3           :  229.0 		 -  Current_l1           :  3.4 		 -  Current_l2           :  1.1 		 -  Current_l3           :  0.3 		 -  act_power_l1         :  577.0 		 -  act_power_l2         :  142.3 		 -  act_power_l3         :  42.8 		 -  app_power_l1         :  0.0 		 -  app_power_l2         :  0.0 		 -  app_power_l3         :  0.0 		 -  react_power_l1       :  -233.0 		 -  react_power_l2       :  -201.1 		 -  react_power_l3       :  -44.8 		 -  powerfactor_l1       :  0.7 		 -  powerfactor_l2       :  0.5 		 -  powerfactor_l3       :  0.5 		 -  pos_rev_act_power    :  762.2 		 -  pos_act_power        :  762.2 		 -  rev_act_power        :  762.2 		 -  app_power            :  0.0 		 -  react_power          :  -479.0 		 -  powerfactor          :  0.7 		 -  frequency            :  50.0 		 -  L1-2_voltage         :  395.0 		 -  L2-3_voltage         :  396.1 		 -  L3-1_voltage         :  395.6 		 -  pos_act_energy       :  499.4 		 -  rev_act_energy       :  388.3 	 - MQTT jsonmsg:  			 {"device": "XGD5BGP6RS", "time": "2023-10-03T07:11:24", "buffered": "no", 			 "values": {"datalogserial": "XGD5BGP6RS", "pvserial": "RKHDCL703K", 			 "voltage_l1": 2278, "voltage_l2": 2284, "voltage_l3": 2290, "Current_l1": 			 34, "Current_l2": 11, "Current_l3": 3, "act_power_l1": 5770, "act_power_l2": 			 1423, "act_power_l3": 428, "app_power_l1": 0, "app_power_l2": 0, 			 "app_power_l3": 0, "react_power_l1": -2330, "react_power_l2": -2011, 			 "react_power_l3": -448, "powerfactor_l1": 732, "powerfactor_l2": 529, 			 "powerfactor_l3": 500, "pos_rev_act_power": 7622, "pos_act_power": 7622, 			 "rev_act_power": 7622, "app_power": 0, "react_power": -4790, "powerfactor": 			 668, "frequency": 500, "L1-2_voltage": 3950, "L2-3_voltage": 3961, 			 "L3-1_voltage": 3956, "pos_act_energy": 4994, "rev_act_energy": 3883}} 	 - Grott MQTT topic used : energy/growatt 	 - Grott MQTT message retain enabled 	 - MQTT message message sent 	 - Grott Send data to PVOutput disabled  	 - Grott Send data to Influx disabled  	 - Grott extension processing disabled  	 - Growatt packet received: 		  <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 7136)> 	 - Data less then minimum record length, data not processed 	 - ('<IP_ADDRESS>', 27187) has connected 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - ('<IP_ADDRESS>', 5279) has disconnected 	 - Growatt packet received: 		  <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 27187)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 27187)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Growatt original Data: 		 \x00\x02\x00\x06\x02\x41\x01\x03\x1f\x35\x2b\x42\x23\x33\x24\x71\x20\x3c\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72 		 \x3d\x3c\x29\x30\x37\x0b\x45\x5f\x44\x2a\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x75\x61 		 \x74\x74\x3b\x72\x6e\x77\xf0\x8b\x8b\x47\x16\x6f\x77\x46\x64\x74\x46\xf4\xcf 		 \x71\x21\x30\x38\x76\x5c\x5f\x77\x3b\x36\x35\x06\x72\x7d\x77\x60\x74\x74\x41 		 \x32\x6f\x4b\x61\x48\x74\x23\x72\x0b\x77\x61\x26\x3f\x0f\x36\x2c\x3b\x56\x44 		 \x47\x0c\x72\x6f\x77\x61\x74\x75\x47\x16\x6f\x77\x61\x74\x54\x67\x52\x3f\x21 		 \x41\x3d\x1a\x31\x17\x1d\x03\x04\x06\x54\x67\x72\x6f\x64\xeb\x7c\x77\x40\x95 		 \x6f\x7d\x61\x77\x74\x40\x72\x64\x77\x4b\x74\x76\x4b\x01\x7e\x92\x73\xfa\x60 		 \x59\x78\x8b\x66\x84\x66\xfa\x53\x6c\x65\x93\x70\x91\x66\xc9\x66\x71\x7a\x5b 		 \x65\x6a\x54\x0c\x7c\xe5\x61\x46\x74\x75\x72\x5d\x77\x53\x74\x46\x47\x40\x6f 		 \x45\x61\x46\x74\x75\x72\x5d\x77\x53\x74\x46\x56\x6c\x6f\x77\x25\x38\x35\x06 		 \x42\x5a\x42\x50\x44\x45\x76\x4a\x6e\x46\x61\x74\x74\x47\x61\xf3\x77\x53\x64 		 \xba\x56\x6c\x61\x26\x6f\x75\x74\x53\x72\x6a\x67\x36\x7b\xe4\x61\xae\x49\xab 		 \x47\xb6\x53\xcc\x55\xe4\x50\x08\x74\x6a\x47\x72\x6e\x93\x61\x8b\x3a\x67\x72 		 \x90\x39\x41\x74\x8b\x09\x52\x6f\x88\x2f\x54\x4a\x4e\x72\x6f\x78\x60\x74\x10 		 \x47\x73\x6f\x7d\x61\x74\x74\x3a\x72\x96\x27\x37\x54\x54\x67\x33\x5f\x47\x51 		 \x54\x54\x67\x52\x4f\x57\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x7c\x03\x72\xe8\x76\x1f\x72\x6f\x70\xa9\x66\xd8\x56 		 \x6c\x7e\x69\x61\x10\x67\x39\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74 		 \x74\x47\x72\x6f\x77\x61\x74\x5c\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x40 		 \x7c\xeb\x61\x74\x74\x47\x72\x6e\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74 		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61 		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f 		 \x77\x61\x74\x74\x47\x72\x6f\x25\x2a\x3c\x30\x04\x3e\x58\x47\x52\x3f\x2c\x1f 		 \x2a\x37\x2f\x39\x2c\x2c\x1f\x2a\x37\x2f\x39\x2c\x2c\x1f\x2a\x37\x2f\x39\x74 		 \x74\x47\x72\x6f\x77\x61\x7e\x74\x4d\x72\x65\x77\x61\x74\x74\x47\x72\x6f\x77 		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x9d\x6f\x77\x61\x74\x74\x47\x72 		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x21\x28 	 - Grott automatic protocol detection 	 - Grott data record length 585 	 - layout   :  T060103XTL3 	 - no matching record layout found, try generic 	 - Record layout used :  T060103XTL3 	 - Growatt data decrypted V2 	 - Grott Growatt data decrypted 	 - Growatt plain data:<PHONE_NUMBER>4101035847443542475036525300000000000000000000000000000000000000005 		 24b4844434c3730334b0000000000000000000000000000000000000000000000000000020000 		 007c00010091ffff006400002710000186a00640444c312e30005a42414100120001000006400 		 03c003c006400640000524b4844434c3730334b00000000000100640000000020202050562049 		 6e76657274657220200000138a080307e7000a00030007000b002a00020c7311e5128e141e0ae 		 411e5128e141e0ae411e5128e141e0d3a111e137e139200320032003200320032003200320032<PHONE_NUMBER>320032111e0000444c41413035353130313138013100000000139c003210ce111e0 		 e510e010014000510570f9026dc26dc26c2278b278b2769001e000001e400ff4e2000ff4e2000 		 ff4e2000ff4e203e0900000f0100640001000a0000007d00f9505620202041303030202020202<PHONE_NUMBER>00000000000000000000000000000001374139c0258000007c812ac111e111e0064 		 137e0000000000000000000000000000000000000028000000000000000000000000000000000<PHONE_NUMBER>00000000000000032139c0000000000010000000000000000000000000000000000<PHONE_NUMBER>0000000000000000000000000000000000000000000000000000000000000000000 		 0524b4844434c3730334b5858585858585858585858585858585858585858000000000000000a 		 000a000a00000000000000000000000000000000000000ef00000000000000000000000000000<PHONE_NUMBER>05347 	 - Grott data ack record or data record not defined no processing done 	 - Growatt packet received: 		  <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 27187)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 5279), raddr=('<IP_ADDRESS>', 27187)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed 	 - Growatt packet received: 		  <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('<IP_ADDRESS>', 36550), raddr=('<IP_ADDRESS>', 5279)> 	 - Data less then minimum record length, data not processed

OK, thanks for the info. Unfortunately I couldn't find anyway to keep the inverter transmitting during the night.

Hi everybody, Please "light me" how to solve this issues for  MOD 10KTL3-X : (300) AC V Outrange
https://github.com/stefanionica/html2024/blob/main/Screenshot 2024-09-22 212248.png


chore: bump version 0.4.0-beta.3

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (4d95fdb) 6.49% compared to head (4ae5b20) 6.49%.
Report is 65 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@          Coverage Diff          @@
##            main    #252   +/-   ##
=====================================
  Coverage   6.49%   6.49%
=====================================
  Files         74      74
  Lines       4191    4191
  Branches     829     829
=====================================
  Hits         272     272
  Misses      3119    3119
  Partials     800     800

Flag
Coverage Δ

unittests
6.49% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Added option rates_filename to settings.json

Also the option '-f' prints a warning that it will become deprecated

@mslacken you need to run clang-format && clang-tidy before creating your commit

Great!


Upgrade dependencies

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 76.05%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #559      +/-   ##
==========================================
+ Coverage   76.00%   76.05%   +0.05%
==========================================
  Files          72       72
  Lines        5944     5944
==========================================
+ Hits         4518     4521       +3
+ Misses       1036     1033       -3
  Partials      390      390

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


result_type parameter prevents returning any addresses

I just tried using this plugin to reverse geocode on web and passed in the required parameters: latitude, longitude, and apiKey. however, it returned 0 addresses. I then manually put the generated url into my browser. with result_type=street_address, there are indeed no results, but without that parameter, I get several results. it seems they have types like bar, establishment, and store. they just don't have street_address.
is it possible to remove this parameter or at least make it a configurable option?

just added as optional param


Fix broken MD link

Coverage remained the same at 73.832% when pulling 11feff36abe37eb774b2fc74ff8e7fcb3b6b7635 on Mackiovello:patch-1 into 2c01d0d551c5924db1631567af9e2c75fae08c0b on mediaelement:master.

PR merged. Thanks

Please star us at https://github.com/mediaelement/mediaelement and also https://github.com/mediaelement/mediaelement-plugins, to continue improving the package and giving it more popularity; tell your friends/coworkers/etc. to support the project, if you don't mind. It would be greatly appreciated it


Possible to display ClientName instead of ClientId after user is Logged Out?

Hi,
I am using IdentityServer4 including the QuickStart UI from the IDSRV4 repo.
I can successfully connect my MVC App to IdentityServer using hybrid flow but I noticed one thing when I logged out of the application. In the IdentityServer4 LoggedOutView it is showing my ClientId (used to connect MVC app to IDSRV4) instead of the client name.

Is it possible to display the ClientName instead of the ClientId? I find ClientName more applicable to be displayed on the LoggedOut page.
Greatly appreciate for your inputs. Thanks.
IDSRV4 log snippet

IDSRV4 Client and MVC Client Configuration
new Client
{
    ClientId = "mvc-client",
    ClientName = "MVC Client",
    AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,

    ClientSecrets =
    {
        new Secret("secret".Sha256())
    },

    RedirectUris           = { "http://localhost:40078/signin-oidc" },
    PostLogoutRedirectUris = { "http://localhost:40078/signout-callback-oidc" },

    AllowedScopes =
    {
        IdentityServerConstants.StandardScopes.OpenId,
        IdentityServerConstants.StandardScopes.Profile,
        "api1"
    },
    AllowOfflineAccess = true
};

// MVC Client
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
	AuthenticationScheme = "oidc",
	SignInScheme = "Cookies",
	Authority = "http://localhost:5000",
	RequireHttpsMetadata = false,
	ClientId = "mvc-client",
	ClientSecret = "secret",
	ResponseType = "code id_token",
	Scope = { "api1" },
	GetClaimsFromUserInfoEndpoint = true,
	SaveTokens = true,
	TokenValidationParameters = new TokenValidationParameters
	{
		NameClaimType = "name"
	}
});

It is up to you to create the UI you want in the Identityserver. The repository contains just a sample implementation for the UI.
The LoggedOutViewModel has a property ClientName so you can change the ClientId to that.

        Click <a class="btn btn-default"<EMAIL_ADDRESS>to return to the
<EMAIL_ADDRESS>application.

thanks for the reply @user1336. i do know we have full control on the UI we want for IDSRV.
i have been checking the code in the AccountService.BuildLoggedOutViewModel() method but it seems the LogoutRequest (logout context returned) does not have the ClientName property. So I still could not set the value of the ClientName property in the LoggedOutViewModel.
do correct me if i am wrong.

If only there were a way to map clientId to a client.... hmmmm!
https://github.com/IdentityServer/IdentityServer4.Samples/blob/release/Quickstarts/8_EntityFrameworkStorage/src/QuickstartIdentityServer/Quickstart/Account/AccountService.cs#L73

Yes, what @Mardoxx said.

thanks @Mardoxx @brockallen. I thought ClientName would be returned via the logoutcontext. no further questions from this issue.

Sorry to reopen it, I have the same question.  What is the solution now to show the Client Name in the UI.
LoggedOutViewModel is built from the LogoutMessage.
Why can't the LogoutMessasge have also the ClientName like this:

        public LogoutMessage(ValidatedEndSessionRequest request)
        {
            if (request != null)
            {
                Parameters = request.Raw;
                ClientId = request.Client?.ClientId;
                **ClientName= request.Client?.ClientName;**

LoggedOutViewModel will use the ClientName instead of ClientId:
           var vm = new LoggedOutViewModel
            {
                AutomaticRedirectAfterSignOut = AccountOptions.AutomaticRedirectAfterSignOut,
                PostLogoutRedirectUri = logout?.PostLogoutRedirectUri,
                **ClientName = logout?.ClientName**,
                SignOutIframeUrl = logout?.SignOutIFrameUrl,
                LogoutId = logoutId
            };

@kevinlo send a PR please.

@brockallen Ok.  If you feel that is the right way, I'll do it, but maybe next week.

@brockallen I just read about #231, you suggested to
inject the IClientStore into your controller, and then lookup the Client configuration (and thus the name) from the ClientId passed via the context.
That works for me.  I don't need to add the ClientName to the LogoutMessage unless you feel that is a better way.

Like I said, feel free to submit a PR if you think it helps improve the OSS code.

Just submit the pull request #1893


Increment version for hdinsight releases

Increment package version after release of com.azure.resourcemanager azure-resourcemanager-hdinsight

/azp run java - hdinsight - ci


Release 1.29

Should we add the issues which are the base of the changes under the "Development" tab?


Support resume download with data

Added a resume download case.
This is used when canceling a download and resuming at a later time.
Usually, when using background download, all requests are terminated when a user kills the App. It is possible however, to resume download. When a request is canceled, a task resume data is returned in the error's user info for NSURLSessionDownloadTaskResumeData. Using this data, we can resume the download when the App restarts.

Warnings

:warning:

Any changes to library code should be reflected in the Changelog.
Please consider adding a note there and adhere to the Changelog Guidelines.

:warning:
The library files were changed, but the tests remained unmodified. Consider updating or adding to the tests to match the library changes.

Messages

:book:
iOS: 	 Executed 282 tests, with 0 failures (0 unexpected) in 12.724 (12.945) seconds

:book:
tvOS: 	 Executed 282 tests, with 0 failures (0 unexpected) in 12.755 (12.927) seconds

:book:
macOS: 	 Executed 282 tests, with 0 failures (0 unexpected) in 15.798 (15.952) seconds

  Generated by :no_entry_sign: Danger Swift against 7f24207c0e38538cc807ad695964a123e67e85a1

Codecov Report

:exclamation: No coverage uploaded for pull request base (development@6f8ad92). Click here to learn what that means.
The diff coverage is 77.77%.

@@              Coverage Diff               @@
##             development    #1970   +/-   ##
==============================================
  Coverage               ?   92.63%
==============================================
  Files                  ?       26
  Lines                  ?      951
  Branches               ?        0
==============================================
  Hits                   ?      881
  Misses                 ?       70
  Partials               ?        0

Impacted Files
Coverage Δ

Sources/Moya/Endpoint.swift
95.45% <100%> (ø)

Sources/Moya/MoyaProvider+Internal.swift
97.72% <75%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6f8ad92...7f24207. Read the comment docs.

Thanks for taking time fo make a PR!
This sounds interesting. However if Moya were to support resuming downloads I think it would be great if we could go further by:

providing an easy way to retrieve the task resume data.
having a mechanism that automatically resumes those downloads. Maybe with #1924.

On a side note, if this update of Task is accepted, it would mean to make some updates to #1936.
Also, can you provide a test scenario or, even better, implementing this it in the example app?

I should add a test, sure. As for auto-resume, I would still leave some decisions for the user (when and where to store the resume data), but sure, it should come as a more complete package.

On a side note, if this update of Task is accepted, it would mean to make some updates to #1936.

@amaurydavid @bauermusic :)
In my opinion, we should wait on this one until #1936 gets in since there is a lot of work already there and adding this would require some changes.
But that's only an opinion, I think that's something for @sunshinejr or someone else from the core team.

Since the changes in this PR are minor (in quantity) and there's some more work to be done, let's wait for #1936.

Not sure how to write a proper test for it since it involves a download-cancel setup. The download stub should be big enough so that the request could be canceled before completion.
Basically, when canceling a download request, the data in the underlying error is a small file (not the actual download data), that the iOS system uses to resume the download.

Hey @bauermusic - first of all, thank you so much for taking the time to implement this one! This is something I was thinking about lately and I think this could be a valuable addition.
In terms of the implementation, I was thinking more about changing current Cacellable to something like Cancellable & Resumable. This way when you have a reference to the download (Cancellable & Resumable), you can resume it when needed. What do y'all think @bauermusic @LucianoPAlmeida @amaurydavid?
As for the test - yes it's not that simple. You can take a look how we check upload progress with OHHTTPSubs. Basically we use response time to make sure the task, even though it's stubbed, is still taking longer to check for progress callbacks.

Hi @sunshinejr,
The Cancellable & Resumable sounds really good. One thing to note, is that the 'resume data' is embedded in the response error. That means that if a user holds a pointer to the request, the same request will need to be updated.
Also, in the testing environment, it seems that a canceled request is not embedded with 'resume data', this is data created by the iOS system, so I'm not sure if it could be mocked.
There's another issue, not directly related, that I've not been able to figure out. When and App moves into the background, all active requests are canceled and are called back with canceled error. In background download however, I was expecting the same in willTerminate (by the user).
I was not able to 'catch' an active 'background' download before the App terminates. I had some code catching a canceled request and write the 'resume data' to disk, but it didn't run on termination. Also, manually canceling (in willTerminate) did not produce an error with resume data (completion block never got called).
What I was hoping for was: User download using 'background' configuration, kills the App, we then catch the error and write the resume data to disk, allowing the download to resume if needed.
I saw a few StackOverflow posts where the completion would be called back either before the App terminated or on the next run. For me, the completion never got called on termination.


Added long press gesture to add inline feedback

Just to give you an idea of how the workflow will look like:
https://user-images.githubusercontent.com/24537483/205370724-11c955b2-299a-4cbd-81ec-331563ce7f92.mp4

I think this is a sufficient first solution, that should satisfy both normal users and power users. In the future we could maybe think of using some apple pencil button or so...


Add @NullUnmarked on classes

This PR enables annotator to add @NullUnmarked annotations to suppress errors inside static initialization blocks.
It will also one last step to resolve any remaining errors after suppression injections by adding @NullUnmarked annotation on the enclosing class.

@lazaroclapp This is ready for another round of review. Thank you very much.


Walkie Talkies buffers but fails to playback

Hey there. I did build a raspberry pi powered WIFI-enabled voice messaging box:

Now the cool thing about the ESP32 is that it does not have to boot up as long as a Pi. So I wanted to try out your project.
I was testing your esp32_audio samples and I could play the sample.wav file and I could record some data into a i2s.raw file using the node server. I could not replay the recorded file but it had a bunch of hex-values in it. So the wiring should be correct.

I did setup two ESP32 with I2S Mems mic and DAC. They "see" each other both using ESPNow and WIFI but after buffering nothing happens.
My IP Address is: <IP_ADDRESS>
My MAC Address is: 7C:9E:BD:46:56:C0
Application started
Started ReceivingBuffering
Buffering
Buffering
Buffering
Buffering
Finished Receiving
Started transmitting
Finished transmitting
Started ReceivingFinished Receiving
Started transmitting
Finished transmitting
Started ReceivingBuffering
Buffering
Buffering

So I am currently at a loss on how to get this to work. Maybe you have an idea on how to debug my setup.
Kind regards and thanks for sharing your knowledge with the community!
Beat
Here's my repo with some minor changes:
https://github.com/besi/esp32-walkie-talkie

Did you manage to get this working?


[Refactoring]: Consider moving the state_management system to a app_storage.tab based system

✏ Problem Description
Currently, the project handles its state management through the state.py module. The advantage is that it is flexible, but the current implementation does not protect the state of the tab after a page refresh, which might lead to a worsened user experience, so I am suggesting considering the app_storage.tab dictionary of the NiceGUI Framework for the state management.
💡 Feature Request
Evaluate the necessity and advantages of app_storage.tab
🌍 Context
No response
🔍 Additional Information
No response
👍 Code of Conduct

[X] I agree to follow this project's Code of Conduct

The current implementation allows us to do multi-coupling of objects. It uses the observable dicts to notify multiple subscribers to the dictionary. Furthermore, it provides enums to keep track of the events and dicts. So a total deletion of the file is not the point of the discussion. The storage.tab is a simple dictionary so it will still need the enums that we use currently.

Currently, it does not make much sense to the new system as it will not bring much convenience. It might be later investigated further in case we want to create persistant user sessions.


track time a new user account was requested

Thinking about performance indicators, it would be nice to show an increase in validated users over time. Is there any information about when a user account was created or validated? If not, are there arguments against tracking this in the database?
I am not sure what your mechanism for validating a newly registered user is, I'd love to have a simple admin page with all registered but not validated accounts with a tickbox and one submit button which would than issue the validating action of all ticked users. I figure it would also be useful to sort this list according on registration date.

This will be great. I think also having a button to purge non-validated users (all or one by one) will be really useful - sometimes this happens when the user inputs their email incorrectly.
Anyway, FWIW, we normally track this information using the https://qiita.ucsd.edu/stats/ information; in summary: We have a nightly cron-job that updates the information in redis and inserts that version into SQL; then we can see how many new users, studies, samples, etc have been created in those dates.

If I read the SQL statement correctly, you simply count the number of rows of table qiita.qiita_user https://github.com/qiita-spots/qiita/blob/13eafdf1a2eb0c8b5d4019ad294b7490cd396139/qiita_db/util.py#L1265-L1268 regardless of users being verified or not?
Isn't redis an in memory DB? What if the machine fails? Do you have backups on disk or would you loose the user growth information? Would you mind if I add another column to qiita.qiita_user to log the date of user activation? Having this date should always provide means to reconstruct this growth. I am asking, because our consortium currently discusses performance indicators and number of user is one of the key candidates.

regardless of users being verified or not?:

That sound about right; fine to change to verified users if you think it's better.

Isn't redis an in memory DB?:

yes, it is.

What if the machine fails?:

We used it for two things: (1) errors/warnings/etc messages are not stored so these will be lost - which I still think is not a bit issue; and (2) user profiles for faster retrieval - this one is populated at the start

Would you mind if I add another column to qiita.qiita_user to log the date of user activation?:

Sounds great! Thanks

addressed by #3416 and #3417


Crash app in case search dapp

Describe the bug
Version test: v1.0.11(200)
Devices test: IP 11
To reproduce the bug
Steps:

Go to the Browser tab
Input search dapp and observe the displayed screen

Actual: Crash app

[ ] Duplicate field Provider