Fixed null reference

Was receiving the following error when trying to overwrite an existing table.
ReferenceError: options is not defined
    at DynamoRestore._checkTableExists (/Users/awolde/Repos/bowerman/node_modules/dynamo-backup-to-s3/lib/dynamo-restore.js:110:87)
    at Request.<anonymous> (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/request.js:358:18)
    at Request.callListeners (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/request.js:671:14)
    at Request.transition (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/request.js:673:12)
    at Request.callListeners (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
    at Request.emit (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/request.js:671:14)
    at Request.transition (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /Users/awolde/Repos/bowerman/node_modules/aws-sdk/lib/state_machine.js:26:10

Thanks @awolden! I just merged a separate PR that should fix this issue (published in version 0.6.1). Let me know if you are still having issues


SquiDB 2.0 release checklist

SquiDB 2.0 is nearing completion! This issue will track the final things we need to do before merging the changes into master and releasing new artifacts.

[x] Unit testing initiative: reduce "unused" method warnings by adding test cases to cover these methods #87
[x] Merge dev_2.0 branch into master #90
[x] Update wiki pages to reflect new apis/changes

[x] Add a "Updating to SquiDB 2.0" doc to the wiki
[x] Make sure the README on the front page links to that doc #93

[x] Bump version codes in all modules, deploy artifacts, tag in git #93

SquiDB 2.0 includes the following changes:

Unified DatabaseDao and AbstractDatabase into a single SquidDatabase API #67
Basic RxJava support #5, #77
Improved data changed notification mechanism #70
Support connecting to custom SQLite builds instead of stock Android SQLite #36, #74
Enhanced code generation plugin API #32, #83
Add SquidRecyclerAdapter for working with RecyclerView #41, #85
Other misc fixes and enhancements

SquiDB 2.0 artifacts are now available via jcenter!


add missing meta descriptions

Docs Build status updates of commit 39aa4cc:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/quantum-docs-pr, working directory: W:\so0o-s, target branch: master, target branch commit: d558c1af104c45b0f7703461777fb6a2e0152534, source commit: 39aa4ccb1343c232634c2475c6a525ed68b46653.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/install-guide/index.md
90
74
0
link
:white_check_mark:

articles/install-guide/update.md
85
62
0
link
:white_check_mark:

articles/libraries/chemistry/schema/broombridge.md
65
26
13
link
:white_check_mark:

articles/libraries/chemistry/schema/spec_v_0_1.md
82
66
13
link
:white_check_mark:

articles/libraries/chemistry/schema/spec_v_0_2.md
85
69
12
link
:white_check_mark:

articles/libraries/index.md
62
49
2
link
:white_check_mark:

articles/overview/how-to-learn-quantum-computing.md
84
75
1
link
:white_check_mark:

articles/overview/why-learn-quantum-computing.md
87
61
0
link
:white_check_mark:

articles/relnotes/0.3-migration.md
78
60
1
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/libraries/chemistry/schema/spec_v_0_1.md
82
66
13
link
:white_check_mark:

articles/libraries/chemistry/schema/spec_v_0_2.md
85
69
12
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Docs Build status updates of commit cb7ddcd:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/libraries/chemistry/schema/spec_v_0_1.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/libraries/chemistry/schema/spec_v_0_2.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Datasets - Datahub Certified - Mockups

Create mockups based on actions listed in #375
User Stories

As a user I want to know if the data is quality (ie up to date and I can keep rely on it, reliable - it’s been looked after, from an authoritative source so that

I know that it’s well structured and in the a format I can use
I can be secure in relying on it (The data is correct)
If I base my analysis on this I will get insight and my derived work is accurate and timely (and I don’t need to clean the data up)

As a user who wants to get datasets, I can rely on the data overall so I know I can depend on it overtime

Acceptance Criteria

[x] Mockups created
[x] Mockup selected

Tasks

[x] Mockups based on findings of #375
[x] Create mockups
[x] Review and feedback
[x] Finalize

https://invis.io/R6O4VVVYEA3 has been selected as a final one out of 10 mockups


remove print statement from library in compress_to_jpg

libraries should generally not print to stdout, i hope you can remove this line. thanks

Sorry for the late reply. I think so too. Thanks!


Spelling error corrected

Changes in this pull request
Issue fixed: #
Checklist

[ ] All tests pass. Demo project builds and runs.
[ ] I added tests, an experiment, or detailed why my change isn't tested.
[ ] I added an entry to the CHANGELOG.md for any breaking changes, enhancements, or bug fixes.
[ ] I have reviewed the contributing guide

Duplicate of #776

Thanks @sedusa ! 😄
Looks like @rustybailey made this change already in #776.
Let's go ahead and close this.

Thanks @sedusa! Going to close since its a dupe and we're importing the other one, but appreciate you helping out!


Cannot use Literal from standard library in 3.8

Bug

OS: macOS
Python version import sys; print(sys.version): 3.8.0
Pydantic version import pydantic; print(pydantic.VERSION): 1.1.1

Annotating models with the built-in literal in Python 3.8 in the absence of typing_extensions does not work because is_literal_type only checks if Literal is available from typing_extensions.  Please see the snippet below.
$ cat test.py
from typing import Literal
from pydantic import BaseModel

class Foo(BaseModel):
    bar: Literal['']

print('ok!')
$ python3 test.py
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    class Foo(BaseModel):
  File "/Users/layday/code/instawow/.venvs/3.8/lib/python3.8/site-packages/pydantic/main.py", line 192, in __new__
    fields[ann_name] = ModelField.infer(
  File "/Users/layday/code/instawow/.venvs/3.8/lib/python3.8/site-packages/pydantic/fields.py", line 260, in infer
    return cls(
  File "/Users/layday/code/instawow/.venvs/3.8/lib/python3.8/site-packages/pydantic/fields.py", line 237, in __init__
    self.prepare()
  File "/Users/layday/code/instawow/.venvs/3.8/lib/python3.8/site-packages/pydantic/fields.py", line 307, in prepare
    self._type_analysis()
  File "/Users/layday/code/instawow/.venvs/3.8/lib/python3.8/site-packages/pydantic/fields.py", line 359, in _type_analysis
    if issubclass(origin, Tuple):  # type: ignore
  File "/nix/store/mnl1njrv6g2jcs69kq0cy19766kcgc5n-python3-3.8.0/lib/python3.8/typing.py", line 771, in __subclasscheck__
    return issubclass(cls, self.__origin__)
TypeError: issubclass() arg 1 must be a class
$ pip3 install typing_extensions
Collecting typing_extensions
  Using cached https://files.pythonhosted.org/packages/03/92/705fe8aca27678e01bbdd7738173b8e7df0088a2202c80352f664630d638/typing_extensions-<IP_ADDRESS>-py3-none-any.whl
Installing collected packages: typing-extensions
Successfully installed typing-extensions-<IP_ADDRESS>
WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
$ python3 test.py
ok!

Thanks for reporting. PR welcome.

Came across the same problem today.

Came across the same problem today with Python 3.8.10.
What's strange is that the problem is not soly about pydantic, but some upgraded package caused a different bahavior for it.
I will dig more about it later.

Can confirm that moving to 1.10.8 fixed this issue for me on 3.9.4


Docs refer to "compiled flexbox variation" of CSS on download page that doesn't yet exist

Getting Started > Flexbox notes that: "Alternatively, if you don’t need the source Sass files, you may swap the default Bootstrap compiled CSS with the compiled flexbox variation. Head to the download page for more information."
Currently, neither the download page or the Bootstrap CDN info on the front page link to the compiled flexbox variation.
This would be handy to have, assuming that the flexbox variation of the Bootstrap CSS is in as good shape as the non-flexbox variation.

X-Ref: #18568

This issue is fixed already by mdo in v4-dev

"Custom builds" are in the dist folder now, as well as the ZIP we attach to our releases. Docs update to fix the copy coming in #20878.


cartridge_headers: Add all cartridge headers

All the cartridge header implementations have been added to the cartridge_headers.rs file. (#17)
Keep in mind:
1. BIOS must be able to overwrite the boot_mode header, as defined in the extract_boot_mode function comments;
2. BIOS must be able to overwrite the slave_id_number header, as defined in the extract_slave_id_number function comments;
3. If the GBA has been booted by using Joybus transfer mode, we have to put our initialization procedure directly at joybus_mode_entry_point address, or redirect to the actual boot procedure by depositing a "B " opcode in the space used by joybus_mode_entry_point.

For the next few time I'll do a single commit for a issue :)

Let's remove these commit using amend or interactive rebase for keep polish and seems good

I have not made this commit --> Merge branch 'RIP-Comm:main' into dev
It was the first time I used interactive rebase to remove some commits.
A constructive question, can I use the amend command to delete commits?
Is everything alright now?

It was the first time I used interactive rebase to remove some commits. A constructive question, can I use the amend command to delete commits?
Is everything alright now?

Right now you should remove latest commit (coming from main branch) and keep only your commits, after this I think with a simple git rebase main you should able to keep only the relevant commits

Can you help me to do this now?
I don't want to make mistakes :')

Will Gallottino take care of doing the merge?

Will Gallottino take care of doing the merge?

CI is not passing, then we can't merge

I didn't touch the verify_checksum function but the error is here:.
match checksum == checksum_expected {
        true => Ok(()),
        false => Err(()), <==
    }


Race condition on startup

This happens occasionally when loading the page soon after starting the server. Running 2.0.10 (was also in 2.0.9).
TypeError: Cannot read property 'authenticateApiRequest' of undefined
    at Object.module.exports [as getUser] (/path/to/project/node_modules/express-stormpath/lib/helpers/get-user.js:186:16)
    at /path/to/project/node_modules/express-stormpath/lib/stormpath.js:80:17
    at /path/to/project/node_modules/async/lib/async.js:689:13
    at iterate (/path/to/project/node_modules/async/lib/async.js:265:13)
    at async.forEachOfSeries.async.eachOfSeries (/path/to/project/node_modules/async/lib/async.js:284:9)
    at _parallel (/path/to/project/node_modules/async/lib/async.js:688:9)
    at Object.async.series (/path/to/project/node_modules/async/lib/async.js:710:9)
    at stormpathMiddleware (/path/to/project/node_modules/express-stormpath/lib/stormpath.js:78:11)
    at Layer.handle [as handle_request] (/path/to/project/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/path/to/project/node_modules/express/lib/router/index.js:312:13)

I do not know if it is the right way to fix the problem, but I get rid of this error after waiting for the stormpath.ready event before the app.listen(...):
app.on('stormpath.ready', function () {
    app.listen(process.env.PORT);
});

Thanks for reporting it! I'm working on a fix for this.

This should be fixed in PR #122.

can this be closed?

Hi @baer , this should be resolved now.  Please let us know if something is amiss.

Hi, I have an app hosted on heroku that initially loads with the same error as above, but then is fixed after a refresh. Is there a way to add the stormpath.ready method on an app created through the express-generator? If I add the callback -
app.on('stormpath.ready', function () {
   app.listen(process.env.PORT);
});

It gives me an error on Heroku deploy. Thank you.

Hi @aledotgomez , can you show us the error that you are getting?  I'd also like to know which generator you are using?  My guess is that something inside of the generated code is trying to call app.listen() for you, which interferes with the one that you are trying to add.  Thanks!

The generator I'm using is express-generator.
I'm guessing that listening to the port from the Heroku environment is irrelevant, but I don't know what to start the stormpath method on.
The error trace from heroku logs is the following:
015-12-17T17:24:08.079058+00:00 app[web.1]: npm ERR!     /app/npm-debug.log
2015-12-17T17:24:08.023538+00:00 app[web.1]: events.js:141
2015-12-17T17:24:08.023706+00:00 app[web.1]:       ^
2015-12-17T17:24:08.023670+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2015-12-17T17:24:08.023717+00:00 app[web.1]:
2015-12-17T17:24:08.023731+00:00 app[web.1]: Error: listen EADDRINUSE :::38560
2015-12-17T17:24:08.023732+00:00 app[web.1]:     at Object.exports._errnoException (util.js:856:11)
2015-12-17T17:24:08.023734+00:00 app[web.1]:     at Server._listen2 (net.js:1234:14)
2015-12-17T17:24:08.023733+00:00 app[web.1]:     at exports._exceptionWithHostPort (util.js:879:20)
2015-12-17T17:24:08.023736+00:00 app[web.1]:     at Server.listen (net.js:1366:5)
2015-12-17T17:24:08.023737+00:00 app[web.1]:     at EventEmitter.listen (/app/node_modules/express/lib/application.js:617:24)
2015-12-17T17:24:08.023735+00:00 app[web.1]:     at listen (net.js:1270:10)
2015-12-17T17:24:08.023738+00:00 app[web.1]:     at EventEmitter.<anonymous> (/app/app.js:93:9)
2015-12-17T17:24:08.023738+00:00 app[web.1]:     at emitNone (events.js:67:13)
2015-12-17T17:24:08.023742+00:00 app[web.1]:     at Object.wrapGetResourceResponse [as _wrapGetResourceResponse] (/app/node_modules/express-stormpath/node_modules/stormpath/lib/ds/DataStore.js:89:12)
2015-12-17T17:24:08.023739+00:00 app[web.1]:     at EventEmitter.emit (events.js:166:7)
2015-12-17T17:24:08.023740+00:00 app[web.1]:     at /app/node_modules/express-stormpath/lib/stormpath.js:214:11
2015-12-17T17:24:08.023743+00:00 app[web.1]:     at onGetResourceRequestResult (/app/node_modules/express-stormpath/node_modules/stormpath/lib/ds/DataStore.js:278:13)
2015-12-17T17:24:08.023744+00:00 app[web.1]:     at Request.onRequestResult [as _callback] (/app/node_modules/express-stormpath/node_modules/stormpath/lib/ds/RequestExecutor.js:110:7)
2015-12-17T17:24:08.023745+00:00 app[web.1]:     at Request.self.callback (/app/node_modules/express-stormpath/node_modules/request/request.js:198:22)
2015-12-17T17:24:08.023746+00:00 app[web.1]:     at emitTwo (events.js:87:13)
2015-12-17T17:24:08.023746+00:00 app[web.1]:     at Request.emit (events.js:172:7)
2015-12-17T17:24:08.023750+00:00 app[web.1]:     at emitNone (events.js:72:20)
2015-12-17T17:24:08.023748+00:00 app[web.1]:     at Request.emit (events.js:169:7)
2015-12-17T17:24:08.023748+00:00 app[web.1]:     at emitOne (events.js:82:20)
2015-12-17T17:24:08.023747+00:00 app[web.1]:     at Request.<anonymous> (/app/node_modules/express-stormpath/node_modules/request/request.js:1035:10)
2015-12-17T17:24:08.069569+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2015-12-17T17:24:08.023749+00:00 app[web.1]:     at IncomingMessage.<anonymous> (/app/node_modules/express-stormpath/node_modules/request/request.js:962:12)
2015-12-17T17:24:08.023760+00:00 app[web.1]:     at IncomingMessage.emit (events.js:166:7)
2015-12-17T17:24:08.069736+00:00 app[web.1]: npm ERR! node v5.1.1
2015-12-17T17:24:08.070756+00:00 app[web.1]: npm ERR! code ELIFECYCLE

Thanks again for your help.

Heyo, the issue is not a Stormpath issue -- what's happening is that your application is not listening on the correct port. Heroku requires you to listen on a port that is randomly defined in the PORT environment variable.
For instance:
app.listen(process.env.PORT);

express-generator doesn't do this by default.

@rdegges the boilerplate from the generator does do that by default:
https://github.com/expressjs/generator/blob/b313f3ba2779b9935212d204c3066be83a3aeab9/templates/js/www#L15
@aledotgomez can you search your code to ensure that you don't have multiple calls to app.listen or server.listen ?  Thanks!

hey @robertjd there is no other  app,listen or server.listen calls in my code. I'm thinking of going into the express module and placing the following call:
app.on('stormpath.ready', function () {
    app.listen(process.env.PORT);
});

where the app object is initialized. Any alternatives from changing the module directly?  Thanks. @rdegges  @robertjd

@robertjd I've just gone through the tutorial listed here:
https://stormpath.com/blog/angular-node-15-minutes/
And received the same error.  Changing the express startup line to:
app.on('stormpath.ready', startServer);
As mentioned in the bug report fixes the issue.  The version of express-stormpath I am using express-stormpath 2.3.5.

Using the keystone.js framework and it seems like i doesn't let you do custom code for app.listen (or at least I didn't manage to find it).
Suggestions on how to get this working without this race issue? (Putting all of keystone.start() in stormpath.ready event seems to break deployment on heroku). Have spent some hours now pulling both libraries apart to see if it can be interwoven but to no success.
Worked fine with express-stormpath 1.x.
Advice welcome.

Can confirm. I'm seeing the same issue with epxress-generator, express-stormpath hosting on heroku


Unexpected character encountered when using Selenium

Describe the bug
When Selenium is used, the script seems to apruptly abort immediately as soon as driver.Quit() is called. Even any console output after the initialization of the IWebDriver is not shown at all.
To Reproduce
Use the following script:
#r "nuget:Selenium.WebDriver.ChromeDriver/97.0.4692.7100"
#r "nuget:Selenium.WebDriver/4.1.0"

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

Console.WriteLine("Test1");
IWebDriver driver = new ChromeDriver();
Console.WriteLine("Test2");
driver.Quit();
Console.WriteLine("Test3");

Expected behavior
The three messages are written to the console and the script is finishing.
Observed behavior
Only the first message is printed and then the exception Unexpected character encountered while parsing value: S. Path '', line 0, position 0. occurs and the script is stopped.
Version

OS: Windows 10, Windows 11
Build (or commit ID if built from source): Release 15.1
Framework: .NET Core 6.0.100, same with .NET Framework x64 or .NET Core 3

I tested the script with the release 15.1 and I also have the error with the following version of ChromeDriver:
#r "nuget:Selenium.WebDriver.ChromeDriver/100.0.4896.6000"
However, the three messages are written to the console and the script is finishing on the last commit f1fffd3 :

Therefore, the problem should be solved on the next release.

Closing as it is indeed working now


unable to complie wallet adapter

Hi,
I'm trying to mess around with wallet adapter following the instructions from Readme.
I installed the packages with yarn.
My webpack versions are:
webpack: 5.73.0
webpack-dev-server 4.9.2
While trying to compile the setup snippet the following errors occur:
Compiled with problems:
ERROR in<EMAIL_ADDRESS>9:17-34
Module not found: Error: Can't resolve 'crypto' in '/home/yury/Desktop/SolanaProjects/stakan-react-ts/node_modules/@toruslabs/eccrypto'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
ERROR in ./node_modules/cipher-base/index.js 3:16-43
Module not found: Error: Can't resolve 'stream' in '/home/yury/Desktop/SolanaProjects/stakan-react-ts/node_modules/cipher-base'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "stream": require.resolve("stream-browserify") }'
- install 'stream-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "stream": false }

I found a solution on
https://github.com/solana-labs/wallet-adapter/tree/master/packages/starter/create-react-app-starter
I needed to add this line
crypto: require.resolve("crypto-browserify")
to config-overrides.js
in order to be able to compile the project on my machine.
Thanks !


More efficient password hashing check?

You may have a reason such as purposely making it less-efficient as your comment in the function mentions not optimizing the loop, but I presume that is not for the same reason.
https://github.com/aspnet/Identity/blob/8cbda5a23dd594116fcd2f60c486d15fa50051af/src/Microsoft.Extensions.Identity.Core/PasswordHasher.cs#L81
Should
for (var i = 0; i < a.Length; i++)
{
    areSame &= (a[i] == b[i]);
}

return areSame;

Not be better as:
for (var i = 0; i < a.Length; i++)
{
    if (a[i] != b[i])
        return false;
}

return true;

So that the loop returns as soon as there is any mismatch, instead of running the whole array blindly?

Ah yeah, makes sense. Thanks for the link


Redirect loop after auth during download

This is possibly more of a question than an issue per se; but when running this from within Bamboo (CI) I'm getting some weird problem on redirects after auth from BitBucket.
I'm trying to pull a binary that is stored within Bitbucket Cloud's Downloads storage area (analogous to GitHub's LFS I guess).
build	17-Aug-2017 17:23:19	17:23:19.512 [DEBUG] [org.apache.http.client.protocol.RequestAddCookies] CookieSpec selected: default
build	17-Aug-2017 17:23:19	17:23:19.513 [DEBUG] [org.apache.http.client.protocol.RequestAuthCache] Re-using cached 'basic' auth scheme for https://bitbucket.org:443
build	17-Aug-2017 17:23:19	17:23:19.515 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection request: [route: {s}->https://bitbucket.org:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]
build	17-Aug-2017 17:23:19	17:23:19.516 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection leased: [id: 27][route: {s}->https://bitbucket.org:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]
build	17-Aug-2017 17:23:19	17:23:19.516 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Opening connection {s}->https://bitbucket.org:443
build	17-Aug-2017 17:23:19	17:23:19.517 [DEBUG] [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator] Connecting to bitbucket.org/<IP_ADDRESS>:443
build	17-Aug-2017 17:23:19	17:23:19.517 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Connecting socket to bitbucket.org/<IP_ADDRESS>:443 with timeout 0
build	17-Aug-2017 17:23:19	17:23:19.957 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Enabled protocols: [TLSv1, TLSv1.1, TLSv1.2]
build	17-Aug-2017 17:23:19	17:23:19.957 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Enabled cipher suites:[TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
build	17-Aug-2017 17:23:19	17:23:19.957 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Starting handshake
build	17-Aug-2017 17:23:20	17:23:20.570 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Secure session established
build	17-Aug-2017 17:23:20	17:23:20.571 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory]  negotiated protocol: TLSv1.2
build	17-Aug-2017 17:23:20	17:23:20.571 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory]  negotiated cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
build	17-Aug-2017 17:23:20	17:23:20.575 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory]  peer principal: CN=bitbucket.org, O="Atlassian, Inc.", L=San Francisco, ST=CA, C=US, OID.<IP_ADDRESS>=94103, STREET=1098 Harrison Street, SERIALNUMBER=3928449, OID.<IP_ADDRESS>.4.1.3<IP_ADDRESS>.2=Delaware, OID.<IP_ADDRESS>.4.1.3<IP_ADDRESS>.3=US, OID.<IP_ADDRESS>=Private Organization
build	17-Aug-2017 17:23:20	17:23:20.575 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory]  peer alternative names: [bitbucket.org, www.bitbucket.org]
build	17-Aug-2017 17:23:20	17:23:20.575 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory]  issuer principal: CN=DigiCert SHA2 Extended Validation Server CA, OU=www.digicert.com, O=DigiCert Inc, C=US
build	17-Aug-2017 17:23:20	17:23:20.580 [DEBUG] [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator] Connection established <IP_ADDRESS>:55005<-><IP_ADDRESS>:443
build	17-Aug-2017 17:23:20	17:23:20.580 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Executing request GET /group/project/download.zip HTTP/1.1
build	17-Aug-2017 17:23:20	17:23:20.581 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Target auth state: CHALLENGED
build	17-Aug-2017 17:23:20	17:23:20.581 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Proxy auth state: UNCHALLENGED
build	17-Aug-2017 17:23:20	17:23:20.636 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total:<PHONE_NUMBER>4, Free:<PHONE_NUMBER>}
build	17-Aug-2017 17:23:20	17:23:20.636 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total:<PHONE_NUMBER>4, Free:<PHONE_NUMBER>}
build	17-Aug-2017 17:23:20	17:23:20.636 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 954728448, Committed: 544735232}
build	17-Aug-2017 17:23:21	17:23:21.084 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Connection can be kept alive indefinitely
build	17-Aug-2017 17:23:21	17:23:21.084 [DEBUG] [org.apache.http.impl.auth.HttpAuthenticator] Authentication succeeded
build	17-Aug-2017 17:23:21	17:23:21.085 [DEBUG] [org.apache.http.impl.client.DefaultRedirectStrategy] Redirect requested to location '/account/signin/?next=/group/project/download.zip'
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.execchain.RedirectExec] Resetting target auth state
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.execchain.RedirectExec] Redirecting to 'https://bitbucket.org/account/signin/?next=/group/project/download.zip' via {s}->https://bitbucket.org:443
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection [id: 27][route: {s}->https://bitbucket.org:443] can be kept alive indefinitely
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection released: [id: 27][route: {s}->https://bitbucket.org:443][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 20]
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.client.protocol.RequestAddCookies] CookieSpec selected: default
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.client.protocol.RequestAuthCache] Re-using cached 'basic' auth scheme for https://bitbucket.org:443
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection request: [route: {s}->https://bitbucket.org:443][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 20]
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection leased: [id: 27][route: {s}->https://bitbucket.org:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Executing request GET /account/signin/?next=/group/project/download.zip HTTP/1.1
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Target auth state: CHALLENGED
build	17-Aug-2017 17:23:21	17:23:21.086 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Proxy auth state: UNCHALLENGED
build	17-Aug-2017 17:23:21	17:23:21.396 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Connection can be kept alive indefinitely
build	17-Aug-2017 17:23:21	17:23:21.397 [DEBUG] [org.apache.http.impl.auth.HttpAuthenticator] Authentication succeeded
build	17-Aug-2017 17:23:21	17:23:21.397 [DEBUG] [org.apache.http.impl.client.DefaultRedirectStrategy] Redirect requested to location '/account/signin/?next=/account/signin/%3Fnext%3D/group/project/download.zip'
build	17-Aug-2017 17:23:21	17:23:21.397 [DEBUG] [org.apache.http.impl.execchain.RedirectExec] Resetting target auth state
build	17-Aug-2017 17:23:21	17:23:21.398 [DEBUG] [org.apache.http.impl.execchain.RedirectExec] Redirecting to 'https://bitbucket.org/account/signin/?next=/account/signin/%3Fnext%3D/group/project/download.zip' via {s}->https://bitbucket.org:443
build	17-Aug-2017 17:23:21	17:23:21.398 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection [id: 27][route: {s}->https://bitbucket.org:443] can be kept alive indefinitely
build	17-Aug-2017 17:23:21	17:23:21.398 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection released: [id: 27][route: {s}->https://bitbucket.org:443][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 20]
build	17-Aug-2017 17:23:21	17:23:21.399 [DEBUG] [org.apache.http.client.protocol.RequestAddCookies] CookieSpec selected: default
build	17-Aug-2017 17:23:21	17:23:21.399 [DEBUG] [org.apache.http.client.protocol.RequestAuthCache] Re-using cached 'basic' auth scheme for https://bitbucket.org:443
build	17-Aug-2017 17:23:21	17:23:21.399 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection request: [route: {s}->https://bitbucket.org:443][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 20]
build	17-Aug-2017 17:23:21	17:23:21.399 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection leased: [id: 27][route: {s}->https://bitbucket.org:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]
build	17-Aug-2017 17:23:21	17:23:21.400 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Executing request GET /account/signin/?next=/account/signin/%3Fnext%3D/group/project/download.zip HTTP/1.1
build	17-Aug-2017 17:23:21	17:23:21.400 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Target auth state: CHALLENGED
build	17-Aug-2017 17:23:21	17:23:21.400 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Proxy auth state: UNCHALLENGED
build	17-Aug-2017 17:23:21	17:23:21.701 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Connection can be kept alive indefinitely
build	17-Aug-2017 17:23:21	17:23:21.701 [DEBUG] [org.apache.http.impl.auth.HttpAuthenticator] Authentication succeeded
build	17-Aug-2017 17:23:21	17:23:21.701 [DEBUG] [org.apache.http.impl.client.DefaultRedirectStrategy] Redirect requested to location '/account/signin/?next=/account/signin/%3Fnext%3D/account/signin/%253Fnext%253D/group/project/download.zip'

As you can see, the redirects seem to be going through some kind of URL re-encoding madness and not working correctly after authentication.
It works fine when running outside Bamboo directly through Gradle Wrapper on the command line, so not sure what might be going on here. Any ideas or suggestions for debugging appreciated.
Gradle version: 4.1.0
JDK: 1.8.0_144

This appears to have been my bad; the authentication was actually failing due to me not passing through variables for the user/pass correctly; despite looking like it was succeeding from the above log.


Make QCEngine tolerant of cpuinfo failure to populate brand_raw, brand

Description

Currently, we observe frequent failure of cpuinfo to give brand information when used within Docker containers on Pacific Research Platform. It is unclear why, but making QCEngine tolerant of this information being missing would help in production usage.
Changelog description

QCEngine calls now tolerant of missing brand_raw or brand info from py-cpuinfo.
Status

[x] Code base linted
[x] Ready to go

Thanks @WardLT for the review! I've made the changes you requested. Let me know if there's anything else I can do to move this forward!

Looks like the remaining CI errors may be unrelated to the changes in this PR. @loriab is this consistent with your view?

Agreed, if you make this change https://github.com/MolSSI/QCEngine/pull/338/files#diff-d66842b418a1c03f41438563803c987c9defd1811ea0af131e285ba540c8c0d6R208, it'll fix it. May as well get that PR approved and merged, actually. With that change and this, can do a new minor release instead of just the patch. It'll help qcng versions catch up to qcel, anyways.

Thanks @loriab! I'll review and merge #338, then pull that in to this PR today. Definitely appreciate getting a minor release out; will be a huge help for us in prod use!

I just realized that I had the power to make that change, so I did so.
I'll merge after we merge #338, just to be careful about merging with passing tests and such

Thank you @WardLT! #338 is now merged, and I've merged master here to get those changes. Waiting on the tests now.


Snap grab rotations to cube normals

As discussed in PR #31, specifically this implements "step 1" from this comment.
All grabbed objects are now rotated towards the player according to the closest cube normal facing the player. The calculations with the surface normals are done only once per grab, after this the relative rotation is preserved. Right now, the normal snapping is done in playerSetGrabbing(..) which is a bit bulky, but this will change with the planned future refactorings. Per frame the impact is only one additional quaternion multiplication in playerUpdateGrabbedObject(..).
Related refactorings:

Added playerPortalGrabRotate(..) in addition to playerPortalGrabTransform(..), since a point transformation is not always needed.
Similarly, added collisionSceneGetPortalRotation(..) to collision_scene which is a lot simpler to compute. Only utilized in playerPortalGrabRotate(..) so far.
playerGetMoveBasis(..) now takes a Quaternion instead of a Transform struct as first parameter, since only the rotation was used in the first place. Calls where we just want to calc the forward-facing dir vector relative to a given rotation are now simpler (e.g. in playerThrowObject(..)).

I noticed object rotation will not be "cancelled out" as before, if the object-space upwards direction of an object was rotated in world-space before the grab. This would've been consistent with my former goal of source-like behavior but isn't helpful here.
I'll have to update playerSetGrabbing(..) accordingly.

The cube normal snapping is now reworked to snap the closest normal towards the player while also considering the object's relative upward direction. This way, the grabRotation should now work just the like the previous implementation minus the superfluous rotations.
While searching for bugs and cornercases, I've found #52, which is unfortunately unrelated to the rotation here and instead a bug of the grabPoint transform introduced in #35.

I noticed object rotation will not be "cancelled out" as before, if the object-space upwards direction of an object was rotated in world-space before the grab. This would've been consistent with my former goal of source-like behavior but isn't helpful here.

Can you explain this issue a bit more? Through looking at your changes and trying it out before/after the follow-on fix I was unable to reproduce what I thought you were talking about.

Can you explain this issue a bit more? Through looking at your changes and trying it out before/after the follow-on fix I was unable to reproduce what I thought you were talking about. So I think I'm misunderstanding.

Just grab a cube that has been rotated around its Y axis. E.g. when throwing a cube in the air against a wall so that the planes of its top/bottom sides won't be parallel to the floor anymore. Grabbing it in this state caused weird behavior before the fix.

Thanks. Your comment about Source-like behavior makes more sense now too. Good catch!

Thank you for this. It is a noticeable improvement to how the game feels.


Fallback subtensor

Adds fallback endpoints to bittensor.subtensor allowing the user to pass a list of fallback endpoints in the event that the default fails.
btcli overview --subtensor.chain_endpoint badendpoint --subtensor.fallback_endpoints AtreusLB-2c6154f73e6429a9.elb.us-east-2.amazonaws.com:9944 --no_prompt --logging.debug

Would it make sense to have the Atreus load balancer a default fallback and allow folks to also specify their own fallbacks?

I think this requires changes on all the endpoint tests here.

Would it make sense to have the Atreus load balancer a default fallback and allow folks to also specify their own fallbacks?

@shibshib @unconst
+1 to this, I think we should have that as default in order to have a friendly update of the bittensor nodes. That's an important point to care about.

@eduardogr changes are added

After the discussion we had, I'm approving this @unconst , just fix the unit tests

you have no idea how much of a mess this simple PR has caused in our tests


Crosshair line not visible when priceScale position set to none

Lightweight Charts Version: 1.2.1
Steps/code to reproduce:
var chart = LightweightCharts.createChart(document.body, {
    priceScale: {
        position: "none"
    }
};

Actual behavior:
Crosshair should be still visible, or at least vertical crosshair line
Expected behavior:
Crosshair not visible at all
CodeSandbox/JSFiddle/etc link:
Pricescale position none
https://jsfiddle.net/SuperPenguin/dxh012qb/3/
Compared to same code but Pricescale position right
https://jsfiddle.net/SuperPenguin/j24508sr/

or at least vertical crosshair line

Agree.

Quite possible that the issue is somewhere here (I'm not sure about exactly that place, but at least it should be crosshair.ts).


Image.network not rendering MJPEG image on mobile, whereas the same works on web but only on dev channel

I use the Image.network Widget to show a MJPEG image. It can work normal on web platform, but can't work on Android platform.
This is my code:
Image.network(
  "http://<IP_ADDRESS>/stream?resolution=480p&bitrate=2000&fps=20",
  fit: BoxFit.contain,
  errorBuilder: (context, error, stackTrace) {
    print("----------- Error: $error");
    return Text("ERROR", style: TextStyle(color: Colors.red));
  },
  loadingBuilder: (context, child, loadingProgress) {
    print("----------- Loading: ${loadingProgress?.cumulativeBytesLoaded}/${loadingProgress?.expectedTotalBytes}");
    return child;
  },
  frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
    print("----------- frame: $frame, $wasSynchronouslyLoaded");
    return child;
  }
)

The log for web platform: (It can play mjpeg stream.)
For a more detailed help message, press "h". To quit, press "q".
----------- frame: null, false
----------- Loading: null/null
----------- frame: null, false
----------- Loading: 0/100
----------- frame: 0, false
----------- Loading: null/null

The log for Android platform: (It doesn't show anything.)

The problem seems to be with the expectedTotalBytes attribute.

flutter doctor -v :
[√] Flutter (Channel dev, 1.26.0-1.0.pre, on Microsoft Windows [Version 10.0.18363.1256], locale zh-CN)
    • Flutter version 1.26.0-1.0.pre at D:\SDK\Flutter\stable
    • Framework revision 63062a6443 (4 weeks ago), 2020-12-13 23:19:13 +0800
    • Engine revision 4797b06652
    • Dart version 2.12.0 (build 2.12.0-141.0.dev)
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at D:/SDK/Android
    • Platform android-30, build-tools 30.0.0
    • ANDROID_HOME = D:\SDK\Android
    • ANDROID_SDK_ROOT = D:\SDK\Android
    • Java binary at: C:\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.6.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.6.30225.117
    • Windows 10 SDK version 10.0.18362.0

[√] Android Studio (version 4.0)
    • Android Studio at C:\Android\Android Studio
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] VS Code (version 1.52.1)
    • VS Code at C:\Users\YowFu\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.15.0

[√] Connected device (4 available)
    • YAL AL50 (mobile) • WQCDU19924006723 • android-arm64  • Android 10 (API 29)
    • Windows (desktop) • windows          • windows-x64    • Microsoft Windows [Version 10.0.18363.1256]
    • Chrome (web)      • chrome           • web-javascript • Google Chrome 86.0.4240.111
    • Edge (web)        • edge             • web-javascript • Microsoft Edge 87.0.664.66

• No issues found!

flutter doctor -v :
[√] Flutter (Channel dev, 1.26.0-1.0.pre, on Microsoft Windows [Version 10.0.18363.1256], locale zh-CN)
    • Flutter version 1.26.0-1.0.pre at D:\SDK\Flutter\stable
    • Framework revision 63062a6443 (4 weeks ago), 2020-12-13 23:19:13 +0800
    • Engine revision 4797b06652
    • Dart version 2.12.0 (build 2.12.0-141.0.dev)
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at D:/SDK/Android
    • Platform android-30, build-tools 30.0.0
    • ANDROID_HOME = D:\SDK\Android
    • ANDROID_SDK_ROOT = D:\SDK\Android
    • Java binary at: C:\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.6.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.6.30225.117
    • Windows 10 SDK version 10.0.18362.0

[√] Android Studio (version 4.0)
    • Android Studio at C:\Android\Android Studio
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] VS Code (version 1.52.1)
    • VS Code at C:\Users\YowFu\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.15.0

[√] Connected device (4 available)
    • YAL AL50 (mobile) • WQCDU19924006723 • android-arm64  • Android 10 (API 29)
    • Windows (desktop) • windows          • windows-x64    • Microsoft Windows [Version 10.0.18363.1256]
    • Chrome (web)      • chrome           • web-javascript • Google Chrome 86.0.4240.111
    • Edge (web)        • edge             • web-javascript • Microsoft Edge 87.0.664.66

• No issues found!

@YowFung
Where exactly are you loading the image with .mjpeg format ? I tried to access the http url in your code, but it isn't opening for me. Can you provide a complete minimal reproducible code sample that we can directly copy paste and run to see the issue ?

@YowFung
Where exactly are you loading the image with .mjpeg format ? I tried to access the http url in your code, but it isn't opening for me. Can you provide a complete minimal reproducible code sample that we can directly copy paste and run to see the issue ?

@darshankawar
The URL in the code above is my local link. It is actually an MJPEG stream, you can simulate an MJPEG stream with the following Node.js code for testing:
const PORT = 8001
const ipAddr = '<IP_ADDRESS>'
const boundary = 'gc0p4Jq0M2Yt08jU534c0p'
const http = require('http')
const fs = require('fs')
const url = require('url')
const Readable = require('stream').Readable
class MockStream extends Readable {
	constructor(...arg) {
		super(...arg);
		// this.count = 0;
	}
	async _read() {
		const that = this;
		var stream = fs.createReadStream( that.count % 2 === 0 ? 'photo1.jpg' : 'photo2.jpg' );		// Change to your actual file name.
        var responseData = [];
        if (stream) {//判断状态
            stream.on( 'data', function( chunk ) {
              responseData.push( chunk );
            });
            stream.on( 'end', function() {
               	const buffer = Buffer.concat([
      			new Buffer(`--${boundary}\r\n`),
      			new Buffer("Content-Type: image/jpeg\r\n"),
      			new Buffer(`Content-Length: ${responseData.length}\r\n\r\n`),
      			Buffer.concat(responseData)
    			]);
		    	setTimeout(() => {
		    		// console.log(that.count++)
		      		that.push(buffer);
		    	}, 1000);
	        });
	    }
	}
}
http.createServer(function(req, res){
	 res.setHeader("Access-Control-Allow-Origin", "*");
	 res.setHeader("connection", "close");
	 res.writeHead(200, {
      "Content-Type": `multipart/x-mixed-replace; boundary="${boundary}"`
    });
    const stream = new MockStream();
    stream.pipe(res);
}).listen(PORT, ipAddr)
console.log(`Server running at http://${ipAddr}:${PORT}/`);

Here is the complete Flutter code:
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Image.network Test',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flutter Image.network Test')),
      body: Center(
        child: Container(
          color: Colors.black.withOpacity(0.6),
          width: 480,
          height: 320,
          alignment: Alignment.center,
          child: Image.network(
            // "http://<IP_ADDRESS>/stream?resolution=480p&bitrate=2000&fps=20",
            "http://<IP_ADDRESS>:8001",
            fit: BoxFit.contain,
            // color: Colors.black,
            // excludeFromSemantics: true,
            // gaplessPlayback: true,
            errorBuilder: (context, error, stackTrace) {
              print("----------- Error: $error");
              return Text("ERROR", style: TextStyle(color: Colors.red));
            },
            loadingBuilder: (context, child, loadingProgress) {
              print("----------- Loading: ${loadingProgress?.cumulativeBytesLoaded}/${loadingProgress?.expectedTotalBytes}");
              return child;
            },
            frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
              print("----------- frame: $frame, $wasSynchronouslyLoaded");
              return child;
            },
          ),
        )
      )
    );
  }
}

