Added whitespaces to the "collapse consecutive whitespaces" command

fixes #4883
Changes proposed in this pull request:

replaced value.replace(/\\s+/,' ') for value.replace(/[\\p{Zs}\\s]+/,' ')

Do we actually need to keep the \s in the regex? I would suspect those characters are already included in \p{Zs}, no?

I think we need to keep both as \p{Zs} does not include the tab character (I'm not sure if there are other characters included in \s but not \p{Zs} but the tab character is definitely an issue)

Hello!
Sorry for the delay, I was a little absent the past month. About the testing, should I make another issue for that, or was it already fixed?

Thanks for checking! I added the test to this pull request already (see https://github.com/OpenRefine/OpenRefine/pull/4898/files)


Update akka-actor to 2.5.28

Updates com.typesafe.akka:akka-actor from 2.5.27 to 2.5.28.
Release Notes/Changelog
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.typesafe.akka", artifactId = "akka-actor" } ]

labels: library-update, semver-patch

superseded by https://github.com/wehkamp/cakemix/pull/48


Handle larger scroll sizes than browser supports natively

Resolves #219
Work-in-progress.

[Current coverage][cc-pull] is 94.26%

Merging [#261][cc-pull] into [master][cc-base-branch] will decrease coverage by 0.57%

@@             master       #261   diff @@
==========================================
  Files            30         31     +1
  Lines           988       1027    +39
  Methods          85         86     +1
  Messages          0          0
  Branches        217        226     +9
==========================================
+ Hits            937        968    +31
- Misses           51         59     +8
  Partials          0          0

Powered by Codecov. Last updated by [9036ce7...b2bd5aa][cc-compare]
[cc-base-branch]: https://codecov.io/gh/bvaughn/react-virtualized/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/bvaughn/react-virtualized/compare/9036ce7ffd59069cb35f2d99bf9c25201afdde8a...b2bd5aa31723bb5715b741441bab583455935f33
[cc-pull]: https://codecov.io/gh/bvaughn/react-virtualized/pull/261?src=pr

[Current coverage][cc-pull] is 94.26%

Merging [#261][cc-pull] into [master][cc-base-branch] will decrease coverage by 0.57%

@@             master       #261   diff @@
==========================================
  Files            30         31     +1
  Lines           988       1027    +39
  Methods          85         86     +1
  Messages          0          0
  Branches        217        226     +9
==========================================
+ Hits            937        968    +31
- Misses           51         59     +8
  Partials          0          0

Powered by Codecov. Last updated by [9036ce7...b2bd5aa][cc-compare]
[cc-base-branch]: https://codecov.io/gh/bvaughn/react-virtualized/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/bvaughn/react-virtualized/compare/9036ce7ffd59069cb35f2d99bf9c25201afdde8a...b2bd5aa31723bb5715b741441bab583455935f33
[cc-pull]: https://codecov.io/gh/bvaughn/react-virtualized/pull/261?src=pr

[Current coverage][cc-pull] is 94.26%

Merging [#261][cc-pull] into [master][cc-base-branch] will decrease coverage by 0.57%

@@             master       #261   diff @@
==========================================
  Files            30         31     +1
  Lines           988       1027    +39
  Methods          85         86     +1
  Messages          0          0
  Branches        217        226     +9
==========================================
+ Hits            937        968    +31
- Misses           51         59     +8
  Partials          0          0

Powered by Codecov. Last updated by [9036ce7...b2bd5aa][cc-compare]
[cc-base-branch]: https://codecov.io/gh/bvaughn/react-virtualized/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/bvaughn/react-virtualized/compare/9036ce7ffd59069cb35f2d99bf9c25201afdde8a...b2bd5aa31723bb5715b741441bab583455935f33
[cc-pull]: https://codecov.io/gh/bvaughn/react-virtualized/pull/261?src=pr

Can you throw up a demo when you get a chance? I wanna test out the scrolling behavior, and btw nice work!

Of course. It's here: https://bvaughn.github.io/react-virtualized/
Just bump the number of rows in the VirtualScroll up to 10,000,000 or something.


getTestResult method specifically returns covid result

BACKEND PULL REQUEST
Related Issue
Fixes #3435
Changes Proposed
This PR is making sure that as part of the backwards compatibility implementation we are always returning only the covid result when the getTestResult method gets invoke. This method was partially handling this by always returning one result object, so with this PR we just make sure that object is in fact the covid result.
Testing
Verify that results are loaded correctly in the results table or any other flow that allows you to read a reported result.
Checklist for Primary Reviewer

[ ] Any large-scale changes have been deployed to test, dev, or pentest and smoke tested
[n/a] Any content updates (user-facing error messages, etc) have been approved by content team
[n/a] Any changes that might generate questions in the support inbox have been flagged to the support team
[n/a] GraphQL schema changes are backward compatible with older version of the front-end
[X] Changes comply with the SimpleReport Style Guide
[n/a] Changes with security implications have been approved by a security engineer (changes to  authentication, encryption, handling of PII, etc.)
[n/a ] Any dependencies introduced have been vetted and discussed

@emyl3 can you approve this PR again?. I lost the previous approval after I updated a comment in the code. Thanks!


Please do not use vanilla vehicles vs RHS vehicles or MAT

EU round 3
Vanilla vehicles vs RHS weaponry put RHS MAT at a big disadvantage, less effective against vanilla vehicle's armor
Suggest pairing vanilla MAT / statics against vanilla vehicle assets
FNF_FLying-FINN_ViLaBaoPoLa_24_September_2020_Uplink_EU.vt7

Mission reviewers will have to catch things like this. Have had many discussions in the past around this and decided to keep Vanilla separate from RHS. New mission makers will have to understand this.


Add external examples section

This PR adds a section about examples that are outside of official documentation.

I will leave the merge to @bvdmitri.


Test cases not completely fair

The emotion css-mode test is not actually using emotion for colouring of the cells, which is the heaviest part. It just uses inline styles:
style={{ background: `rgba(74, 174, 53, ${x})` }}
which has to be super quick.
Instead, it should be using class generation like the glamorous/glamor-css test does.
I can submit a PR to fix this. It considerably changes the results table.

I think there's a naming problem. I also got misled by the results stating that styled-jsx-inline-styles is blazingly fast, whereas there's just 1 static <style jsx> tag inside, everything else done with plain inline styles.
What I had to check myself, however, was the case of many static <style jsx> tags, which shows that there's only a small (270 vs 320) difference between N static tags and N dynamic ones. Here's the case I coded myself:
const Cell = ({ value, children }) => (
  <div className="cell">
    {children}
    <style jsx>{`
      .cell {
        display: table-cell;
        padding: 10px;
      }
    `}</style>
    <style jsx>{`
      .cell {
        background: rgba(74, 174, 53, 30);  // here I replaced the var with a static value
      }
    `}</style>
  </div>
);


I can't seem to import my OMPL file containing my podcasts.

I'm on Ubuntu 17.10. I have a OMPL file containing around 30 podcasts. After importing I get a message that it may take some time to import them all. I've left Cpod working for a few hours a few times and never managed to import my podcasts. I can successfully import them into Pocketcasts and Grover.
I'm using the downloaded .deb version on my system and it has a connection to the internet.
I'll include a copy of my ompl file too in case you want to try and diagnose it for other users importing a large number of podcasts. I'll change the file to .txt so it will upload here.
Podcasts.txt

Thanks, I'll look into it.

I had a similar issue where the dialogue never disappeared. But when I closed it manually Cpod started to display import notifications and every podcast from my OMPL was in my list

@GlacierFox, I've just tried importing subscriptions from the opml file you attached and it seems to work fine. So it's likely that what @cobsen describes is the issue we're facing here, since Electron's dialogs are process-blocking. Could you try importing the opml file again and closing the dialog when it shows? In any case, I'll replace the dialog with something else.

Hi there. I just tried what you described and yes it does work if I do that. I think changing the text in the box would be a good idea. Fantastic work by the way, love the app so far.

I've replaced the dialog box with a snackbar (the little dark grey notifications in the bottom left) so it no longer blocks the import. This change is available in (pre)release 1.17.1. Thanks!


Typo in Book 1 17.2.8

I believe here it should say 'neural network' instead of 'RBF' network - as we are comparing RBF kernel GPs to neural networks in the infinite width limit.

fixed, thanks


(BKR-459) update osx package name and directory to correspond...

... to RE changes

- updated install_puppet_agent_dev_repo_on to handle new directory
  structure and name change
- backwards compatible, handles both old and new
- fixed up a small bug about overriding passed in options

@anodelman this looks reasonable to me.

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/1403/
Test PASSed.


Add optional parameter to FlowManager’s pause function

Now we can choose to hide the overlayView when pausing (default false), to make the screen animations look clean in between coach marks.

Codecov Report

Merging #131 into master will decrease coverage by 0.2%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master     #131      +/-   ##
==========================================
- Coverage   74.12%   73.91%   -0.21%
==========================================
  Files          30       30
  Lines        1422     1426       +4
==========================================
  Hits         1054     1054
- Misses        368      372       +4

Flag
Coverage Δ

#ios
73.91% <0%> (-0.21%)
:arrow_down:

Impacted Files
Coverage Δ

...ces/Instructions/Managers/Public/FlowManager.swift
67.44% <0%> (-2.16%)
:arrow_down:

Continue to review full report at Codecov.

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


Type checks don't work in statically typed functions when using yields

Godot version
3.3.2 Standard stable
System information
Windows 10
Issue description
When using yields in statically typed functions the type checks don't work as expected.
This include but is not limited to:

Being able to return different type
Returning void in function that should return something
Returning value in a void function.

Steps to reproduce
See the attached minimal.zip. It contains the project with comments describing some cases.
Just run the test.tscn scene.
Minimal reproduction project
minimal.zip

yield() has been removed in favor of await in 4.0, so this is unlikely to be fixed in 3.x.


Average loss calculated by pl is different from manual average loss

🐛 Bug
Validation loss reported by pytorch-lightning on progress bar is different from manually averaged validation loss.
I'm not sure if it's a bug or an intended behavior, but I cannot understand why two values are different.
To Reproduce
Steps to reproduce the behavior:

Run the below code
Observe printed average val loss

1 epoch:
val loss on progress bar: 0.962
manually averaged val loss: 1.2909
2 epoch:
val loss on progress bar: 0.946
manually averaged val loss: 1.2527
Code sample
import os

import torch
from torch.nn import functional as F
from torch.utils.data import DataLoader
from torchvision.datasets import MNIST
from torchvision import transforms
import pytorch_lightning as pl

class MNISTModel(pl.LightningModule):
    def __init__(self):
        super(MNISTModel, self).__init__()
        # not the best model...
        self.l1 = torch.nn.Linear(28 * 28, 10)
        self.val_losses = []

    def forward(self, x):
        # called with self(x)
        return torch.relu(self.l1(x.view(x.size(0), -1)))

    def training_step(self, batch, batch_nb):
        # REQUIRED
        x, y = batch
        y_hat = self(x)
        loss = F.cross_entropy(y_hat, y)
        tensorboard_logs = {"train_loss": loss}
        return {"loss": loss, "log": tensorboard_logs}

    def validation_step(self, batch, batch_nb):
        # OPTIONAL
        x, y = batch
        y_hat = self(x)
        val_loss = F.cross_entropy(y_hat, y)
        self.val_losses.append(val_loss.item())
        return {
            "loss": val_loss,
            "progress_bar": {"val_loss": val_loss},
            "log": {"val_loss": val_loss},
        }

    def on_validation_epoch_end(self):
        print("average val loss", sum(self.val_losses) / len(self.val_losses))
        self.val_losses = []

    def configure_optimizers(self):
        # REQUIRED
        # can return multiple optimizers and learning_rate schedulers
        # (LBFGS it is automatically supported, no need for closure function)
        return torch.optim.Adam(self.parameters(), lr=0.02)

    def train_dataloader(self):
        # REQUIRED
        return DataLoader(
            MNIST(os.getcwd(), train=True, download=True, transform=transforms.ToTensor()),
            batch_size=32,
        )

    def val_dataloader(self):
        # OPTIONAL
        return DataLoader(
            MNIST(os.getcwd(), train=True, download=True, transform=transforms.ToTensor()),
            batch_size=32,
        )

mnist_model = MNISTModel()

# most basic trainer, uses good defaults (1 gpu)
trainer = pl.Trainer(gpus=1)
trainer.fit(mnist_model)

Expected behavior
val losses manually calculated should match the one reported by progress bar of pytorch-lightning
Environment
Please copy and paste the output from our
environment collection script
(or fill out the checklist below manually).
You can get the script and run it with:
wget https://raw.githubusercontent.com/PyTorchLightning/pytorch-lightning/master/tests/collect_env_details.py
# For security purposes, please check the contents of collect_env_details.py before running it.
python collect_env_details.py

PyTorch Version: 1.6
OS (e.g., Linux): Base Docker image: nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04
How you installed PyTorch (conda, pip, source): pip
Build command you used (if compiling from source): None
Python version: 3.8
CUDA/cuDNN version: CUDA 10.2, cudnn 7
GPU models and configuration: Titan RTX
Any other relevant information:

Additional context

If I am not mistaken, the val_loss you are logging is per batch while avg_val_loss is per epoch

progress_bar and log dict keys in validation_step are not valid.
What's happening here is that at the end of the validation epoch, it will display the last val_loss value that your validation_step returned.
Solution: do not return progress_bar key in validation_step result. Compute the avg_val_loss in the epoch_end method or even better, use the Results object to average the metric, then you don't have to write epoch_end.
I'm removing the bug label, I don't think this is a bug.

@awaelchli I just came across this and your results link goes to a 404?

@awaelchli I just came across this and your results link goes to a 404?

The Results API does not exist anymore, it got removed. Use the new logging api instead:
https://pytorch-lightning.readthedocs.io/en/stable/logging.html#logging-from-a-lightningmodule

The Results API does not exist anymore, it got removed. Use the new logging api instead:
https://pytorch-lightning.readthedocs.io/en/stable/logging.html#logging-from-a-lightningmodule

Even this link is returning a 404. Logging the parameters is confusing indeed in ptl. Please help.

@AjeyPaiK The related doc pages are:

https://pytorch-lightning.readthedocs.io/en/1.5.9/extensions/logging.html
https://pytorch-lightning.readthedocs.io/en/1.5.9/api/pytorch_lightning.core.lightning.html#pytorch_lightning.core.lightning.LightningModule.log

This issue is quite outdated, so if anyone has further questions on this, please create a new GitHub discussion at https://github.com/PyTorchLightning/pytorch-lightning/discussions.


Link with Qt project?

Hi,
First, thanks for making this project.  I can't believe that libgcrypt and gpgme don't expose this kind of thing through their APIs... Second, the project clones and builds super clean (in Ubuntu 16.04), looks great.
I'm building an application in Qt, linked to gpgme and libgcrypt, that sort of hit a wall when I wanted to export the "meat" of the public keys from the gpg keyring in a format like X9.62 or similar that could be later passed to libgcrypt to validate signatures... that's when I found your project.
The issue I'm having is: when I link libOpenPGP.a to my project, I start getting linker errors as soon as I add a Key object to my code:
/usr/bin/ld: /home/mango/MainCore/OpenPGP/libOpenPGP.a(pgpzlib.o): undefined reference to symbol 'inflateInit2_'
/usr/lib/x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
I've messed around, tried adding -lz and -ldl to the linker arguments at various places, tried making a -shared libOpenPGP.so, but this one is stubborn, it just refuses to see the symbols in libz.so, even though the linker error is calling out a symlink that points right at the  the /lib/x86_64-linux-gnu/libz.so.1.2.8 file.  I've also tried installing the lib64z1-dev package, still no help - though installing libbz2-dev was required to get it OpenPGP to compile.
I looked briefly at the idea of bringing the OpenPGP source into my project, but I'm building with .pro/.pri files, and they're not too easy (possible?) to work with things like multiple files named Key.cpp, or some of the inclusion orders implemented in the makefiles.
Do you have any prior experience with these kinds of issues?  The error messages center around zlib, and I think Qt also compiles in their own zlib, so that may be a source of trouble.
Thanks for any help or insight.

I have never encountered this problem before. Maybe adding a -L that points to the system zlib might help it not find Qt's version.

I've tried different -L values, and gotten it to point at different system libz.so links (they all go back to the same file), I haven't managed to get it to point at /usr/lib/x86_64-linux-gnu/libz.a yet, though I did try some things with -Wl, -Bstatic, etc. (like this: https://stackoverflow.com/questions/3698321/g-linker-force-static-linking-if-static-library-exists) but no luck getting the desired effect with those yet.
As far as I can see from the g++ command and /usr/bin/ld error message, it should be linking to the system libz.so files, which at their version of 1.2.8 should have inflateInit2() defined, but it still gives those errors.
g++ -Wl,-O1 -Wl,-rpath,/home/mango/Qt/5.9/gcc_64/lib -o newApp cryptoForm.o mainwindow.o  blah blah blah  moc_mainwindow.o   -lOpenPGP -L/home/mango/app/OpenPGP -lgcrypt -lgpgme -lgpg-error -L/home/me/Qt/5.9/gcc_64/lib -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread
/usr/bin/ld: /home/mango/app/OpenPGP/libOpenPGP.a(pgpzlib.o): undefined reference to symbol 'inflateInit2_'

grep finds it:
grep inflateInit2_ /lib/x86_64-linux-gnu/libz.so.1.2.8
Binary file /lib/x86_64-linux-gnu/libz.so.1.2.8 matches
is there a better dumping tool?

nm(1) and objdump(1)

The thing that bugs me is that no matter which libz I direct the compiler to, it seems to be using another one - one that lacks inflateInit2_ ...  Rebuilding Qt from source takes time, but I might be trying that next and paying attention to their libz options.

It's in there:
objdump -d /lib/x86_64-linux-gnu/libz.so.1.2.8 | grep inflateInit2
0000000000009ba0 <inflateInit2_@@Base>:
9ba3:	0f 84 d7 00 00 00    	je     9c80 <inflateInit2_@@Base+0xe0>
9bac:	0f 85 ce 00 00 00    	jne    9c80 <inflateInit2_@@Base+0xe0>
9bb5:	0f 85 c5 00 00 00    	jne    9c80 <inflateInit2_@@Base+0xe0>
9bc1:	0f 84 d0 00 00 00    	je     9c97 <inflateInit2_@@Base+0xf7>
9bda:	0f 84 80 00 00 00    	je     9c60 <inflateInit2_@@Base+0xc0>
9be9:	74 65                	je     9c50 <inflateInit2_@@Base+0xb0>
9c03:	0f 84 87 00 00 00    	je     9c90 <inflateInit2_@@Base+0xf0>
9c28:	75 06                	jne    9c30 <inflateInit2_@@Base+0x90>
9c5b:	eb 8e                	jmp    9beb <inflateInit2_@@Base+0x4b>
9c78:	e9 67 ff ff ff       	jmpq   9be4 <inflateInit2_@@Base+0x44>
9c95:	eb 93                	jmp    9c2a <inflateInit2_@@Base+0x8a>
9caa:	e9 f1 fe ff ff       	jmpq   9ba0 <inflateInit2_@@Base>
1081b:	e8 80 93 ff ff       	callq  9ba0 <inflateInit2_@@Base>

What does ldconfig -p | grep libz say?

libzvbi.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzvbi.so.0
libzvbi.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzvbi.so
libzvbi-chains.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzvbi-chains.so.0
libzvbi-chains.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzvbi-chains.so
libzmq.so.5 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzmq.so.5
libzip.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzip.so.4
libzip.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzip.so
libzephyr.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzephyr.so.4
libzeitgeist-2.0.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzeitgeist-2.0.so.0
libzeitgeist-1.0.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzeitgeist-1.0.so.1
libzbar.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzbar.so.0
libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
libz.so.1 (libc6) => /lib/i386-linux-gnu/libz.so.1
libz.so.1 (libc6) => /usr/lib32/libz.so.1
libz.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libz.so

Those last 4 are all links that resolve to:
/lib/x86_64-linux-gnu/libz.so.1.2.8
/lib/i386-linux-gnu/libz.so.1.2.8
/usr/lib32/libz.so.1.2.8
/lib/x86_64-linux-gnu/libz.so.1.2.8

Hi,
It seems not linking libz.
Please add below config into your .pro file:
LIBS += -lOpenPGP -lgmp -lgmpxx -lbz2 -lz

O.K. - wow!  Hit the magic combo.  Thanks.
Last night I tried all combinations of including -lz, not including -lz, including -lz in different places...  With the Qt 5.9 downloaded from the Qt build servers, it would have just a few errors like the following when putting -lz in front of -lOpenPGP, and hundreds of errors when putting -lz behind -lOpenPGP.  Last night I built Qt 5.11 from source using the -system-zlib configure option, and with -lz in front it produced similar errors as before:
g++ -Wl,-O1 -Wl,-rpath,/opt/Qt5.11/lib -o app codeform.o mainwindow.o  blah blah blah moc_mainwindow.o   -lgmp -lgmpxx -lbz2 -lz -ldl -lOpenPGP -lgcrypt -lgpgme -lgpg-error -L/home/mango/app/OpenPGP -L/opt/Qt5.11/lib -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread
/usr/bin/ld: /home/mango/app/OpenPGP/libOpenPGP.a(pgpzlib.o): undefined reference to symbol 'inflateInit2_'
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
Makefile:547: recipe for target 'app' failed
but... with -lz behind -lOpenPGP (still in front of the Qt libs), it now compiles and runs.
VICTORY!
Thanks for helping me through.

Hey,
Thanks for the libz linking issue.
More of a OpenPGP usage question this time:
I'm performing:
gpgme_ctx_t   ctx;
gpgme_error_t err;
gpgme_data_t  keydata;
initGpgme();
gpgme_new( &ctx );
gpgme_set_protocol( ctx, GPGME_PROTOCOL_OpenPGP );
gpgme_set_armor( ctx, 1 );
gpgme_data_new(&keydata);

gpgme_op_keylist_start( ctx, NULL, 0 );
//...
gpgme_op_export( ctx, "mykey", GPGME_EXPORT_MODE_MINIMAL, keydata );
gpgme_data_seek( keydata, 0, SEEK_SET );
gpgme_data_type_t dt = gpgme_data_identify(keydata,0);
qDebug( "keydata type %d %s", dt, dt == GPGME_DATA_TYPE_PGP_KEY ?
"That's a PGP KEY" : "unexpected type" );
char buf[8192];
ssize_t sz = gpgme_data_read( keydata, buf, 8192 );
qDebug( "Read %ld bytes", sz );
QByteArray ba( buf, sz );
qDebug( "%s", qPrintable( QString::fromUtf8( ba ) ) );
qDebug( "Initializing ks" );
OpenPGP::Key ks( ba.toStdString() );

and getting the result:
keydata type 19 That's a PGP KEY
Read 658 bytes
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
mFMEWxrk2hMJKyQDAwIIAQEHAgMEkGSoB7rnvIrDwS7h/90EETbFFgUBOG73NaAe
zxoq3yUuvFq2DDSjPAeqktQVkj4IOt6rw1EgZl1avjOQRJGnX7QD4pK2iH4EExMI
ACcFAlsa5NoCGwMFCQpMuAAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQla8L
V5oZr9nqVAD3VLg/mHCeKiwivzMFFSX5Rs66m8Ta97xVCmZtykstUAD/a4jtuFE+
5VAhE9Wp/nnG1kXpBcOuSKouKaO7lY4Ughu4VwRbGuTaEgkrJAMDAggBAQcCAwQz
aUNd3QfmV82aduJnc3k8cLN7f/eyJ/GwX0yjQLAcaiOLzj5/4tLz6tr6mPHHLpfC
tsU7k9DAPOwf/+ncStyIAwEIB4hnBBgTCAAPBQJbGuTaAhsMBQkKTLgAAAoJEJWv
C1eaGa/Zvw4A/RB4ebfk8k5HcJgyKVwwlJOItkgTR+vdLduoEYJnXR9CAP9bv2kB
emmdhVx4L2witrwOzDtqvDEZcN81Vr/2ydAxiA==
=2M5S
-----END PGP PUBLIC KEY BLOCK-----
Initializing ks
terminate called after throwing an instance of 'std::runtime_error'
what():  Algorithm not found
Leaving me with the impression that I shouldn't be trying to
initialize an OpenPGP::Key object with this data...
If I want to get into the packet structure, what is the normal
approach? with OpenPGP?
Thanks,
On Sat, Jun 9, 2018 at 12:03 AM, Jason Lee<EMAIL_ADDRESS>wrote:

What does ldconfig -p | grep libz say?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/calccrypto/OpenPGP/issues/40#issuecomment-395937755,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEXBcbw4D4wgbG0mfvvoJSqmzQ2kixfNks5t60kBgaJpZM4UhEt8
.

I'm not sure what you mean by

and getting the result: (open the ..., comment formatting thinks the ASCII armor is a quotation)

I passed the key into OpenPGP and gpg, and both showed that it is a bad key:
$ ./OpenPGP list key
terminate called after throwing an instance of 'std::runtime_error'
  what():  Error: Input string length is not a multiple of 4.
Aborted (core dumped)

$ gpg --list-packets --verbose < key
gpg: invalid radix64 character 3A skipped
gpg: CRC error; 36F601 - D8CE52
gpg: [don't know]: invalid packet (ctb=55)

You are using OpenPGP correctly. The string OpenPGP::Key is expecting can be in binary blob or a ASCII armored base64 string.
Are you sure you are using gpgme correctly? Is mykey a good pattern for gpgme_op_export? Did you call gpgme_op_export_start somewhere in the //... to start the export?
As for the error you are getting: Can you modify Key.cpp:124 to show the value? Does it match what you are expecting?

If I want to get into the packet structure, what is the normal approach? with OpenPGP?

Use the inherited PGP::get_packets function to get the list (a typecasted std::vector) of packets
For a given packet, you should use Packet::get_tag to get the type of packet. This number matches the number specified in RFC 4880 and will tell you how to typecast the packet from the generic OpenPGP::Packet::Tag type to a specific OpenPGP::Packet::Tag<number> type.
Check the RFC and/or header to figure out what the packet contains and use the get_* and set_* functions to access and modify the data.

I mean: the output of that code follows, including the ASCII armored data
blob and the terminate message.
I tried binary blob format first (413 bytes, as delivered from
gpgme_op_export() ), but got the same result - and when I looked into the
Key constructors I only saw input for std::string, so that's why I switched
over to ASCII armored format.

Are you sure you are using gpgme correctly?

Frankly, no.  I haven't gotten a completely intelligible result from
gpgme_op_export() yet, but some things do seem to track.  For instance:
"mykey" gets listed by gpg -k, and when I delete it from the keyring, then
gpgme_op_export() returns no data.  If I create multiple keys with the name
"mykey" then I get the expected multiple of data back from gpgme_op_export()

413 bytes for one key, 826 bytes for two, etc. These are ECDSA keys, if
that makes a difference? I am making OpenPGP with gpg-compatible. Also, for
the key info that gpgme does reveal:

qDebug( "Examining subkey:" );
          qDebug( "           keyid: %s", subkey->keyid            );

          qDebug( "Can authenticate: %d", subkey->can_authenticate );

          qDebug( "     Can certify: %d", subkey->can_certify      );

          qDebug( "     Can encrypt: %d", subkey->can_encrypt      );

          qDebug( "        Can sign: %d", subkey->can_sign         );

          qDebug( "     Card number: %s", subkey->card_number      );

          qDebug( "           Curve: %s", subkey->curve            );

          qDebug( "        Disabled: %d", subkey->disabled         );

          qDebug( "         Expired: %d", subkey->expired          );

          qDebug( "         Expires: %ld",subkey->expires          );

          qDebug( "     fingerprint: %s", subkey->fpr              );

          qDebug( "         invalid: %d", subkey->invalid          );

          qDebug( "     is card key: %d", subkey->is_cardkey       );

          qDebug( "        is de vs: %d", subkey->is_de_vs         );

          qDebug( "    is qualified: %d", subkey->is_qualified     );

          qDebug( "         keygrip: %s", subkey->keygrip          );

          qDebug( "          length: %d", subkey->length           );

          qDebug( "         revoked: %d", subkey->revoked          );

          qDebug( "          secret: %d", subkey->secret           );

          qDebug( "       timestamp: %ld",subkey->timestamp        );

that all seems to track correctly.
My impression from here:
https://www.gnupg.org/documentation/manuals/gpgme/Exporting-Keys.html is
that gpgme_op_export() is a blocking call, whereas gpgme_op_export_start()
returns immediately so other processing can take place in parallel and then
gpgme_wait() will ensure the result is complete before proceeding, but
returns the same data as the blocking call... it's a pattern they seem to
use many places. Am I interpreting that wrong?
So, in a big HMMMMM moment, I've imported the gnupg suite of source code as
git modules in my project and built them to the recent tags (2.2.8 for gpg,
1.11.1 for gpgme, etc.), tried to get the app to link and run with those
builds that are installed in /usr/local, and didn't really succeed - the
gpgme context in my app still reports running /usr/bin/gpg2 with version
2.1.11, but... behavior has changed, and now I'm not getting an exception
when passing the blob to OpenPGP:Key ks( ba.toStdString() ); I did put a std
::cout << "size " << size << " version " << version << " time " << time << "
pka " << pka << "\n"; in Packets/Key.cpp:124, but that's not triggering
anymore. After I make ks, I: qDebug( "ks.keyid():%s", qPrintable( QString::
fromStdString( ks.keyid() ) ) ); and that shows: ks.keyid():�� W� ��  ,
still not thrilling, but not crashing, either...
I do think I want to go "full build control" on this, gpg changes too much
across versions and I'd much rather just pick a version and run with its
quirks, the whole library wrangling thing is just a mess, though.

I have no idea how to use gpgme (one of the reasons why I wrote OpenPGP), but I think you are interpreting the documentation correctly.
I do not recognize a lot of the values you printed with qDebug. The OpenPGP standard does not have a card_number field. I do not know if GPG calculates that or gets it from the key data directly. Could that be the reason why its failing? GPG might have added fields to the standard, causing OpenPGP to fail, since it doesn't know how to handle these fields.
Also, elliptic curves were not fully implemented in this library. I got some pull requests for reading, storing, and writing elliptic curve values, but that was it. I don't think there is any code to do computations with them.

I'm fine using gpgme for most things, keeping secret keys on the keyring,
signing, verifying, trust models, etc. but... I want to extract the public
keys and communicate them "bare" (like in X9.62 or similar format) to other
users, without all the OpenPGP wrappings, and use those public keys to
validate signatures.  That extraction of the bare public key is where gpgme
is failing me at the moment... they seem to be intentionally avoiding it.
This library wrangling of the various gpg versions is also a real mess.
When gpg builds from the git repo, it installs itself to /usr/local/bin
which puts it in-front of the /usr/bin in my path and screws up things like
apt-get because it fails when you run it, demanding a newer libgcrypt than
it finds in the default path, seems the /usr/local/lib path doesn't get
priority location like /usr/local/bin did.
On Sat, Jun 9, 2018 at 6:14 PM, Jason Lee<EMAIL_ADDRESS>wrote:

I have no idea how to use gpgme (one of the reasons why I wrote OpenPGP),
but I think you are interpreting the documentation correctly.
I do not recognize a lot of the values you printed with qDebug. The
OpenPGP standard does not have a card_number field. I do not know if GPG
calculates that or gets it from the key data directly. Could that be the
reason why its failing? GPG might have added fields to the standard,
causing OpenPGP to fail, since it doesn't know how to handle these fields.
Also, elliptic curves were not fully implemented in this library. I got
some pull requests for reading, storing, and writing elliptic curve values,
but that was it. I don't think there is any code to do computations with
them.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/calccrypto/OpenPGP/issues/40#issuecomment-396002536,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEXBcStELcR94teG3SNHksw9t_5zv2BMks5t7EjIgaJpZM4UhEt8
.

Give this a try.

Same result, binary or ASCII, for what it's worth, here's the binary blob
shown as hex:
keydata type 19 That's a PGP KEY
Read 412 bytes
9853045b1ae4da13092b24030302080101070203049064a807bae7bc8ac3c12ee1ffdd041136c5160501386ef735a01ecf1a2adf252ebc5ab60c34a33c07aa92d415923e083adeabc35120665d5abe33904491a75fb403e292b6887e04131308002705025b1ae4da021b0305090a4cb800050b09080702061508090a0b020416020301021e01021780000a091095af0b579a19afd9ea5400f754b83f98709e2a2c22bf33051525f946ceba9bc4daf7bc550a666dca4b2d5000ff6b88edb8513ee5502113d5a9fe79c6d645e905c3ae48aa2e29a3bb958e14821bb857045b1ae4da12092b24030302080101070203043369435ddd07e657cd9a76e26773793c70b37b7ff7b227f1b05f4ca340b01c6a238bce3e7fe2d2f3eadafa98f1c72e97c2b6c53b93d0c03cec1fffe9dc4adc8803010807886704181308000f05025b1ae4da021b0c05090a4cb800000a091095af0b579a19afd9bf0e00fd107879b7e4f24e47709832295c30949388b6481347ebdd2ddba81182675d1f4200ff5bbf69017a699d855c782f6c22b6bc0ecc3b6abc311970df3556bff6c9d03188
ks.keyid():�� W� ��
Also, for what it's worth, I think I found the PGP RFC 4880-5.5 key output
code in: gnupg/g10/build-packet.c:458 (tag 2.2.8) do_key( out, ctb,
PKT_public_key *pk );
On Sat, Jun 9, 2018 at 8:09 PM, Jason Lee<EMAIL_ADDRESS>wrote:

Give this
https://github.com/calccrypto/OpenPGP/commit/f78f8546369d4a7c10fd6fb88e03510532544246
a try.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/calccrypto/OpenPGP/issues/40#issuecomment-396008090,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEXBcX1XAHqDeL_NN6k3ui5kT_GA0kgaks5t7GOigaJpZM4UhEt8
.

The key id is messed up because it is in binary. You have to use hexlify to get it to print in hex.
We might not be doing the same thing. When I run
std::cout << OpenPGP::Key(unhexlify("9853045b1ae4da13092b24030302080101070203049064a807bae7bc8ac3c12ee1ffdd041136c5160501386ef735a01ecf1a2adf252ebc5ab60c34a33c07aa92d415923e083adeabc35120665d5abe33904491a75fb403e292b6887e04131308002705025b1ae4da021b0305090a4cb800050b09080702061508090a0b020416020301021e01021780000a091095af0b579a19afd9ea5400f754b83f98709e2a2c22bf33051525f946ceba9bc4daf7bc550a666dca4b2d5000ff6b88edb8513ee5502113d5a9fe79c6d645e905c3ae48aa2e29a3bb958e14821bb857045b1ae4da12092b24030302080101070203043369435ddd07e657cd9a76e26773793c70b37b7ff7b227f1b05f4ca340b01c6a238bce3e7fe2d2f3eadafa98f1c72e97c2b6c53b93d0c03cec1fffe9dc4adc8803010807886704181308000f05025b1ae4da021b0c05090a4cb800000a091095af0b579a19afd9bf0e00fd107879b7e4f24e47709832295c30949388b6481347ebdd2ddba81182675d1f4200ff5bbf69017a699d855c782f6c22b6bc0ecc3b6abc311970df3556bff6c9d03188")).show() << std::endl;
I get:
Old: Public-Key (Tag 6)
    Version: 4 - New
    Creation Time: Fri Jun 8 20:19:38 UTC 2018
    Public Key Algorithm: ECDSA (pka 19)
    ECDSA brainpoolP256r1
    ECDSA ec point: 049064a807bae7bc8ac3c12ee1ffdd041136c5160501386ef735a01ecf1a2adf252ebc5ab60c34a33c07aa92d415923e083adeabc35120665d5abe33904491a75f
Old: User ID (Tag 13)
    User ID: Ⓐ
Old: Signature (Tag 2)
    Version: 4
    Signature Type: Positive certification of a User ID and Public-Key packet (type 0x13)
    Public Key Algorithm: ECDSA (pka 19)
    Hash Algorithm: SHA256 (hash 8)
    Hashed Sub:
        Signature Creation Time Subpacket (sub 2) (4 octets)
            Creation Time: Fri Jun 8 20:19:38 UTC 2018
        Key Flags Subpacket (sub 27) (1 octets)
            Flag - This key may be used to certify other keys (key 0x01)
            Flag - This key may be used to sign data (key 0x02)
        Key Expiration Time Subpacket (sub 9) (4 octets)
            Key Expiration Time: Wed Nov 29 20:19:38 UTC 2023
        Preferred Symmetric Algorithms Subpacket (sub 11) (4 octets)
            sym alg - AES256 (sym 9)
            sym alg - AES192 (sym 8)
            sym alg - AES128 (sym 7)
            sym alg - TRIPLEDES (sym 2)
        Preferred Hash Algorithms Subpacket (sub 21) (5 octets)
            hash alg - SHA256 (hash 8)
            hash alg - SHA384 (hash 9)
            hash alg - SHA512 (hash 10)
            hash alg - SHA224 (hash 11)
            hash alg - SHA1 (hash 2)
        Preferred Compression Algorithms Subpacket (sub 22) (3 octets)
            comp alg - ZLIB {RFC1950} (comp 2)
            comp alg - BZip2 {BZ2} (comp 3)
            comp alg - ZIP {RFC1951} (comp 1)
        Features Subpacket (sub 30) (1 octets)
            Flag - Modification Detection (packets 18 and 19) (feat 1)
        Key Server Preferences Subpacket (sub 23) (1 octets)
            Flag - NO-MODIFY (key 0x80)
    Unhashed Sub:
        Issuer Subpacket (sub 16) (8 octets)
            Key ID: 95af0b579a19afd9
    Hash Left 16 Bits: ea54
    ECDSA r (247 bits): 54b83f98709e2a2c22bf33051525f946ceba9bc4daf7bc550a666dca4b2d50
    ECDSA s (255 bits): 6b88edb8513ee5502113d5a9fe79c6d645e905c3ae48aa2e29a3bb958e14821b
Old: Public-Subkey (Obsolete Comment Packet) (Tag 14)
    Version: 4 - New
    Creation Time: Fri Jun 8 20:19:38 UTC 2018
    Public Key Algorithm: ECDH (pka 18)
    ECDH brainpoolP256r1
    ECDH ec point: 043369435ddd07e657cd9a76e26773793c70b37b7ff7b227f1b05f4ca340b01c6a238bce3e7fe2d2f3eadafa98f1c72e97c2b6c53b93d0c03cec1fffe9dc4adc88
Old: Signature (Tag 2)
    Version: 4
    Signature Type: Subkey Binding Signature (type 0x18)
    Public Key Algorithm: ECDSA (pka 19)
    Hash Algorithm: SHA256 (hash 8)
    Hashed Sub:
        Signature Creation Time Subpacket (sub 2) (4 octets)
            Creation Time: Fri Jun 8 20:19:38 UTC 2018
        Key Flags Subpacket (sub 27) (1 octets)
            Flag - This key may be used to encrypt communications (key 0x04)
            Flag - This key may be used to encrypt storage (key 0x08)
        Key Expiration Time Subpacket (sub 9) (4 octets)
            Key Expiration Time: Wed Nov 29 20:19:38 UTC 2023
    Unhashed Sub:
        Issuer Subpacket (sub 16) (8 octets)
            Key ID: 95af0b579a19afd9
    Hash Left 16 Bits: bf0e
    ECDSA r (253 bits): 107879b7e4f24e47709832295c30949388b6481347ebdd2ddba81182675d1f42
    ECDSA s (255 bits): 5bbf69017a699d855c782f6c22b6bc0ecc3b6abc311970df3556bff6c9d03188

Very nice, that is indeed the key - correct creation time, brainpoolP256r1
curve and all... trying .show() now, and I get the same, thank you, this is
awesome!
Now, if I understand correctly, the ECDH ec point: data of the public key
is all that's really needed to verify the a signature with the private key
(assuming you know the algorithm, curve, etc...) the next big fun will be
reconstructing a key from just that data and using it.
Thanks again - good progress for the day for me.
Mike
keydata type 19 That's a PGP KEY
Read 412 bytes
9853045b1ae4da13092b24030302080101070203049064a807bae7bc8ac3c12ee1ffdd041136c5160501386ef735a01ecf1a2adf252ebc5ab60c34a33c07aa92d415923e083adeabc35120665d5abe33904491a75fb403e292b6887e04131308002705025b1ae4da021b0305090a4cb800050b09080702061508090a0b020416020301021e01021780000a091095af0b579a19afd9ea5400f754b83f98709e2a2c22bf33051525f946ceba9bc4daf7bc550a666dca4b2d5000ff6b88edb8513ee5502113d5a9fe79c6d645e905c3ae48aa2e29a3bb958e14821bb857045b1ae4da12092b24030302080101070203043369435ddd07e657cd9a76e26773793c70b37b7ff7b227f1b05f4ca340b01c6a238bce3e7fe2d2f3eadafa98f1c72e97c2b6c53b93d0c03cec1fffe9dc4adc8803010807886704181308000f05025b1ae4da021b0c05090a4cb800000a091095af0b579a19afd9bf0e00fd107879b7e4f24e47709832295c30949388b6481347ebdd2ddba81182675d1f4200ff5bbf69017a699d855c782f6c22b6bc0ecc3b6abc311970df3556bff6c9d03188
ks.show():Old: Public-Key (Tag 6) Version: 4 - New
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Public Key Algorithm: ECDSA (pka 19)
ECDSA brainpoolP256r1
ECDSA ec point:
049064a807bae7bc8ac3c12ee1ffdd041136c5160501386ef735a01ecf1a2adf252ebc5ab60c34a33c07aa92d415923e083adeabc35120665d5abe33904491a75f
Old: User ID (Tag 13)
User ID: Ⓐ
Old: Signature (Tag 2)
Version: 4
Signature Type: Positive certification of a User ID and Public-Key packet
(type 0x13)
Public Key Algorithm: ECDSA (pka 19)
Hash Algorithm: SHA256 (hash 8)
Hashed Sub:
Signature Creation Time Subpacket (sub 2) (4 octets)
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Key Flags Subpacket (sub 27) (1 octets)
Flag - This key may be used to certify other keys (key 0x01)
Flag - This key may be used to sign data (key 0x02)
Key Expiration Time Subpacket (sub 9) (4 octets)
Key Expiration Time: Wed Nov 29 20:19:38 UTC 2023
Preferred Symmetric Algorithms Subpacket (sub 11) (4 octets)
sym alg - AES256 (sym 9)
sym alg - AES192 (sym 8)
sym alg - AES128 (sym 7)
sym alg - TRIPLEDES (sym 2)
Preferred Hash Algorithms Subpacket (sub 21) (5 octets)
hash alg - SHA256 (hash 8)
hash alg - SHA384 (hash 9)
hash alg - SHA512 (hash 10)
hash alg - SHA224 (hash 11)
hash alg - SHA1 (hash 2)
Preferred Compression Algorithms Subpacket (sub 22) (3 octets)
comp alg - ZLIB {RFC1950} (comp 2)
comp alg - BZip2 {BZ2} (comp 3)
comp alg - ZIP {RFC1951} (comp 1)
Features Subpacket (sub 30) (1 octets)
Flag - Modification Detection (packets 18 and 19) (feat 1)
Key Server Preferences Subpacket (sub 23) (1 octets)
Flag - NO-MODIFY (key 0x80)
Unhashed Sub:
Issuer Subpacket (sub 16) (8 octets)
Key ID: 95af0b579a19afd9
Hash Left 16 Bits: ea54
ECDSA r (247 bits):
54b83f98709e2a2c22bf33051525f946ceba9bc4daf7bc550a666dca4b2d50
ECDSA s (255 bits):
6b88edb8513ee5502113d5a9fe79c6d645e905c3ae48aa2e29a3bb958e14821b
Old: Public-Subkey (Obsolete Comment Packet) (Tag 14)
Version: 4 - New
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Public Key Algorithm: ECDH (pka 18)
ECDH brainpoolP256r1
ECDH ec point:
043369435ddd07e657cd9a76e26773793c70b37b7ff7b227f1b05f4ca340b01c6a238bce3e7fe2d2f3eadafa98f1c72e97c2b6c53b93d0c03cec1fffe9dc4adc88
Old: Signature (Tag 2)
Version: 4
Signature Type: Subkey Binding Signature (type 0x18)
Public Key Algorithm: ECDSA (pka 19)
Hash Algorithm: SHA256 (hash 8)
Hashed Sub:
Signature Creation Time Subpacket (sub 2) (4 octets)
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Key Flags Subpacket (sub 27) (1 octets)
Flag - This key may be used to encrypt communications (key 0x04)
Flag - This key may be used to encrypt storage (key 0x08)
Key Expiration Time Subpacket (sub 9) (4 octets)
Key Expiration Time: Wed Nov 29 20:19:38 UTC 2023
Unhashed Sub:
Issuer Subpacket (sub 16) (8 octets)
Key ID: 95af0b579a19afd9
Hash Left 16 Bits: bf0e
ECDSA r (253 bits):
107879b7e4f24e47709832295c30949388b6481347ebdd2ddba81182675d1f42
ECDSA s (255 bits):
5bbf69017a699d855c782f6c22b6bc0ecc3b6abc311970df3556bff6c9d03188
On Sat, Jun 9, 2018 at 9:37 PM, Jason Lee<EMAIL_ADDRESS>wrote:

The key id is messed up because it is in binary. You have to use hexlify
to get it to print in hex.
We might not be doing the same thing. When I run
std::cout << OpenPGP::Key(unhexlify("9853045b1ae4da13092b2403030208
0101070203049064a807bae7bc8ac3c12ee1ffdd041136c5160501386ef7
35a01ecf1a2adf252ebc5ab60c34a33c07aa92d415923e083adeabc35120
665d5abe33904491a75fb403e292b6887e04131308002705025b1ae4da02
1b0305090a4cb800050b09080702061508090a0b020416020301021e0102
1780000a091095af0b579a19afd9ea5400f754b83f98709e2a2c22bf3305
1525f946ceba9bc4daf7bc550a666dca4b2d5000ff6b88edb8513ee55021
13d5a9fe79c6d645e905c3ae48aa2e29a3bb958e14821bb857045b1ae4da
12092b24030302080101070203043369435ddd07e657cd9a76e26773793c
70b37b7ff7b227f1b05f4ca340b01c6a238bce3e7fe2d2f3eadafa98f1c7
2e97c2b6c53b93d0c03cec1fffe9dc4adc8803010807886704181308000f
05025b1ae4da021b0c05090a4cb800000a091095af0b579a19afd9bf0e00
fd107879b7e4f24e47709832295c30949388b6481347ebdd2ddba8118267
5d1f4200ff5bbf69017a699d855c782f6c22b6bc0ecc3b6abc311970df3556bff6c9d03188")).show()
<< std::endl;
I get:
Old: Public-Key (Tag 6)
Version: 4 - New
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Public Key Algorithm: ECDSA (pka 19)
ECDSA brainpoolP256r1
ECDSA ec point: 049064a807bae7bc8ac3c12ee1ffdd041136c5160501386ef735a01ecf1a2adf252ebc5ab60c34a33c07aa92d415923e083adeabc35120665d5abe33904491a75f
Old: User ID (Tag 13)
User ID: Ⓐ
Old: Signature (Tag 2)
Version: 4
Signature Type: Positive certification of a User ID and Public-Key packet (type 0x13)
Public Key Algorithm: ECDSA (pka 19)
Hash Algorithm: SHA256 (hash 8)
Hashed Sub:
Signature Creation Time Subpacket (sub 2) (4 octets)
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Key Flags Subpacket (sub 27) (1 octets)
Flag - This key may be used to certify other keys (key 0x01)
Flag - This key may be used to sign data (key 0x02)
Key Expiration Time Subpacket (sub 9) (4 octets)
Key Expiration Time: Wed Nov 29 20:19:38 UTC 2023
Preferred Symmetric Algorithms Subpacket (sub 11) (4 octets)
sym alg - AES256 (sym 9)
sym alg - AES192 (sym 8)
sym alg - AES128 (sym 7)
sym alg - TRIPLEDES (sym 2)
Preferred Hash Algorithms Subpacket (sub 21) (5 octets)
hash alg - SHA256 (hash 8)
hash alg - SHA384 (hash 9)
hash alg - SHA512 (hash 10)
hash alg - SHA224 (hash 11)
hash alg - SHA1 (hash 2)
Preferred Compression Algorithms Subpacket (sub 22) (3 octets)
comp alg - ZLIB {RFC1950} (comp 2)
comp alg - BZip2 {BZ2} (comp 3)
comp alg - ZIP {RFC1951} (comp 1)
Features Subpacket (sub 30) (1 octets)
Flag - Modification Detection (packets 18 and 19) (feat 1)
Key Server Preferences Subpacket (sub 23) (1 octets)
Flag - NO-MODIFY (key 0x80)
Unhashed Sub:
Issuer Subpacket (sub 16) (8 octets)
Key ID: 95af0b579a19afd9
Hash Left 16 Bits: ea54
ECDSA r (247 bits): 54b83f98709e2a2c22bf33051525f946ceba9bc4daf7bc550a666dca4b2d50
ECDSA s (255 bits): 6b88edb8513ee5502113d5a9fe79c6d645e905c3ae48aa2e29a3bb958e14821b
Old: Public-Subkey (Obsolete Comment Packet) (Tag 14)
Version: 4 - New
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Public Key Algorithm: ECDH (pka 18)
ECDH brainpoolP256r1
ECDH ec point: 043369435ddd07e657cd9a76e26773793c70b37b7ff7b227f1b05f4ca340b01c6a238bce3e7fe2d2f3eadafa98f1c72e97c2b6c53b93d0c03cec1fffe9dc4adc88
Old: Signature (Tag 2)
Version: 4
Signature Type: Subkey Binding Signature (type 0x18)
Public Key Algorithm: ECDSA (pka 19)
Hash Algorithm: SHA256 (hash 8)
Hashed Sub:
Signature Creation Time Subpacket (sub 2) (4 octets)
Creation Time: Fri Jun 8 20:19:38 UTC 2018
Key Flags Subpacket (sub 27) (1 octets)
Flag - This key may be used to encrypt communications (key 0x04)
Flag - This key may be used to encrypt storage (key 0x08)
Key Expiration Time Subpacket (sub 9) (4 octets)
Key Expiration Time: Wed Nov 29 20:19:38 UTC 2023
Unhashed Sub:
Issuer Subpacket (sub 16) (8 octets)
Key ID: 95af0b579a19afd9
Hash Left 16 Bits: bf0e
ECDSA r (253 bits): 107879b7e4f24e47709832295c30949388b6481347ebdd2ddba81182675d1f42
ECDSA s (255 bits): 5bbf69017a699d855c782f6c22b6bc0ecc3b6abc311970df3556bff6c9d03188
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/calccrypto/OpenPGP/issues/40#issuecomment-396012612,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEXBca9CS124nlqKYgddjRz6xqbrQH7dks5t7HhCgaJpZM4UhEt8
.


[BUG] When trying to verifyCredential or verifyPresentation, it fails with Error: wrong signature length.

Current Behavior
I created vcJwt with createVerifiableCredentialJwt and vpJwt with createVerifiablePresentationJwt which are at did-jwt-vc module. And I tried to verifyCredential, verifyPresentation which are at did-resolver to verify vcJwt, vpJwt. But both fails at verifyJWT->verifyJWSDecoded->VerifierAlgorithm->verifyES256K->toSignatureObject (these functions are in did-jwt module.) with Error: wrong signature length.
Expected Behavior
verifyJWT should pass with vcJwt and vpJwt.
Failure Information
It's error stack is described at Current Behavior section. I debugged why it failed and found that vcJwt, vpJwt which are created by createVerifiableCredentialJwt and createVerifiablePresentationJwt had 65 length signature when they are decodedJwt. At toSignatureObject, it checks that rawSig.length is 65 when recoverable is true, and if it's 64 when it's not recoverable. But always passing recoverable = false which is default. vcJwt and vpJwt always failed verifying because their signature length were 65. So when I added toSignatureObject function call with recoverable = true at verifyES256K function, the verification passed to both of them.
Steps to Reproduce
For example, just for vcJwt and verifyCredential,

Create vcJwt with createVerifiableCredentialJwt. (did-jwt-vc)
Verify vcJwt with verifyCredential. (did-resolver)
You'll get Error: wrong signature length. error message.

There might be some confusion about the algorithms used for the JWT.
What parameters are you using for createVerifiableCredentialJwt?

I used createVerifiableCredentialJwt(vcPayload, issuer). And my arguments were like below.
vcPayload
const myDid = "did:ethr:xxxx";
const claim = {
    test: {
        aaa: "aaa",
        bbb: "bbb",
    },
};

const vcPayload: JwtCredentialPayload = {
    sub: myDid,
    vc: {
        "@context": ["https://www.w3.org/2018/credentials/v1"],
        type: ["VerifiableCredential", "MyCustomCredential"],
        credentialSubject: claim,
    },
};

issuer
const issuer: Issuer = new EthrDID({
    identifier: "my ethereum address",
    privateKey: "my ethereum privatekey",
    chainNameOrId: 5777
}) as Issuer;

I see,
It appears that there is indeed a mismatch between the default signing algorithm that EthrDID uses for JWT (ES256K-R) and the one that createVerifiableCredentialJwt uses by default (ES256K) if no algorithm is specified.
This would not be a problem if an EthrDID instance actually specified the algorithm it uses, but it seems that it does not. That is a bug that should be raised in ethr-did.
There are a few options to work around this issue.

Let createVerifiableCredentialJwt know about the signer algorithm by specifying a header option:

const credential = await createVerifiableCredentialJwt(vcPayload, issuer, { header: { alg: 'ES256K-R' } })

You can treat the EthrDID instance as an Issuer and make it provide an alg:

const issuer: Issuer = new EthrDID({/*...*/}) as Issuer;
issuer.alg = 'ES256K-R' // add this line

This will let createVerifiableCredentialJwt know which algorithm is actually in use.

You can force your EthrDID instance to sign with a different signer (ES256K):

import { ES256KSigner } from "did-jwt";

const signer = ES256KSigner("my ethereum privatekey", false);
const issuer: Issuer = new EthrDID({
    identifier: "my ethereum address",
    signer: signer, // initialize with a signer instead of a private key
    chainNameOrId: 5777
}) as Issuer;

Thanks for the clear reason and the options to solve it. They all worked fine. So do you have plan to match the signing algorithm with EthrDID?


RFC 8187 - Character Encoding for Headers

Hot off the presses (September 2017) https://tools.ietf.org/html/rfc8187
Indicating Character Encoding and Language for HTTP Header Field Parameters
/cc @Tratcher @blowdart @halter73

Hmm, interesting choices. It only applies to key value pairs within headers, and is ASCII compatible, so I don't foresee making any changes to Kestrel. Microsoft.Net.Http.Headers in HttpAbstractions looks like the most obvious consumer/producer of such values. ContentDispositionHeaderValue already supports this because it was designed for use in multipart MIME bodies: https://github.com/aspnet/HttpAbstractions/blob/5128efe0e88eaa176d4231ff62d754de59bb0edd/src/Microsoft.Net.Http.Headers/ContentDispositionHeaderValue.cs#L347
Move to HttpAbstractions?

Moved https://github.com/aspnet/HttpAbstractions/issues/940


Integration with conductor-oss v3.16.0+

Long time this repository has not been updated. Any plans on working with conductor-oss v3.16.0+?

As I am currently occupied with other projects, there are no immediate plans for the same.
However, I would not mind if you would like to contribute.

Sounds fair! Will work on this and share a PR for your review


[Issue]: The reason why the bwd kernel is not fused

Problem Description
There is code in the reverse kernel code repository to fuse the two operators dk_dv and dq, but it is not enabled. I want to know the reason. Is it because the performance is not as good as the current implementation, or is there a problem with the fusion code itself?
Operating System
Ubuntu22.04.3
CPU
AMD Ryzen 9 5900HX
GPU
MI300X
ROCm Version
ROCm 6.3.0, ROCm 6.2.4
ROCm Component
No response
Steps to Reproduce
No response
(Optional for Linux users) Output of /opt/rocm/bin/rocminfo --support
No response
Additional Information
No response

The removal is for code cleanup. The removed fused kernel is not well-tested nor well-optimized, and thus its performance is also
The fused kernel approach is more like a new feature due to its considerable effort to do it right and then do it fast.
They'll be back once we have better understanding of fused kernel performances.


product.image errors (when image is null)

When dealing with a Shopify product, you can occasionally run into a product with no image. What I would expect this to do is something like:
product.image # null

Instead an undefined method error is raised, so I have to wrap code in if product.respond_to?(:image) ... end which is rather obnoxious.

so?

This is likely very deep in how activeresource functions. The solution above is what I would advise or use a try(..) if you are on Rails 4. If you can provide a specific use case that would benefit from including the try portion of the code in this lib then we'd certainly consider it


Implement masthead and page navigation.

Implement masthead and page navigation in the strimzi-ui PatternFly.

Designs can be found here: https://marvelapp.com/prototype/6fc0g2j/screen/75598710

Designs can be found here: https://marvelapp.com/prototype/6fc0g2j/screen/75598710


[Snyk] Security upgrade python from 3.5 to 3.12.3

This PR was automatically created by Snyk using the credentials of a real user.![snyk-top-banner](https://github.com/andygongea/OWASP-Benchmark/assets/818805/c518c423-16fe-447e-b67f-ad5a49b5d123)
Snyk has created this PR to fix 2 vulnerabilities in the dockerfile dependencies of this project.
Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.
Snyk changed the following file(s):

base/python/python3.5/Dockerfile

We recommend upgrading to python:3.12.3, as this image has only 205 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.
Vulnerabilities that will be fixed with an upgrade:

Issue
Score

Out-of-bounds Write SNYK-DEBIAN10-LIBWEBP-5893093
  829

Out-of-bounds Write SNYK-DEBIAN10-LIBWEBP-5893093
  829

Out-of-bounds Write SNYK-DEBIAN10-LIBWEBP-5893093
  829

Out-of-bounds Write SNYK-DEBIAN10-LIBWEBP-5893093
  829

Resource Exhaustion SNYK-DEBIAN10-NGHTTP2-5953390
  829

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Resource Exhaustion

Checkmarx One – Scan Summary & Details – 07064ec8-f779-4c8f-964d-b85cdb557f54
New Issues

Severity
Issue
Source File / Package
Checkmarx Insight

CVE-2024-36039
Python-PyMySQL-1.1.0
Vulnerable Package

CVE-2024-29857
Maven-org.bouncycastle:bcprov-jdk15on-1.68
Vulnerable Package

CVE-2024-29857
Maven-org.bouncycastle:bcprov-jdk15on-1.64
Vulnerable Package

CVE-2024-30171
Maven-org.bouncycastle:bcprov-jdk15on-1.64
Vulnerable Package

CVE-2024-30171
Maven-org.bouncycastle:bcprov-jdk15on-1.68
Vulnerable Package

CVE-2024-30172
Maven-org.bouncycastle:bcprov-jdk15on-1.64
Vulnerable Package

CVE-2024-30172
Maven-org.bouncycastle:bcprov-jdk15on-1.68
Vulnerable Package

CVE-2024-35195
Python-requests-2.26.0
Vulnerable Package

CVE-2024-35195
Python-requests-2.31.0
Vulnerable Package

Path_Traversal
/base/oracle-java/utils/list-versions.py: [57](https://github.com/TheRedHatter/vulhub/blob/snyk-fix-9a76ccbc1279d1c452116d476ef28159//base/oracle-java/utils/list-versions.py# L57)
Attack Vector

Fixed Issues

Severity
Issue
Source File / Package

Client_DOM_XSS
/electron/CVE-2018-15685/src/index.html: [17](https://github.com/TheRedHatter/vulhub/blob/snyk-fix-9a76ccbc1279d1c452116d476ef28159//electron/CVE-2018-15685/src/index.html# L17)

CVE-2007-2379
Maven-org.webjars:jquery-3.1.0

CVE-2014-6071
Maven-org.webjars:jquery-3.1.0

CVE-2024-21506
Python-pymongo-4.4.1

Client_Potential_XSS
/electron/CVE-2018-15685/src/index.html: [17](https://github.com/TheRedHatter/vulhub/blob/snyk-fix-9a76ccbc1279d1c452116d476ef28159//electron/CVE-2018-15685/src/index.html# L17)

Path_Traversal
/python/PIL-CVE-2017-8291/app.py: [37](https://github.com/TheRedHatter/vulhub/blob/snyk-fix-9a76ccbc1279d1c452116d476ef28159//python/PIL-CVE-2017-8291/app.py# L37)

Path_Traversal
/base/oracle-java/utils/list-versions.py: [57](https://github.com/TheRedHatter/vulhub/blob/snyk-fix-9a76ccbc1279d1c452116d476ef28159//base/oracle-java/utils/list-versions.py# L57)


Add support for AVIF

SSIA

Great, thanks for the clarification! My use case though requires getting the buffer instead of writing to a file, how can I do this?

Works like a charm, thanks! ❤


refactor(frontend): Remove token store from HeroContent

Motivation
The HeroContent component is using the token store. However it is not needed for its scope since it could directly use the pageToken store.
In fact, in this context, the token store is set as  such: token.set($pageToken). We are not removing this, we are just substituting the store used to provide the same value.
Some of its sub-components use the token store too, but this PR change will not affect them, since we are just reading values that are equals.
We will analyze them in other PRs.

[OISY-99]


Update Developer Guide

Closes #294
Closes #325
Closes #454
This PR adds the Implementation section for Items and Statistics section.
Due to the DG requirements, where each person needs to create at least two types of UML diagrams, the Statistics section currently does not include UML diagrams for @yixiann to fill in.
Please feel free to modify the descriptions as you see fit.

Codecov Report

Merging #528 (39f8ca0) into master (a7cbfae) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 39f8ca0 differs from pull request most recent head c84806a. Consider uploading reports for the commit c84806a to get more accurate results

@@            Coverage Diff            @@
##             master     #528   +/-   ##
=========================================
  Coverage     65.25%   65.25%
  Complexity      737      737
=========================================
  Files           147      147
  Lines          2590     2590
  Branches        282      282
=========================================
  Hits           1690     1690
  Misses          749      749
  Partials        151      151

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Update UI integration tests to use non-standard port

Current UI tests will fail if jupyter lab or any other application
is using port 8888. The issue is resolved by using an explicit
non-registered port >=49152
Fixes #1011

I actually added this into #1020 but it'd just be on the jupyterlab3 branch so this is probably a better idea :) Aside from the port number this is exactly what I changed so LGTM

Saw that after...lol...my bad. Anywho, perhaps using a port in the dynamic range would be better in the long run to avoid any issues with any other applications.


Large message text does not scroll properly

Please consider making a Pull Request if you are capable of doing so. Note that versions before 2.0.0 are no longer supported.
Library Version:
com.afollestad.material-dialogs:core:3.3.0
com.afollestad.material-dialogs:bottomsheets:3.2.1
Affected Device(s):
Google Pixel 4 with Android 11.0 (emulator)
All devices I've tested
Describe the Bug:
If you have large message text that requires scrolling, you can scroll down but you cannot scroll back up. The content does not scroll. Instead, the dialog gets shrunk and dismissed.
See the screen recording in https://github.com/afollestad/material-dialogs/issues/1861
To Reproduce:

Create a bottom sheet dialog.
Add an extremely long message.
Scroll to the bottom, then try to scroll back up. The content does not scroll. Instead, the dialog gets shrunk and dismissed.

        MaterialDialog(requireContext(), BottomSheet())
            .show {
                title("My Title")
                message(text = "TODO: put an extremely long message here that will require scrolling")
            }

Expected Behavior:
The message content should behave like a nested scroll. I was able to fix it by creating a custom view with a nested scroll view, but I had to recreate all the styling of the original message content and I no longer had the grey divider below the title when scrolling down.

Update: I found a much simpler fix using a Kotlin extension (only works on API 21+),
fun MaterialDialog.fixScrollingIssue() {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        findViewById<DialogScrollView>(R.id.md_scrollview_content).apply {
            isNestedScrollingEnabled = true
        }
    }
}


Which framework do you use?

Hi @dusty-nv ,
I'm new to IA and computer Vision. I trained myself with YOLOv3, with the darknet framework.
I just finished your tutoriel with Hello AI world for the Jetson nano, and I was wondering : which framework do I use when I use SSD-MobileNet-V2?
The reason is I'm trying to use the jetson nano for a part of an autonomous car (a prototype so way smaller) by using real-time object detection, and I'm currently thinking about what framework to use on the jetson, what model to use (YoloV3-tiny or SSD-MobileNet-V2).
Thanks for your response,

Hi @elementdl, the SSD-Mobilenet-v2 model from Hello AI World is from TensorFlow and was converted using this tool:  https://github.com/AastaNV/TRT_object_detection

Hi @dusty-nv,
Thank you for your response.
I was wondering, the librairy jetson.inference, is it a library directly for the jetson nano or is it a specific a library for the project hello ai world?
Because, in your tutorial it's very easy to chose a model for object detection or recognition, but it's mandatory to chose specific models.  Let's say I would like to use the Yolov3-tiny model. Is there some library in python like jetson.infence that allows me to use this model on the jetson nano?
Sincerely,

The jetson.inference library uses TensorRT underneath for accelerated inferencing on Jetson platforms, including Nano/TX1/TX2/Xavier.  TensorRT can load models from frameworks trained with caffe, TensorFlow, PyTorch, or models in ONNX format.
That said, there is also typically some pre-/post-processing code required to support the models.  Pre-processing typically includes conversion from RGBA to planar NCHW format that the DNN's expect, in addition to mean pixel subtraction.  Post-processing is interpretation of the DNN outputs, for example bounding box clustering for detection models.
The pre-/post-processing support isn't included in jetson.inference for YOLO, however there is a TensorRT sample for YOLO included in JetPack 4.3 - you can find it on your Jetson at /usr/src/tensorrt/samples/python/yolov3_onnx


Customisable shortcuts

What makes the feature necessary?
Not sure is it possible or not (not sure if this is enhancing or adding according to what says in the contributing guide), but adding such a feature would largely improve productivity. For example, now deleting a page on the sidebar does not have a shortcut. It would be great if the user can assign shortcuts to items available in the right-click menu.
How would the feature work?
Just like all other apps out there, have a separate settings section for shortcuts.

no.
for features available through the notion-enhancer (e.g. toggling the extra sidebar or tabs), related hotkeys have been made customisable through the menu.
general hotkey customisation of builtin parts of notion is out of scope:

every action would need to be programmed manually to be available, there are no available hooks
there's no way to disable notion's existing hotkeys


Fix typo in file name

Signed-off-by: Jim Brennan<EMAIL_ADDRESS>Somehow I missed this typo in the filename: GpuEquivalenExpressions.scala s/b GpuEquivalentExpressions.scala.

build


Configure Sonarlint scan exclusions

The SonarLint plugin in IDEA can ignore some files during the scan through 'File Exclusions', and the Sonarqube has a related configuration: 'property("sonar.exclusions",...)' to achieve this.
I tried adding this configuration in sonarProperty but it didn't work. Does this plugin support the setting of exclusions?

@EricaSSC, have you tried sonar.issue.ignore.multicriteria property? Please see an article about it. BTW this plugin ignores generated files by using this mechanism.

Suppose I want SonarLint to ignore all DTO and Enum files during the code analysis process. In SonarQube configuration, we can use 'multicriteria' to ignore particular rules across certain files, or use 'exclusions' to prevent SonarQube from scanning all DTO files.
sonarqube {
    properties {
        property "sonar.issue.ignore.multicriteria", "S111"
        property "sonar.issue.ignore.multicriteria.S111.ruleKey", "java:S111"
        property "sonar.issue.ignore.multicriteria.S111.resourceKey", "**/*.java"
        property "sonar.exclusions", "src/main/java/com/**/dto/**"
    }
}

I have attempted to use similar configurations in sonarLint, but it didn't work.
sonarLint {
    sonarProperty("sonar.issue.ignore.multicriteria", "e1")
    sonarProperty("sonar.issue.ignore.multicriteria.e1.ruleKey", "*")
    sonarProperty("sonar.issue.ignore.multicriteria.e1.resourceKey", "src/main/java/com/**/dto/**")
    sonarProperty("sonar.exclusions", "src/main/java/com/**/dto/**")
}

So, is the reason that this plugin does not support sonar-project.properties configuration?

@EricaSSC I finally found what's wrong. Please try this:
sonarLint {
    sonarProperty("sonar.issue.ignore.multicriteria", "e1")
    sonarProperty("sonar.issue.ignore.multicriteria.e1.ruleKey", "*")
    sonarProperty("sonar.issue.ignore.multicriteria.e1.resourceKey", "com/**/dto/**") // without `src/main/java/`
}

I created a simpler way to ingore files. Please use version 3.1.0 and the new functionality:
sonarLint {
  ignoredPaths.add('**/dto/**') // ignore all files which relative path matches `**/dto/**` glob for all rules
  rules {
    rule('java:S100') {
      ignoredPaths.add('**/dto/**') // ignore all files which relative path matches `**/dto/**` glob for rule `java:S100`
    }
  }
}

These ignore functionality still expect patterns to be without src/main/java.


Alpha variants of colors are missing

Is there a reason why the alpha variants are being skipped here? https://github.com/mrcaidev/tailwindcss-radix-colors/blob/d89731ea7c17d721456bf0b4d2a31deb7d268064/src/index.js#L147
As stated by one of the maintainers, this is the reason they exist:

The A variants are alpha variants. This means that essentially they are to be used on top of background that may vary in colours.
They have been created in a way that makes them remain as close as possible to the original color but with baked-in alpha.
https://github.com/radix-ui/website/discussions/473#discussioncomment-3732170

Fixed!
Handling alpha variants was a little tricky at first, and I was thinking about building a prototype of plugin ASAP.
Now alpha variants is available in v0.4.0.

Silly question that I don't see documented.
How do you use these?
I'm trying text-gray-a1 etc. but it's not found.

How do you use these?

text-graya-1 text-graydarka-1

Thanks, I was confused by radix using this notation:
/* Alpha colors */
var(--red-a1);
var(--red-a2);


Add custom control to map

How can I access to map.controls and push new element into Google Map?
https://developers.google.com/maps/documentation/javascript/controls#CustomPositioning

Please write exactly what you want, as there is a lot of information on your ref. Also be sure that you have an access to any google api props, aso just read an google api and documentation and issues of this library.

I solved the problem. Thanks

I ran into the same problem. Can you tell us how you solved the problem?

If someone stumbles across this, here is the solution:
Use the [onGoogleApiLoaded(map, maps)] (https://github.com/istarkov/google-map-react/tree/27cf164beacb78a5b4111ae6a645a83c61377d09#ongoogleapiloaded-func) callback to get the map-object.


Support for non-implicit AddTags in Create* API calls

[x] ✋ I have searched the open/closed issues and my issue is not listed.

Please describe your question here
We've been receiving notifications from AWS due to a policy change where the AddTags permission is no longer implicit for Create* API calls. We've reviewed the latest v4 IAM policy for the AWS load balancer controller and apparently it is missing some permissions in order to avoid those notifications. After August these calls will start failing.
Checking the latest IAM policy it apparently adds a new statement to cover that change:
   {
        "Effect": "Allow",
        "Action": [
            "elasticloadbalancing:AddTags"
        ],
        "Resource": [
            "arn:aws:elasticloadbalancing:*:*:targetgroup/*/*",
            "arn:aws:elasticloadbalancing:*:*:loadbalancer/net/*/*",
            "arn:aws:elasticloadbalancing:*:*:loadbalancer/app/*/*"
        ],
        "Condition": {
            "StringEquals": {
                "elasticloadbalancing:CreateAction": [
                    "CreateTargetGroup",
                    "CreateLoadBalancer"
                ]
            },
            "Null": {
                "aws:RequestTag/elbv2.k8s.aws/cluster": "false"
            }
        }
    }

Do you plan to update the policy accordingly and create a new version?
Provide a link to the example/module related to the question
https://github.com/aws-ia/terraform-aws-eks-blueprints/blob/v4/modules/kubernetes-addons/aws-load-balancer-controller/data.tf
Additional context

Attaching screeshot of the email received from AWS for reference.

As per my understanding, elasticloadbalancing:AddTags is only used while creating new load balancers. That's why I think we don't need to worry much. But it will be good if the fix can also be backported to the v4 blueprints.

Attaching screeshot of the email received from AWS for reference.
As per my understanding, elasticloadbalancing:AddTags is only used while creating new load balancers. That's why I think we don't need to worry much. But it will be good if the fix can also be backported to the v4 blueprints.

Yes, that's correct, I believe the only case that is covering that statement is the first creation of the load balancers.

Does this solution going to be applied to older versions of eks-blueprints?

is it going to be applied to older versions of eks-blueprints

No, this is the new home of EKS Blueprint addons and changes will be made here (if required)

@cdesch We did not have it yet, but I see that the issue has been fixed in v1.6.0 as per @bryantbiggs comment. We're going to bump it.


refactor: change API of Settings#load/store to use folder path

Contains
Since it is the decision of Settings what file types to write, the file path should not be passed in from the outside. Instead, just the folder path can be controlled.
As a consequence, the exact file name(s) are an implementation detail and no longer need to be exposed by Settings.
How to test
Ensure gradlew test is still passing.
When starting the launcher and changing settings, they should be properly picked up after a re-start.

Contributes to #522
Based on #665

 Launcher improvements

@skaldarnar Just merged https://github.com/MovingBlocks/TerasologyLauncher/pull/665 and resolved conflicts here to the best of my knowledge. Would be nice if you could take a quick look at the merge commit and do a sanity check.


Android Studio (not installed)

I was install Flutter,  My computer was windows 7, when I run "flutter doctor ", got a error :
Doctor summary (to see all details, run flutter doctor -v):
[âˆš] Flutter (Channel beta, v0.1.5, on Microsoft Windows [Version 6.1.7601], lo
cale zh-CN)
[âˆš] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[X] Android Studio (not installed)
[âˆš] Connected devices (1 available)
! Doctor found issues in 1 category.
I'm a Android developer. Use Android studio 3.0.1
But the flutter cannot find my android studio.
what can I do ?
how to fix it ?
thank you!

The "flutter doctor" can find the Android SDK, can find Android Platform, can find JAVA ...
why cannot find my android studio? my studio always there all the time……

I was down new android studio from google, and reinstall android studio 3.0.1, but still got the same error......

me too


Adding the 'provides' directive

Fixes #32

@CloCkWeRX Would you be willing to change the provides directive to add a respond_to check?  Solaris 11 is still used.
provides :replace_or_add  if respond_to?(:provides)   for instance.
Thanks,
Mark


mimalloc slower than default macOS allocator

While looking at crystal-lang/crystal#12879, I noticed mimalloc (2.0.9) is quite a bit slower than the default macOS allocator:
$ command time -l env DYLD_INSERT_LIBRARIES=/opt/local/lib/libmimalloc.dylib crystal build src/ktistec/server.cr
       87.03 real        58.90 user        27.26 sys
<PHONE_NUMBER>  maximum resident set size
                   0  average shared memory size
                   0  average unshared data size
                   0  average unshared stack size
             4960241  page reclaims
               19511  page faults
                   0  swaps
                   0  block input operations
                   0  block output operations
                   0  messages sent
                   0  messages received
                1198  signals received
                3384  voluntary context switches
              258169  involuntary context switches
<PHONE_NUMBER>45  instructions retired
<PHONE_NUMBER>33  cycles elapsed
<PHONE_NUMBER>  peak memory footprint

command time -l env crystal build src/ktistec/server.cr
       65.25 real        45.84 user        19.13 sys
<PHONE_NUMBER>  maximum resident set size
                   0  average shared memory size
                   0  average unshared data size
                   0  average unshared stack size
             3163809  page reclaims
               17493  page faults
                   0  swaps
                   0  block input operations
                   0  block output operations
                   0  messages sent
                   0  messages received
                1200  signals received
                2977  voluntary context switches
              178920  involuntary context switches
<PHONE_NUMBER>20  instructions retired
<PHONE_NUMBER>35  cycles elapsed
<PHONE_NUMBER>  peak memory footprint

For some background information, Crystal is a compiler with an LLVM backend. The project I'm building is available here and Crystal can be installed via Homebrew/MacPorts under the name crystal (run shards install in the project directory once).

Performance seems to be similar as of version 2.1.4.


Parsing of XML with empty struct fails

My interpretation of the XML-RPC specifications is that struct tags can be empty and indeed it happened to me of retrieving XML-RPC responses with empty struct tags.
Parsing such responses with this library gives an error from erlsom because the xsd template does not allow this. Also fixing the template your library gives another error
I have done a very small patch to handle this situation, if you want I can submit a pull request

Yes, please send pull request(s). Ideally break up the commits. Thanks for noticing this!

Merged, thanks


Set APP_URL for Heroku

When I created new app on Heroku and set APP_URL, I got a following error.
 !    Usage: heroku config:set KEY1=VALUE1 [KEY2=VALUE2 ...]
 !    Must specify KEY and VALUE to set.

heroku apps:info recently give me two urls, Git URL and Web URL.
ex.
Git URL:       https://git.heroku.com/TESTAPP-cedar-14.git
Web URL:       https://TESTAPP-cedar-14.herokuapp.com/
To set APP_URL I modified regexp to get only Web URL.
Is there more better way to do?

LGTM! :+1:


Disable Notification Centre Alerts Config

Thanks for this awesome workflow.
But the alerts show in the NC every time I gen a new password are really annoying.
Is there any config to disable them?

There isn't currently an option to disable them, no, but you can delete the 3 Post Notification actions in the workflow.
I'll add the option in the next version.

Added in v2.0


New signed up users are not added to intercom until after they log-in

intercom-rails version:
0.4.0
Rails version:
5.2.1
Devise version:
4.4.3

Expected behavior
I would expect that after a user has signed up they are created as a user on the intercom platform, irrelevant of them logging in. (unless someone can justify why this should be the desired behavior)
Actual behavior
After a user signs up they are not created as a user on the intercom platform. Only once they have logged in are they created as a user on intercom.
IntercomRails.config do |config|
  # == Intercom app_id
  #
  config.app_id = ENV["INTERCOM_APP_ID"]

  # == Intercom session_duration
  #
  # config.session_duration = 300000
  # == Intercom secret key
  # This is required to enable Identity Verification, you can find it on your Setup
  # guide in the "Identity Verification" step.
  #
  config.api_secret = ENV["INTERCOM_SECRET_KEY"]

  # == Enabled Environments
  # Which environments is auto inclusion of the Javascript enabled for
  #
  config.enabled_environments = ["staging", "production"]

  # == Current user method/variable
  # The method/variable that contains the logged in user in your controllers.
  # If it is `current_user` or `@user`, then you can ignore this
  #
  # config.user.current = Proc.new { current_user }
  # config.user.current = [Proc.new { current_user }]

  # == Include for logged out Users
  # If set to true, include the Intercom messenger on all pages, regardless of whether
  # The user model class (set below) is present.
  config.include_for_logged_out_users = true

  # == User model class
  # The class which defines your user model
  #
  config.user.model = Proc.new { User }

  # == Lead/custom attributes for non-signed up users
  # Pass additional attributes to for potential leads or
  # non-signed up users as an an array.
  # Any attribute contained in config.user.lead_attributes can be used
  # as custom attribute in the application.
  # config.user.lead_attributes = %w(ref_data utm_source)

  # == Exclude users
  # A Proc that given a user returns true if the user should be excluded
  # from imports and Javascript inclusion, false otherwise.
  #
  config.user.exclude_if = Proc.new { |current_user| current_user.super_admin? }

  # == User Custom Data
  # A hash of additional data you wish to send about your users.
  # You can provide either a method name which will be sent to the current
  # user object, or a Proc which will be passed the current user.
  #
  config.user.custom_data = {
    :role => Proc.new { |current_user| current_user.role },
    :is_confirmed => Proc.new { |current_user| current_user.confirmed? },
    :number_of_submissions => Proc.new { |current_user| current_user.candidate_profile.submissions.count if current_user.candidate? },
    :sign_in_count => Proc.new { |current_user| current_user.sign_in_count },
    :first_name => Proc.new { |current_user|
      if current_user.candidate?
        current_user.candidate_profile.first_name
      elsif current_user.company_user?
        current_user.company_user_profile.first_name
      end
    },
    :last_name => Proc.new { |current_user|
      if current_user.candidate?
        current_user.candidate_profile.last_name
      elsif current_user.company_user?
        current_user.company_user_profile.last_name
      end
    }
  }

  # == Current company method/variable
  # The method/variable that contains the current company for the current user,
  # in your controllers. 'Companies' are generic groupings of users, so this
  # could be a company, app or group.
  #
  # config.company.current = Proc.new { current_company }
  #
  # Or if you are using devise you can just use the following config
  #
  config.company.current = Proc.new { current_user.company }

  # == Exclude company
  # A Proc that given a company returns true if the company should be excluded
  # from imports and Javascript inclusion, false otherwise.
  #
  # config.company.exclude_if = Proc.new { |app| app.subdomain == 'demo' }

  # == Company Custom Data
  # A hash of additional data you wish to send about a company.
  # This works the same as User custom data above.
  #
  config.company.custom_data = {
    :number_of_talent_fit_projects => Proc.new { |company| company.talent_fit_projects.count },
  }

  # == Company Plan name
  # This is the name of the plan a company is currently paying (or not paying) for.
  # e.g. Messaging, Free, Pro, etc.
  #
  # config.company.plan = Proc.new { |current_company| current_company.plan.name }

  # == Company Monthly Spend
  # This is the amount the company spends each month on your app. If your company
  # has a plan, it will set the 'total value' of that plan appropriately.
  #
  # config.company.monthly_spend = Proc.new { |current_company| current_company.plan.price }
  # config.company.monthly_spend = Proc.new { |current_company| (current_company.plan.price - current_company.subscription.discount) }

  # == Custom Style
  # By default, Intercom will add a button that opens the messenger to
  # the page. If you'd like to use your own link to open the messenger,
  # uncomment this line and clicks on any element with id 'Intercom' will
  # open the messenger.
  #
  config.inbox.style = :custom
  #
  # If you'd like to use your own link activator CSS selector
  # uncomment this line and clicks on any element that matches the query will
  # open the messenger
  # config.inbox.custom_activator = '.intercom'
  #
  # If you'd like to hide default launcher button uncomment this line
  # config.hide_default_launcher = true
end

After doing some more digging this is not an issue with this gem, this is the way intercom is built to work. I would love someone to comment and explain why intercom works in this way, but not an issue with this Gem. Closing issue.


Is there anyone application based on GTK under Windows

I am considered using GTK builds a cross platform of application. It seems like GTK tools works well under Linux, but it is quite worried me if it does under Windows. So, is there a successed commercial GTK application under Windows?

I think that wxWidgets use gtk, and work under Windows.


GEOMESA-1213 Fix HBase GeoServer plugin deployment

Restores the shaded Guava version, and updates installation
instructions.
Signed-off-by: Matthew Zimmerman<EMAIL_ADDRESS>

looks good to me


CompareBytesInWord keccak hint

Resolves #479
Implementation is from @MaksymMalicki in https://github.com/NethermindEth/cairo-vm-go/pull/462 , just adapted hintcode and left only the hint

@TAdev0 , can you resolve the conflicts in this. Then we can merge.


fix: Removing comment doesn't work

fix #9054

@mergify queue

@mergify requeue

@mergify queue


Strange results for AA2fold translation

Hi! First of all, thank you for making a fantastic tool!
Second, after working exclusively with the embedding outputs for a while I've started playing around with the translation feature of ProstT5. However, the results are somewhat confusing. For example:
Embedding the protein GCF_000019165_1_000000000001_1122_cterminaldomain, of length 298, yields a fold result much longer than the input sequence:

dvvvvcpdpvnvvvvvvvvvcvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvppddpvvcvvvvddddpvvvvvvvvvvvvvvvvvvvvvvvvvpdpddpvvvvvvvvcvvvvvddfpdppppgddqpdpvsvvvvvvvvvcvvvvvvvvvvvvvvvvvvcvvcvvvvvvvvvvvvvvcvvpvcpvvdpvvvvvvvvvlvvllvvlvvpddpvlvvllvvlvvllvvlvvlvpddqvvqqvvlvvvqvvqvvvdadpvggddsggdgsvvsnvvsvvsnvvsvvsnsvsssvdrdddppdddddddpvvvvvvvvvvpdpvvvpdpvvvvvvvvvvvvvvvvvvvpddpvvvvvvvvvvvvvvvvvvvvvddpvvvvvvvvvvvvvcvvvdppppdddddddddpvrvvvvvvvvvvvvvvvvvvvvvvdGdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd

Also of note:

The long, often terminal stretches of just "d". Other sequences seem to swap "d" for "v", and in this sequence specifically these long "v" stretches show up in the apparent "meat" of the translated sequence as well.
The appearance of uppercase letters (the G right before the terminal "d" stretch)

Is this output normal, and if so, could you offer some guidance as to its interpretation?

Update: I've tried the same set of sequences with translate.py, which returns the right length and without any uppercase characters, but the long stretches of "d" and "v" persist:

dvvvvcpppvnvvvvvvvvvcvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvcvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvpddddddddddddddddddddddddddddddddpvvvvvvvvvvvcvvvvvvvvvvvvvvvvvvcvvcvvvvvvvvvvvvvvcvvpvvvvddpvvvvvvvvvvvvvvvvvvvpddpvlvvllvvlvvllvvlvvlvpddqvvqqvvqvvvlvvcvvvvnnvvsvvddggdgsvvsnvvsvvsnvvsvvsnvvsvvvd

I've realized after some more digging that your answer in this issue is pertinent here. Is balancing the 3Di classes and retraining the CNN feasible?

Thanks for digging and sorry for the delayed response; yes balancing the 3Di classes and retraining is feasible but I have to admit that it would probably take quite some time before we get to it from our end (sorry); depending on how urgent it is, you could also try a quick hack which does not require finetuning the actual pLM: my colleague Joa put some nice documentation here on how to train a CNN on top of ProstT5 for predicting 3Di from AA-only: https://github.com/mheinzinger/ProstT5/issues/31
You could take the same dataset, invert the input/output (going from AA to 3Di via a CNN trained on top of the encoder) and apply the balancing there (some weighting of the loss function or some upsampling of rare cases).
Hope this helps; good luck!


Bug: Can't launch 1.5

What happened?
when launching game, it crashes. error in log
https://pastebin.com/5sXPmPd9
something to do with mixins
Version
1.5.0
Fabric API Version
No response
Trinkets Version
No response
Relevant log output
No response
Other mods
No response
Additional Information
No response

Another crash log https://pastebin.com/EmFWQd47

@frikinjay The crash report you sent shows that you are indeed using ExpandAbility

Well that didnt take as long as I thought. Artifacts includes expandability. Thanks for the help.

Closing as long-been-resolved.


"Unable to find the file to update" on fresh install

Sharing a note, I get "Unable to find the file to update, please delete any existing share links and try again", or a 403 response. I used to use the old version of the plugin through templater, so I thought it might be due to the old share links, but removing them did not help.
That means it's probably an authentication issue. My user ID is efc89ed13177ef9c8c77729abc03b3cc.
If you have the same issue go to this comment. Continued discussion is of a different issue.

That's very strange - if you've deleted the share link from the note it should create a brand new random one.
That being said you're the first person trying the plugin who is coming from the old Templater version (thank you by the way!) so we might need to do a bit of troubleshooting.
The 403 error comes if you try and update a note owned by another user - for example if you grab one of my public URLs and try and overwrite is.
If you create a brand new note and share it, does it work?

Nope, tried to create an entirely new note for troubleshooting, same error. Tried creating a new vault and it works just fine there (on related note, is there a way to delete notes after uploading? Wouldn't want to fill you storage with junk).

I copied over the .obsidian folder to thew new vault and it stopped working. Might be one of my old plugins, I'll keep looking.

Whatever the problem was, it was resolved by replacing my version of the Share plugin with one installed in a completely new vault.
Mismatch between new uid/old api key or old apikey and new uid?

Excellent! I was halfway through adding detailed debug logging so I could figure out what was going wrong, but I'm glad that it's solved, and the logging will be useful anyway.
All good to close the issue?
Also I'd be keen for any feedback or suggestions for improvement 👍

Ok now this is really weird.
I have my main vault, Main. I created vault A, and copied .obsidian from Main to A. Upload did not work. I uninstalled and reinstalled the plugin. Upload did not work.
I then cerated a new vault B, installed the plugin (this time without copying my .obsidian) and sharing worked. I copied the plugin folder to vault A, sharing worked.
Then I copied it to vault Main, did not work. Then I re-created vault B and copied from B to Main and it still did not work.
Sorry, looks like I might be needing the debugger after all unless I figure out what happened😅

Ok - logging is added, so give it a go and hopefully I can figure out what's going wrong.

Okay doesn't look like it's failing uploads anymore:

A with Main .obsidian.
Clean B with installed Share plugin.

Authenticated with B. Copied plugin to A. A could not share.
Recreated API key with A. A could not share.
Tried sharing with B. Wrong API key (as expected), recreated API key. B could share.
Tried sharing with A. Wrong API key, recreated. A could now share.

Same procedure with my main vault worked this time. Very confured about why it has worked / not worked on specific tries.
A new issue has risen though, now when sharing, the scrips gets stuck at this line.
What can I do to debug this on my end?

Thanks for sharing that - I can replicate the issue so I will debug and solve.  Looks like it might be related to the size of the note itself. I can cause the same failure with 20,000 words of Lorem Ipsum.
No idea regarding the A/B failures 😬 If it does reoccur, we might be able to diagnose now.

As for feedback, first I'd like to thank you for creating such an awesome plugin! Very useful to be able to share notes you've written with others!
As for feedback, the biggest right now is probably math. It doesn't render for me at all on the shared link (I noticed that the MathJax DOM elements contain no inner html, but that's probably a problem for a different issue.)
Features that could be awesome down the line would be some way to crawl-share notes. So you would share a note, and it would recursively share all linked notes (maybe with a directory/tag blacklister in settings to prevent sensitive notes from being shared).

@TheColorman this long note encryption is fixed in 0.2.6.
For your math-heavy note, the method I'm using to get the HTML data from Obsidian seems to have intermittent failures. I think I will need to page through each of the Obsidian viewport views and piece them together that way. I will leave this ticket open.

@TheColorman I can save you the effort of writing a message - I can see from the logs you have the 403 again, and better yet, I can see the exact issue!
Making a fix now, should be live very shortly.

Only happened when I tried to force upload, since normal upload worked fine I decided it wasn't important enough to write in about 😅

Here's the offending line. Fixed now in 0.2.7.
https://github.com/alangrainger/obsidian-share/commit/82be12c215bdb0849d7249e4d1a98e6808be54cd#diff-d6198cff69fcf66b5a1c2b4d4f8e2101a5e9c64dc24bae1a904d49abc2ae4f0cL237-R237

@TheColorman MathJax / LaTeX support is now added in 0.3.2.
You will likely need to Force re-upload one of your notes which includes MathJax to get it to start working, as this will inject the needed styles into your public CSS and purge the cache. Once you've done that the rest of your notes should start working without issues.


Create EnglishAuction.sol

Description
English auction for NFT.
Auction
Seller of NFT deploys this contract.
Auction lasts for 7 days.
Participants can bid by depositing ETH greater than the current highest bidder.
All bidders can withdraw their bid if it is not the current highest bid.
After the auction
Highest bidder becomes the new owner of NFT.
The seller receives the highest bid of ETH.
Fixes #<#119>
Type of change
Please delete options that are not relevant. In order to tick the check box just put x inside them for example [x] like this :

[x] Add a new project

Domain of Contribution
Please delete options that are not relevant. In order to tick the check box just put x inside them for example [x] like this

[x] Project using only Solidity

Checklist ✓
Please delete options that are not relevant. In order to tick the check box just put x inside them for example [x] like this

[x] l have performed a self-review of my own code or work.

Screenshots/Gif (Recommended)

@adielliot37   update the readme file also a/c to the code .


Fix regression bug in JobBase class.

Signed-off-by: Vittorio Cozzolino<EMAIL_ADDRESS>What type of PR is this?
/kind bug
What this PR does / why we need it:
Fix the regression bug mentioned in #324 .
Which issue(s) this PR fixes:
Fixes #324

/lgtm

/lgtm


Remove ARM plugin

Use Intel CPU plugin compiled for ARM instead https://github.com/openvinotoolkit/openvino/tree/master/src/plugins/intel_cpu

Is Intel CPU compiled to ARM has the same performance ?
Also it is little-bit confusion that Intel CPU could run on other CPU architectures, previous name for Intel CPU plugin was more obvious ...
Also what if in future you and team reuse this runtime for ARM Plugin for running in Mali GPU on ARM ?
These all my thoughts on this PR that I believe important to think ...

Is Intel CPU compiled to ARM has the same performance ?

Better performance and more features like dynamic shapes.
We decided that 2 plugins (x64 and ARM) have the same architecture, while only kernels are different (and only optimized kernels, while a lot of generic auto-vectored kernels can be reused), so we have integrated ARM Compute Library into CPU plugin.

previous name for CPU plugin was more obvious ...

Agree, we can think of renaming.

Also what if in future you and team reuse this ARM Plugin for running in Mali GPU on ARM ?

Better to support GPUs of other vendors in GPU plugin just adding one more backend. Currently, GPU plugin already works on top of former clDNN and oneDNN (for dGPUs). Adding ARM Compute Library backend should not be a big deal.


feat(JSON-RPC): add rpc server generator to reduce code duplication

Pull Request type
Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Does this introduce a breaking change?

[ ] Yes
[ ] No

Other information

This change is

Current dependencies on/for this PR:

main

PR #960   👈

This comment was auto-generated by Graphite.


Report a typo in README.md doc(in master branch)

In README.md doc,
(1) I find that in section Version 3 breaking changes said: the ParseResult object no longer depends on the parser.
(2) But I also find in section Basics said:  Note that the result of options.parse should only be used as long as the options object that created it is in scope.
I review the code, and find the ParseResult is independent of parser, so the description in (2) is a typo?

Yes you are right. I missed that later section when I first made that change. Thanks.


[FEATURE 💡] Remove Nike from header in mobile devices

Issue #67  📐

I Mehul have worked for #67

Guidelines 🔐
I accept the fact that I have followed the guidelines and have not copied the codes from around the internet

[x] Contribution Guidelines
[x] Code of Conduct

Issue to be closed 🛅

My pull request closes #67

Screenshots 📷
Here are the pictures of changes that I have made 🔽

Fastastic work @mehulrnsit! I'll be merging it right away.

Make sure to star this repo 🌟 if you liked contributing to it.
You can also follow me for more such amazing projects and opportunities.
I have added the hacktoberfest-accepted tag also

Thanks :)