@darshankawar
The URL in the code above is my local link. It is actually an MJPEG stream, you can simulate an MJPEG stream with the following Node.js code for testing:
const PORT = 8001
const ipAddr = '<IP_ADDRESS>'
const boundary = 'gc0p4Jq0M2Yt08jU534c0p'
const http = require('http')
const fs = require('fs')
const url = require('url')
const Readable = require('stream').Readable
class MockStream extends Readable {
	constructor(...arg) {
		super(...arg);
		// this.count = 0;
	}
	async _read() {
		const that = this;
		var stream = fs.createReadStream( that.count % 2 === 0 ? 'photo1.jpg' : 'photo2.jpg' );		// Change to your actual file name.
        var responseData = [];
        if (stream) {//判断状态
            stream.on( 'data', function( chunk ) {
              responseData.push( chunk );
            });
            stream.on( 'end', function() {
               	const buffer = Buffer.concat([
      			new Buffer(`--${boundary}\r\n`),
      			new Buffer("Content-Type: image/jpeg\r\n"),
      			new Buffer(`Content-Length: ${responseData.length}\r\n\r\n`),
      			Buffer.concat(responseData)
    			]);
		    	setTimeout(() => {
		    		// console.log(that.count++)
		      		that.push(buffer);
		    	}, 1000);
	        });
	    }
	}
}
http.createServer(function(req, res){
	 res.setHeader("Access-Control-Allow-Origin", "*");
	 res.setHeader("connection", "close");
	 res.writeHead(200, {
      "Content-Type": `multipart/x-mixed-replace; boundary="${boundary}"`
    });
    const stream = new MockStream();
    stream.pipe(res);
}).listen(PORT, ipAddr)
console.log(`Server running at http://${ipAddr}:${PORT}/`);

Here is the complete Flutter code:
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Image.network Test',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flutter Image.network Test')),
      body: Center(
        child: Container(
          color: Colors.black.withOpacity(0.6),
          width: 480,
          height: 320,
          alignment: Alignment.center,
          child: Image.network(
            // "http://<IP_ADDRESS>/stream?resolution=480p&bitrate=2000&fps=20",
            "http://<IP_ADDRESS>:8001",
            fit: BoxFit.contain,
            // color: Colors.black,
            // excludeFromSemantics: true,
            // gaplessPlayback: true,
            errorBuilder: (context, error, stackTrace) {
              print("----------- Error: $error");
              return Text("ERROR", style: TextStyle(color: Colors.red));
            },
            loadingBuilder: (context, child, loadingProgress) {
              print("----------- Loading: ${loadingProgress?.cumulativeBytesLoaded}/${loadingProgress?.expectedTotalBytes}");
              return child;
            },
            frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
              print("----------- frame: $frame, $wasSynchronouslyLoaded");
              return child;
            },
          ),
        )
      )
    );
  }
}

@YowFung
Have you tried this plugin to see if it works for you ?
Note: This is not an endorsement for that plugin, but just to gauge if it helps to resolve your issue.

@YowFung
Have you tried this plugin to see if it works for you ?
Note: This is not an endorsement for that plugin, but just to gauge if it helps to resolve your issue.

@darshankawar
I used this good plugin a long time ago, although it had a few bugs at that time (I helped fix a few). However, this plugin does not work on the Web platform because it uses dart:io.

@darshankawar
I used this good plugin a long time ago, although it had a few bugs at that time (I helped fix a few). However, this plugin does not work on the Web platform because it uses dart:io.

@YowFung
How do I make use of this code sample https://github.com/flutter/flutter/issues/73459#issuecomment-756496830 in order to replicate the issue ?
I tried the Flutter code on mobile and on web and see below:
----------- frame: null, false
----------- Loading: null/null
----------- Error: ImageCodecException: Failed to load network image.
Image URL: http://<IP_ADDRESS>:8001

flutter: ----------- frame: null, false
flutter: ----------- Loading: null/null

Also, there seems to be dependency on external tools in order to generate mjpeg which I am not sure qualifies to conclude if it's an issue with Flutter.

@YowFung
How do I make use of this code sample https://github.com/flutter/flutter/issues/73459#issuecomment-756496830 in order to replicate the issue ?
I tried the Flutter code on mobile and on web and see below:
----------- frame: null, false
----------- Loading: null/null
----------- Error: ImageCodecException: Failed to load network image.
Image URL: http://<IP_ADDRESS>:8001

flutter: ----------- frame: null, false
flutter: ----------- Loading: null/null

Also, there seems to be dependency on external tools in order to generate mjpeg which I am not sure qualifies to conclude if it's an issue with Flutter.

MJPEG stream is generally pushed by the Web server, using the HTTP protocol. It is a video stream generated by a number of JPEG images being pushed continuously. General network live or IP camera are all using MJPEG stream, and you can also use several JPEG images on the Web server simulation generation (such as the above JavaScript example code, You need to provide the photo1.jpg and photo2.jpg files). However, I couldn't find a ready-made MJPEG video stream URL that could be used directly. You can run the above JavaScript code on your local computer using node.js to generate an MJPEG video stream.
Reference：

MJPEG wiki: https://en.wikipedia.org/wiki/Motion_JPEG
Download Node.js: https://nodejs.org/
Run Node.js code: node xxxx.js

MJPEG stream is generally pushed by the Web server, using the HTTP protocol. It is a video stream generated by a number of JPEG images being pushed continuously. General network live or IP camera are all using MJPEG stream, and you can also use several JPEG images on the Web server simulation generation (such as the above JavaScript example code, You need to provide the photo1.jpg and photo2.jpg files). However, I couldn't find a ready-made MJPEG video stream URL that could be used directly. You can run the above JavaScript code on your local computer using node.js to generate an MJPEG video stream.
Reference：

MJPEG wiki: https://en.wikipedia.org/wiki/Motion_JPEG
Download Node.js: https://nodejs.org/
Run Node.js code: node xxxx.js

@darshankawar
If you successfully run the MJPEG stream generator program using the node xxxx.js command, you will be able to type "http://<IP_ADDRESS>:8001" into your browser to watch the Continuously changing image.

@darshankawar
If you successfully run the MJPEG stream generator program using the node xxxx.js command, you will be able to type "http://<IP_ADDRESS>:8001" into your browser to watch the Continuously changing image.

@darshankawar
I created a temporary MJPEG Stream web server. You can use this URL: https://mjpeg-server.herokuapp.com/

The whole code:
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Image.network Test',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flutter Image.network Test')),
      body: Center(
        child: Container(
          color: Colors.black.withOpacity(0.6),
          width: 480,
          height: 320,
          alignment: Alignment.center,
          child: Image.network(
            "https://mjpeg-server.herokuapp.com/",
            fit: BoxFit.contain,
            // color: Colors.black,
            // excludeFromSemantics: true,
            // gaplessPlayback: true,
            errorBuilder: (context, error, stackTrace) {
              print("----------- Error: $error");
              return Text("ERROR", style: TextStyle(color: Colors.red));
            },
            loadingBuilder: (context, child, loadingProgress) {
              print("----------- Loading: ${loadingProgress?.cumulativeBytesLoaded}/${loadingProgress?.expectedTotalBytes}");
              return child;
            },
            frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
              print("----------- frame: $frame, $wasSynchronouslyLoaded");
              return child;
            },
          ),
        )
      )
    );
  }
}

@darshankawar
I created a temporary MJPEG Stream web server. You can use this URL: https://mjpeg-server.herokuapp.com/

The whole code:
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Image.network Test',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flutter Image.network Test')),
      body: Center(
        child: Container(
          color: Colors.black.withOpacity(0.6),
          width: 480,
          height: 320,
          alignment: Alignment.center,
          child: Image.network(
            "https://mjpeg-server.herokuapp.com/",
            fit: BoxFit.contain,
            // color: Colors.black,
            // excludeFromSemantics: true,
            // gaplessPlayback: true,
            errorBuilder: (context, error, stackTrace) {
              print("----------- Error: $error");
              return Text("ERROR", style: TextStyle(color: Colors.red));
            },
            loadingBuilder: (context, child, loadingProgress) {
              print("----------- Loading: ${loadingProgress?.cumulativeBytesLoaded}/${loadingProgress?.expectedTotalBytes}");
              return child;
            },
            frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
              print("----------- frame: $frame, $wasSynchronouslyLoaded");
              return child;
            },
          ),
        )
      )
    );
  }
}

@YowFung
Thanks for the complete code sample. I noticed that the image.network is working for web only on dev and beta channel, but not on Master.

Whereas, the same code doesn't work on Android on any of the channels.

dev flutter doctor -v
[✓] Flutter (Channel dev, 1.26.0-1.0.pre, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-IN)
    • Flutter version 1.26.0-1.0.pre at /Users/dhs/documents/Fluttersdk/flutter
    • Framework revision 63062a6443 (4 weeks ago), 2020-12-13 23:19:13 +0800
    • Engine revision 4797b06652
    • Dart version 2.12.0 (build 2.12.0-141.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/dhs/Library/Android/sdk
    • Platform android-30, build-tools 30.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.52.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.16.0

[✓] Connected device (3 available)
    • sdk gphone x86 64 arm64 (mobile) • emulator-5554 • android-x64    •
      Android 11 (API 30) (emulator)
    • macOS (desktop)                  • macos         • darwin-x64     • Mac OS
      X 10.15.4 19E2269 darwin-x64
    • Chrome (web)                     • chrome        • web-javascript • Google
      Chrome 87.0.4280.141

• No issues found!

@YowFung
Thanks for the complete code sample. I noticed that the image.network is working for web only on dev and beta channel, but not on Master.

Whereas, the same code doesn't work on Android on any of the channels.

dev flutter doctor -v
[✓] Flutter (Channel dev, 1.26.0-1.0.pre, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-IN)
    • Flutter version 1.26.0-1.0.pre at /Users/dhs/documents/Fluttersdk/flutter
    • Framework revision 63062a6443 (4 weeks ago), 2020-12-13 23:19:13 +0800
    • Engine revision 4797b06652
    • Dart version 2.12.0 (build 2.12.0-141.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/dhs/Library/Android/sdk
    • Platform android-30, build-tools 30.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.52.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.16.0

[✓] Connected device (3 available)
    • sdk gphone x86 64 arm64 (mobile) • emulator-5554 • android-x64    •
      Android 11 (API 30) (emulator)
    • macOS (desktop)                  • macos         • darwin-x64     • Mac OS
      X 10.15.4 19E2269 darwin-x64
    • Chrome (web)                     • chrome        • web-javascript • Google
      Chrome 87.0.4280.141

• No issues found!

@darshankawar
Yes, that's my problem. I want it to work on the Web, mobile, and desktop.

@darshankawar
Yes, that's my problem. I want it to work on the Web, mobile, and desktop.

Removed the web label  as this is a request for mobile to support mjpeg.

Removed the web label  as this is a request for mobile to support mjpeg.

MJPEG currently isn't supported; we'll log this as a new feature.

MJPEG currently isn't supported; we'll log this as a new feature.

We will likely not ship the codec, but this will be helped by https://github.com/flutter/flutter/issues/82603 if the codec exists on the platform.

Everybody, I found that the Image. network can't display MJPEG also on the web platform now. Why? Seems to be because I upgraded flutter? (It used to be OK.)
This is simple code:
import 'package:flutter/material.dart';

void main() => runApp(ImageNetworkDemo());

class ImageNetworkDemo extends StatelessWidget {
  ImageNetworkDemo({
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "MJPEG DEMO",
      home: Scaffold(
        appBar: AppBar(
          title: Text("MJPEG demo using \"Image.network\""),
        ),
        body: Center(
          child: Container(
            width: 500,
            height: 280,
            color: Colors.black26,
            child: Image.network("http://<IP_ADDRESS>:91/mjpg/video.mjpg", fit: BoxFit.fill),
          ),
        ),
      ),
    );
  }
}

flutter doctor -v
❯ flutter doctor -v
[✓] Flutter (Channel stable, 2.2.1, on macOS 11.3.1 20E241 darwin-x64, locale zh-Hans-CN)
    • Flutter version 2.2.1 at /Users/yowfung/Library/Flutter
    • Framework revision 02c026b03c (13 days ago), 2021-05-27 12:24:44 -0700
    • Engine revision 0fdb562ac8
    • Dart version 2.13.1
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/yowfung/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/yowfung/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5, Build version 12E262
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = /Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.56.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.23.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.3.1 20E241 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Microsoft Edge 90.0.818.62

• No issues found!

@YowFung I tried using above code sample but seems the image url doesn't exist now. I tried to come up with a mjpeg image as you explained in earlier comments, but I somehow couldn't generate one, so currently I am unable to verify this issue if still persists or not using latest stable version.
Can you provide us an updated image link with mjpeg format so that we can verify it and update the issue status as applicable ?


sliver.dart Failed assertion

I/flutter (20880): 'package:flutter/src/widgets/sliver.dart': Failed assertion: line 253 pos 15: 'children != null': is
I/flutter (20880): not true.

Can you include more information? What does the code in your app look like that triggered this? How did you interact with it?
Also, please include the output of flutter doctor --verbose.


WIP: Resolve conditionals statements in the project root

Updated patch, added an internal feature which allows the project to specify restricted keys at conditional statement resolution time.
This results in user errors like such:
Error loading project: project.conf [line 16 column 6]: The 'options' key cannot be specified conditionally


Support adding non-controlled vocabulary bound subjects

Only subjects in a controlled vocabulary are allowed right now, but we want to allow "keywords". This should be supported by passing "subjects": [{"name": "my custom keyword"}] . Frontend and backend changes needed.

This is fixed right? I think we can close, re-open if needed


Add locket client keepalive time and timeout to jobs

As discussed in this issue https://github.com/cloudfoundry/diego-release/issues/627, with this PR we add a keepalive timeout to the locket client, which will improve its performance. The "Time" property of the gRPC client is also added to the locket client config, so operators can configure both of them depending on their needs. Here is the PR in the locket repo:  https://github.com/cloudfoundry/locket/pull/12

Correlates to https://github.com/cloudfoundry/locket/pull/12

FYI, CI seems unhappy because our github-pr resource is confused about the remote branch also being develop. Will see if there's an easy fix for this

Thanks @geofffranks, should I just move the changes to a new branch and make a new PR ? It wouldn't take much time.

yeah, that might be easiest in the short term @klapkov.

you might be able to edit this PR to pull from the new branch, so we can keep the existing discussion history.


[macOS] Move homebrew installation after xcode_clt

Description
There is a rare bug when installing homebrew on macOS Monterey — when calling if [[ -z "${HOMEBREW_ON_LINUX-}" ]] && ! output="$(/usr/bin/xcrun clang 2>&1)" && [[ "${output}" == *"license"* ]]  from the https://github.com/Homebrew/install/blob/master/install.sh script macOS gatekeeper is stuck verifying clang.
This PR moves homebrew installation right after Xcode tools one, which seems to help. Also, we don't need sudo to install the Xcode command-line tools.
Related issue:
[macOS] Investigate an opened window on Monterey after the image update #3469
Check list

[x] Related issue / work item is attached
[ ] Tests are written (if applicable)
[ ] Documentation is updated (if applicable)
[ ] Changes are tested and related VM images are successfully generated

/azp run macos1015, macos11, macos12


LOOK should show NPCs

right now the NPCs aren't explicitly listed, but as a dynamic element of a room similar to Item, they should be listed separatedly from the static description.

it does


feat: add  SupabaseFunctionsShelf

In analogy to VercelEdgeShelf.
I needed to edit the uri, because in contrast to the vercel example, it contained the function name itself. I don't think that's desired in the router matching. Additionally I had to prevent an empty path as described here.
Fixes a bit #23 as well.

What's the status on this? I also want to have multiple functions and I have a simple use case that we want to deploy in PROD.


GH-2137 Use com.github.prasanthj.hyperloglog instead of druid-hll

GitHub issue resolved: #2137
Briefly describe the changes proposed in this PR:
Changed which HyperLogLog implementation we use and also modified how the staleness is calculated.

PR Author Checklist:

[ ] my pull request is self-contained
[ ] I've added tests for the changes I made
[ ] every commit message starts with the issue number (GH-xxxx) followed by a meaningful description of the change
[ ] every commit has been signed off

Note: we merge all feature pull requests using squash and merge. See RDF4J git merge strategy for more details.

Main CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=22001

CQ for transitive dependency: http://dev.eclipse.org/ipzilla/show_bug.cgi?id=22000
APPROVED!

Would appreciate getting this released as part of 3.2.0.


Additive layer blending

It would be great to have the option to use additive layer blending mode. From an example on Peter Beshai's blog (https://peterbeshai.com/blog/2019-08-10-deckgl-point-animation/) :

import GL from<EMAIL_ADDRESS>const librariesLayer = new DelayedPointLayer({
...
parameters: {
// prevent flicker from z-fighting
[GL.DEPTH_TEST]: false,

// turn on additive blending to make them look more glowy
[GL.BLEND]: true,
[GL.BLEND_SRC_RGB]: GL.ONE,
[GL.BLEND_DST_RGB]: GL.ONE,
[GL.BLEND_EQUATION]: GL.FUNC_ADD,

},
});

Customizing GL blending modes is really advanced, and I imagine the number of python users who would know how to use it is miniscule. I'd consider a PR but I don't think this is the highest priority for me to implement

This is so low level that I don't have an interest in exposing this for now. We can revisit in the future.


Add notes about anyCastPort and ingressControllerTargetPort

Q
A

Bug fix?
no

New feature?
yes

API breaks?
no

Deprecations?
no

License
Apache 2.0

What's in this PR?

Corresponding docs for https://github.com/banzaicloud/koperator/pull/997
Why?

Add docs for the new feature and existing functionality

@pregnor @fekete-robert We shouldn't merge this before the next Koperator release is dropped, right?

@pregnor @fekete-robert We shouldn't merge this before the next Koperator release is dropped, right?

I guess so, but I'm lost what is auto-released and what is not so I defer to Robi's answer.

@pregnor @fekete-robert We shouldn't merge this before the next Koperator release is dropped, right?

I guess so, but I'm lost what is auto-released and what is not so I defer to Robi's answer.

yea... I started to think that we might need to use release tag, so that committing to master branch wouldn't make the commit public

@pregnor @panyuenlau : Stuff from the master branch is not published automatically, but new merges automatically open  PR for the banzai site. So we can either mark the PR with something like Do not merge until X.Y release, or we can merge it, and then I'll (hopefully) keep in mind that we shouldn't publish updates to the koperator docs on the banzai site.
This will improve when we migrate the docs and the code to the new github org, where we can have versioned docs, and have a separate set for version X.Y, and also a latest greatest build from the main branch.


Spellchecker error

The linter throws a 'possibly misspelt word' error for a perfectly fine 'Lightbulb'.
Step link: https://hyperskill.org/learn/step/6988
The users are not happy : /

@GirZ0n could you please check it?

Fixed in 46a5e289bc82a24565c85efc8c72ba5bb7b4d3e9.


First Issue

As a [role]
I need [function]
So that [benefit]
Details and Assumptions
* [document what you know]

Acceptance Criteria
gherkin
Given [some context]
When [certain action is taken]
Then [the outcome of action is observed]

all okay zenhub okay


Error 'int8x8_t' does not name a type when building with bazel

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): ARMv8 aarch64 CentOS Linux release 7.6.1810
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: N/A
TensorFlow installed from (source or binary): Source
TensorFlow version: 1.14
Python version: 3.7.3
Installed using virtualenv? pip? conda?: virtualenv
Bazel version (if compiling from source): 0.24.1
GCC/Compiler version (if compiling from source): gcc4.8.5
CUDA/cuDNN version: N/A
GPU model and memory: N/A

Describe the problem
Hello,
I encountered the following error while trying to build tensorflow on an ARM machine:
/<install folder>/tensorflow/lite/kernels/BUILD:374:1: C++ compilation of rule '//tensorflow/lite/kernels:builtin_op_kernels' failed (Exit 1)
cc1plus: warning: command line option '-std=gnu99' is valid for C/ObjC but not for C++ [enabled by default]
In file included from ./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8.h:22:0,
                 from ./tensorflow/lite/kernels/internal/optimized/depthwiseconv_multithread.h:22,
                 from tensorflow/lite/kernels/depthwise_conv.cc:29:
./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8_3x3_filter.h: In static member function 'static void tflite::optimized_ops::depthwise_conv::WorkspacePrefetchWrite<(tflite::DepthwiseConvImplementation)3>::Run(int8, int, int8*)':
./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8_3x3_filter.h:5775:11: error: 'int8x8_t' does not name a type
     const int8x8_t fill_data_vec_int8 = vdup_n_s8(fill_data);
           ^
./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8_3x3_filter.h:5776:11: error: 'uint32x2_t' does not name a type
     const uint32x2_t fill_data_vec = vreinterpret_u32_s8(fill_data_vec_int8);
           ^
./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8_3x3_filter.h:5780:55: error: 'fill_data_vec' was not declared in this scope
       vst1_lane_u32(reinterpret_cast<uint32_t*>(ptr), fill_data_vec, 0);
                                                       ^
./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8_3x3_filter.h:5780:71: error: 'vst1_lane_u32' was not declared in this scope
       vst1_lane_u32(reinterpret_cast<uint32_t*>(ptr), fill_data_vec, 0);
                                                                       ^
./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8_3x3_filter.h:5783:19: error: 'fill_data_vec' was not declared in this scope
                   fill_data_vec, 0);
                   ^
./tensorflow/lite/kernels/internal/optimized/depthwiseconv_uint8_3x3_filter.h:5783:35: error: 'vst1_lane_u32' was not declared in this scope
                   fill_data_vec, 0);
                                   ^
Target //tensorflow/tools/pip_package:build_pip_package failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 26.504s, Critical Path: 10.13s
INFO: 23 processes: 23 local.
FAILED: Build did NOT complete successfully

Provide the exact sequence of commands / steps that you executed before running into the problem

Add the following code to the top of <install folder>/tensorflow/WORKSPACE, as suggested here:

http_archive(
    name = "build_bazel_rules_nodejs",
    # Replace with a real SHA256 checksum
    sha256 = "{SHA256}"
    # Replace with a real commit SHA
    strip_prefix = "rules_nodejs-{HEAD}",
    urls = ["https://github.com/bazelbuild/rules_nodejs/archive/{HEAD}.tar.gz"],
)

Run ./configure with all option set to n
Build tensorflow bazel build --host_copt="-std=gnu99" --copt="-std=gnu99" --conlyopt="-std=gnu99" //tensorflow/tools/pip_package:build_pip_package

Any other info / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.
See above
Any help would be appreciated.

@hsinpaohuang, Just to verify, did you install tensorflow lite following the instructions mentioned in the Tensorflow website on ARM. Thanks!

@hsinpaohuang, Just to verify, did you install tensorflow lite following the instructions mentioned in the Tensorflow website on ARM. Thanks!

@gadagashwini, I followed the instructions on how to build tensorflow (not lite) from source from the official website.

@hsinpaohuang The official website provides the instructions to build Tensorflow on Linux or MacOS platform. Looks like you are building Tensorflow on ARM. Please let me know if my understanding is bad. Thanks!

@hsinpaohuang The official website provides the instructions to build Tensorflow on Linux or MacOS platform. Looks like you are building Tensorflow on ARM. Please let me know if my understanding is bad. Thanks!

@gadagashwini You're right. I found a precompiled .whl for aarch64 here and it worked. Thank you. Closing this issue.

Are you satisfied with the resolution of your issue? Yes No


Unable to reuse an existing trace ID when beginning a new segment in Lambda

I'm using aws-xray-recorder-sdk-core version 2.8.0
The lambda function I'm working on get invoked by a larger application consisting of a set of Lambda functions and SQS queues. One of these components initiates an XRay trace and passes on the Root Trace ID to all the other components. Each lambda is required to begin a new segment (separable computations in each lambda can optionally create a subsegment).
When using the Java SDK, creating a subsegment inside a segment triggers a bug; see #245. I worked around this by creating the subsegment manually, based on the implementation from com.amazonaws.xray.contexts.LambdaSegmentContext. However, the original implementation checks whether the current (sub)segment has a different Root Trace ID than the one specified in the _X_AMZN_TRACE_ID environment variable and if so, clears the current entity and starts a new subsegment under the Root Trace ID from the environment.
As a result, I lose all the tracing information of this specific lambda.
Is this behaviour a bug or is it intended? If it is intended, then how can I add (sub)segments to an existing, externally provided,  Root Trace ID from within a Java Lambda?

Hi @bvingerh,
Thanks for raising this. In Lambda, X-Ray has an integration where the Lambda service that is executing your function will generate a segment on your behalf when "Active Tracing" is enabled. Since the Lambda service creates and populates the segment, it is immutable by your function code, and you cannot begin a new segment in its place. See the Lambda docs for more. We are also actively working on providing the ability to trace Lambdas triggered by SQS queues to ensure each request in a batch is traced independently and correctly, as you describe, which is being tracked here: https://github.com/aws/aws-xray-sdk-node/issues/208
So for now, what you're describing is the expected behavior and you cannot begin custom segments with given trace IDs in Lambda. We could be open to a PR for a workaround to allow segments to be created normally in Lambda, and as long as you disable Active Tracing you could have the experience you're describing. Otherwise I'm not sure we'll have the bandwidth to add such a workaround before the feature I linked above is released.

Hi @willarmiros,
A collegue pointed me to "Active Tracing" as well, but according to the AWS Lambda Console, Active Tracing is not enabled on the deployed lambda. So I was not expecting a Segment to be created by the service.
For now I've worked around both problems by copying and adjusting the LambdaSegmentContext#beginSubsegment implementation so that I am able to create a custom Segment and add Subsegments to it from within my lambda.
When I have a moment I'll try to fit my solution in a PR.

Right, so the X-Ray SDK doesn't have any way of knowing whether Active Tracing is enabled or not, we can only detect whether we're in a Lambda environment or not. So we could allow for segments to be created and sent, it's just that they'd be duplicates if "Active Tracing" is also enabled.
There's also the question of context behavior - in a normal environment, if you attempt to begin a subsegment with no active segment, you get a context missing exception. In Lambda, we assume the Lambda-created segment will be the parent so you can (and must) create subsegments without creating a segment first. If we add the ability you're describing, I suppose we'll allow both - if a subsegment without a parent is created, we assume "Active Tracing" is enabled and there will be a parent segment created by Lambda. If the function code creates a segment, we assume "Active Tracing" is disabled and parent all subsequent subsegments to the user-created segment.
Glad you've got a workaround working in the meantime :)

A solution for allowing the X-Ray SDK to know whether or not Active Tracing is set would be for Lambda to set the _X_AMZN_TRACE_ID environment variable to the relevant Root Trace ID when Active Tracing is on, and not setting the environment variable when Active Tracing is not enabled. That at least was my initial expectation.
Unless of course there is a valid reason for having a Root Trace ID available, even when Active Tracing is disabled?

The main reason is that when Active Tracing is disabled, the Lambda still acts in "pass through" mode where it just passively propagates any received trace header, but doesn't create a segment or sampling decision for itself. So say there was a APIGW trigger (with X-Ray enabled) in front of Lambda A (with active tracing disabled), and then Lambda A calls some other Lambda B (with active tracing enabled), the service map would be:
APIGW -> Lambda B

So in that case, we need the _X_AMZN_TRACE_ID to propagate to Lambda B even though Active tracing is disabled in Lambda A.


⚠ Samsung has degraded performance

In 50a5112, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2595 ms

Resolved: Samsung performance has improved in 2ca577f.


Error when trying to run now-compose on existing docker-compose.yml

I've got TypeError error when trying to run on existing docker-compose.yml file:
now-compose -f docker-compose.yml up -d

The error message:
ERROR: TypeError: Path must be a string. Received { context: '.', dockerfile: '.docker/php/Dockerfile' }

My docker-compose.yml file:
version: "3"
networks:
  app-tier:
    driver: bridge
services:
  app:
    build:
      context: .
      dockerfile: .docker/php/Dockerfile
    networks:
      - app-tier
    ports:
      - 9002:9000
    volumes:
      - .:/srv/app
  nginx:
    build:
      context: .
      dockerfile: .docker/nginx/Dockerfile
    networks:
      - app-tier
    ports:
      - 8080:80
    volumes:
      - ./public:/srv/app/public

So currently only the path to the Dockerfile to build is supported. You've defined an object with context and dockerfile props.
Try this and let me know if that solves any issues:
version: "3"
networks:
  app-tier:
    driver: bridge
services:
  app:
    build: ./.docker/php/Dockerfile
    networks:
      - app-tier
    ports:
      - 9002:9000
    volumes:
      - .:/srv/app
  nginx:
    build: ./.docker/nginx/Dockerfile
    networks:
      - app-tier
    ports:
      - 8080:80
    volumes:
      - ./public:/srv/app/public

Do you mind giving me more info so i can help you out?
What does the directory structure look like for your project?
Also feel free to take a look at the example proj and directory structure for a working example.


Basic auth, for new proxy

Since this has only been talked about in mail till now, Im gonna open an issue for it.
I redid the proxy configuration + creation here (https://github.com/peb-adr/OpenSlides/tree/proxy-rework/proxy). To be able to merge/PR it, the manage-client will have to authenticate itself when connecting through the proxy.
This also implicates the setup command to be expanded, so that it generates a new secret (proxy currently expects a secret named manageuser). The compose-file will have to be adjusted as well to provide said secret to the proxy.

Of cause we can do it like this. An alternative would be, that the manage server checks the basic Auth. This would make the authentication more flexible, of we want to use another Auth method like tokens in the future.
For this setup, the proxy only has to redirect the requests.

Ooh, then I misunderstood you in our call.
But your right, doing it within the manage-server would be way more flexible, so as far as Im concerned your welcome to implement it there :) .
Eitherway manage-traffic will have to be authenticated when going through the proxy so the issue stays valid.

You did not misunderstand me. The idea came later 😁

Oh well :P
But yeah besides being more flexible I'd imagine it to also be more compatible and stress free, when its two go programs authenticating to one another, instead of go towards caddy


pipelineX ignore storage data distribution by default

Proposed changes
Issue Number: close #xxx

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall


Proposal to enhance OSecurity

Guys,
Right now OSecurity class contains only methods:

To create/manage users and roles
Grant and revoke security rights

But there is now methods for actual checking of allowance to do something with some object. Functionality for that are spread over the code and some things are quite hard to use out side: for example there is no way to check does this user has access to a document or not.  Example
So I propose make following changes/refactoring:
Add methods for checking security rights for a specific user to a specific document. There should be 2 kinds of checks: check according to security rights and if that's OK - additional check according to ORestricted logic.
If you argue against that: please make something with ORestrictedAccessHook.isAllowed() method - it's pretty usable in real life
P.S. I can prepare PR if you don't mind.
P.P.S. Btw, it will be cool to have additional read-only group in your organization for active contributors: just to be able to assign issues to somebody outside your employees.

+1 about a PR. About contributors team, good idea. Just created it.

Thanks! Just FYI: read only team members can't self-assign issues. (It's highly desirable feature by github community, but still is not realized) So, only real team members can assign issues - including contributors (who is in read-only mode). Simply saying: I can't self assign this issue:)

Assigned to you ;-)


Translated community page to ukrainian

Translated the latest version of community page to Ukrainian.

LGTM, It would also be great to translate the page description.

Thanks for the suggestion! I've translated the page description.


Update Api.php

This code breaks with HHVM because current() does not behave the same way as PHP. The Mage_Core_Model_Config_Element Object is essentially a SimpleXML object, which is traversable, but not an Array.  The current() function states it works on arrays, not traversable objects.  To address this we can cast the node to a string, which is a common practice throughout magento's codebase.

@lawrencetran Thanks for this!
@jonahellison Can you review this and we can merge?


Create project packages

Define the project stucture, like packages and possible classes

It's necessary to add qt management and separate the core (dittorier api) from the view (dittorier)


Warnings on chef-server-ctl reconfigure

Much warn, many scary:
vagrant@private-chef:~$ sudo chef-server-ctl reconfigure
Starting Chef Client, version 12.0.3
resolving cookbooks for run list: ["private-chef::default"]
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:07+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:08+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:08+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-02-24T16:12:08+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache

indeed

@stevendanna any idea what todo with that warning?

The warning can be safely ignored


Can we expect useEffectReducer to work with react 18?

Hey @davidkpiano !
First of all, thank you for this awesome reducer! It's the perfect approach for me and my team right now without getting 100% into xstate (yet).
Anyways, we are planning on upgrading to react 18 soon and I would like to know if I can count on not having effects running multiple times (due to the whole Strict Mode thing).
Don't know if you have tested useEffectReducer with it yet, but if you did, I was hoping to know your results 🙏
Thank you for your time!

Hey, unfortunately I haven't reworked this for React 18 (yet), but due to the nature of useEffect, it is still very possible that effects will double execute on first render.

Hello,
Thanks for the quick reply! 🙏


Expr equals() conflicts with other operators

Originally reported in: doctrine/mongodb-odm#917
User attempted to use ->equals('foo') and ->notEquals('bar') on the same field, which clashes. If equals() is used first, other operators will throw a PHP warning because the field cannot be access as an array (or probably worse undefined behavior if it actually is an array). Inversely, equals() would simply overwrite previously applied operations.

Ping @jmikola Wasn't this fixed with #201?

@alcaeus: Yes, I believe so. Good catch!


podcast:locked tag generation

Implement support for generating an optional <podcast:locked> tag.
Might also investigate adding the "owner" email if it's simple enough.

Implemented in https://github.com/agates/feed/commit/cc0008a25d7e4eb3bcdaf7050ca5ff0f5c2192c4


Mention quoting bugfix in CHANGELOG

Hi @dmathieu,
I forgot to mention the bugfix of #583 in changelog...
Could you make a release after this one?
Thank you!

Oops I forgot this too.
I'll make the release tomorrow though.


Set return_full_text=False in HF pipeline API

Similar to https://github.com/datacommonsorg/llm-tools/pull/3, but for the pipeline API instead of the model/tokenizer pair.

thanks!


Error in professions tab

Hello,
there seems to be an error in the "professions" tab. If you open the skill tree of a profession I get the following error in the console and the skill tree isn't working.

Do you have an idea how to solve it?
Thanks.

Outdated