Andrew Block
291c17fcc5
Enabled auth and support http registries for OCI
...
Signed-off-by: Andrew Block <andy.block@gmail.com>
5 years ago
Scott Rigby
4c8a3faaa2
Fix import
...
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Scott Rigby
b6bf3905f3
Implement reusable GetTagMatchingVersionOrConstraint
...
Largely borrowed from (IndexFile).Get. However there is not currently a nice
way to make this code also usable to the repo package, as IndexFile depends on
a list of index Entries containing a nexted version.
We could refactor this later to somehow use the same shared function, but for
now keeping separate.
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Andrew Block
4f62d3dc1b
Started work on 'helm pull'
...
Signed-off-by: Andrew Block <andy.block@gmail.com>
5 years ago
Andrew Block
df98e18eb7
Working oci code without providing versions
...
Signed-off-by: Andrew Block <andy.block@gmail.com>
5 years ago
Andrew Block
0fae7f5008
Updated tag resolver logic
...
Signed-off-by: Andrew Block <andy.block@gmail.com>
5 years ago
Andrew Block
834a11db56
Added registryClient to resolver
...
Signed-off-by: Andrew Block <andy.block@gmail.com>
5 years ago
Scott Rigby
e3f2fb4235
Add OCI tag verions to the Dependency object before Resolve. TODO: fix HTTP HTTPS error for local registries
...
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Andrew Block
9a7c362dd1
Initial tag listing support
...
Signed-off-by: Andrew Block <andy.block@gmail.com>
5 years ago
Scott Rigby
3dc9930488
Revert "hack in progress"
...
This reverts commit c0be414e4b8d2928018504c010cb04b1b2450bf3.
Taking a different approach, but keep this work in git history for now until we
know the new approach works.
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Scott Rigby
0d2f0116ea
hack in progress
...
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Allen Bai
e3897ad6b1
registry/client: use NewClientWithDockerFallback from oras v1.1.0-rc3
...
Uses NewClientWithDockerFallback to always use Docker config and
modifies go.mod to use oras v1.1.0-rc3.
Ref:
- https://github.com/helm/helm/pull/10536#issuecomment-1010144075
- https://github.com/oras-project/oras-go/pull/92
Signed-off-by: Allen Bai <abai@redhat.com>
5 years ago
Allen Bai
e08a9270be
HELM_REGISTRY_CONFIG: change default file of registry config to config.json
...
Changes default registry config file from `registry.json` to
`config.json`. This aligns with the `config.json` that is widely used in docker.
Closes: https://github.com/helm/helm/issues/10156
Related: https://github.com/helm/helm/issues/10122
Signed-off-by: Allen Bai <abai@redhat.com>
5 years ago
Josh Wolf
fed0d31bf5
ensure consistency in registry client Push/Pull function signatures. ensure message is only printed when tags contain a replaced character
...
Signed-off-by: Josh Wolf <josh@wolfs.io>
5 years ago
Scott Rigby
157ac85ab7
Fix typo. Thanks buildbot. Also comments at 80 chars
...
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Josh Wolf
fb0eeebf66
add oci reference validation and tag scoped (+) replacement to registry client Push/Pull
...
Signed-off-by: Josh Wolf <josh@wolfs.io>
5 years ago
Scott Rigby
8424bc2b60
Update registry underscore message with semver note for extra clarity
...
Add newline to registry underscore message
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Scott Rigby
4aacbc44e0
Move plus/underscore change to inside Client. Compare original ref for strict mode
...
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Scott Rigby
472eb6f096
For OCI, convert + to _ before pull, and + to _ before push
...
Signed-off-by: Scott Rigby <scott@r6by.com>
5 years ago
Simon Alling
dd5db7bc40
Remove AssertGoldenBytes test helper
...
The test suite is thereby simplified somewhat.
Signed-off-by: Simon Alling <alling.simon@gmail.com>
5 years ago
Josh Wolf
fae5009382
ensure error is correctly handled when generating chart's oci manifest
...
Signed-off-by: Josh Wolf <josh@joshwolf.dev>
5 years ago
Josh Wolf
d2d8e52401
modify oci chart push/pull manifest test values to represent new order sorted by oras
...
Signed-off-by: Josh Wolf <josh@joshwolf.dev>
5 years ago
Josh Wolf
7cec93d9fb
upgrade oras to 0.5.0, refactor client oci logic to use new oras.Copy()
...
Signed-off-by: Josh Wolf <josh@joshwolf.dev>
5 years ago
Matt Farina
81f0df0ea6
Merge pull request #10182 from spectrocloud/oci-allow-any-media-type
...
changes to support any mediatype for layers on download
5 years ago
Kai Takac
52cbc2f49c
Fix default registry config path of oci protocol provider
...
Signed-off-by: Kai Takac <kai.takac@gmail.com>
5 years ago
LochanRn
9e29f1619b
changes to support any mediatype for layers on download
...
Signed-off-by: LochanRn <rajanaga_ra@srmuniv.edu.in>
5 years ago
Matt Farina
e6a92c4b62
bump version to 3.7
...
Signed-off-by: Matt Farina <matt.farina@suse.com>
(cherry picked from commit 7048ef6b30aa23abdcfcaf523cb4c42dff85add9)
5 years ago
Josh Dolitsky
caa97158d0
Revert moving registry actions back to pkg/
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
77750962d5
Move registry actions back to pkg/
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
0121f6a328
Merge branch 'main' of github.com:helm/helm into hip-6
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
John Howard
82a2abf512
Update oras-go to v0.4.0
...
Signed-off-by: John Howard <howardjohn@google.com>
5 years ago
Matthew Fisher
92bd9558e5
Merge pull request #9998 from bacongobbler/distribution-v3
...
Switch to distribution v3
5 years ago
Josh Dolitsky
82cdb0b793
modify registry test to only listen on loopback
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
f0a528ec05
Merge branch 'main' of github.com:helm/helm into hip-6
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Matthew Fisher
4801818f7c
Switch to distribution v3
...
Signed-off-by: Matthew Fisher <matt.fisher@microsoft.com>
5 years ago
Víctor Cuadrado Juan
84a07a4774
test: Make internal/resolver/resolver_test.go pass on Win
...
TestGetLocalPath() needs Windows-specific expected strings.
Signed-off-by: Víctor Cuadrado Juan <vcuadradojuan@suse.de>
5 years ago
Nicolas De Loof
663c569887
Migrate to oras-go library
...
see https://github.com/deislabs/oras/pull/265
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
5 years ago
Josh Dolitsky
241f23d72a
Better NewOCIPusher test, add ORAS link
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
d296ddf026
Merge branch 'main' of github.com:helm/helm into hip-6
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Kally Fox
f9b1445b63
refactor: use os instead of ioutil's ReadDir
...
Signed-off-by: Kally Fox <kallydev@gmail.com>
5 years ago
Josh Dolitsky
8202ccd699
Remove LoginResult/LogoutResult types
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
593eac8876
Merge branch 'main' of github.com:helm/helm into hip-6
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Matt Farina
8855488272
Merge pull request #9736 from cndoit18/fix-issue-9348
...
fix(dep update): helm dep update is not respecting the "version" stip…
5 years ago
Josh Dolitsky
4884ca0059
revert change related to reading prov file
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
ec84339d44
return errors directly, less lines of code
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
230e37ca52
remove hardcoded oci strings, add constant/util
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
bfa5036a1a
consolidate registry source files
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
4d948b4a06
return err directly from pusher.Push
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
faf7fc5efd
use version.GetUserAgent
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
e856df8a54
provide hint if attempting to push directory
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
04d2da3637
return friendly error if missing scheme
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
35fdc688cd
remove the --with-prov option
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
eba63beab1
move experimental actions to new internal package
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
8f60ee76a5
resolve golint errors
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
24a216d3b2
move pkg/uploader, pkg/pusher to internal
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
4073e4d118
inline data fetching for pull result
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
dd7bc40bc4
one-line JSON unmarshall
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
817ac8ff9f
do not wrap single imports/vars
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
f7247c40ee
Upgrade to oras-go v0.4.0
...
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Josh Dolitsky
00985cad6b
Implement changes proposed in HIP 6
...
For more information, please see the following URL:
https://github.com/helm/community/blob/main/hips/hip-0006.md
Note: OCI support remains experimental, and you are still
required to set HELM_EXPERIMENTAL_OCI=1 in your environment.
Signed-off-by: Josh Dolitsky <josh@dolit.ski>
5 years ago
Martin Hickey
599c071ac7
Merge pull request #9681 from cndoit18/add-max-col-width-parameters
...
support max-col-width parameters
5 years ago
cndoit18
402c7f1a52
fix(dep update): helm dep update is not respecting the "version" stipulated in the requirements
...
Signed-off-by: cndoit18 <cndoit18@outlook.com>
5 years ago
Matt Farina
3415b6e7b8
bump version to v3.6.0
...
Signed-off-by: Matt Farina <matt@mattfarina.com>
(cherry picked from commit af0feeddd91c729aa97327f33c9e3e3109b13561)
5 years ago
cndoit18
a79cad5539
support max-col-width parameters
...
support commands:
- helm chart list
- helm dependency list
Signed-off-by: cndoit18 <cndoit18@outlook.com>
5 years ago
Josh Soref
2bf8fdf45d
chore: Spelling ( #9410 )
...
* spelling: annotate
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: asserts
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: behavior
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: binary
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: contain
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: copied
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: dependency
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: depending
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: deprecated
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: doesn't
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: donot
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: github
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: inputting
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: iteration
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: jabberwocky
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: kubernetes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: length
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: mismatch
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: multiple
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: nonexistent
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: outputs
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: panicking
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: plugins
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: parsing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: porthos
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: regular
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: resource
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: repositories
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: something
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: strict
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: string
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* spelling: unknown
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
6 years ago
Christian
4f1ab5a331
fix windows tests
...
Signed-off-by: Christian Richter <christian@boltares.de>
6 years ago
Adam Reese
657ce552cb
fix(*): Validate metadata semver and printable characters
...
ref: https://github.com/helm/helm/security/advisories/GHSA-c38g-469g-cmgx
* Skip invalid chart versions when reading the repository index file or
when programmatically adding a chart version.
* Adds semver validation and strips non-printable characters and
normalizes spaces for string fields in Metadata.Validate()
* Fixes a unit test that was pulling a remote repo. Now uses a local
repo.
* Fixes ignored error in repo update command
Signed-off-by: Adam Reese <adam@reese.io>
6 years ago
Matt Farina
8082f6db45
bump version to
...
Signed-off-by: Matt Farina <matt@mattfarina.com>
(cherry picked from commit f546ebb1ac )
6 years ago
Matt Farina
49f895db6b
Merge pull request #8843 from bloodorangeio/oci-pull
...
Signed-off-by: Matt Farina <matt@mattfarina.com>
6 years ago
Scott Rigby
c495e88250
Replace Helm Hub with Artifact Hub ( #8626 )
...
* Replace Helm Hub with Artifact Hub
Signed-off-by: Scott Rigby <scott@r6by.com>
* Update link to new doc entry for Monocular compatible search API
Signed-off-by: Scott Rigby <scott@r6by.com>
* Add struct for Artifact Hub data, and return correct URL for both artifact hub instances and backwards compatibility for Monocular search API
Signed-off-by: Scott Rigby <scott@r6by.com>
* Keep default endpoint hub.helm.sh, so the helm org controls the domain. At least until artifacthub moves to CNCF incubation
Signed-off-by: Scott Rigby <scott@r6by.com>
6 years ago
Peter Engelbert
3028c55858
Clean up imports and add doc comments
...
Additionally, revert `NewPull()` to its existing signature.
Signed-off-by: Peter Engelbert <pmengelbert@gmail.com>
6 years ago
Peter Engelbert
3ad08f3ea9
Implement `helm pull` for OCI registries
...
* Implement `helm dep update` for oci dependencies
* New unit tests
* Remove `helm chart pull` command
* New `helm pull` does not depend on registry cache
Signed-off-by: Peter Engelbert <pmengelbert@gmail.com>
6 years ago
Matt Farina
ce4fa95868
bump version to v3.4.0
...
Signed-off-by: Matt Farina <matt@mattfarina.com>
(cherry picked from commit 7090a89efc )
6 years ago
Matt Butcher
fe2d7f7792
this rewrites a whole bunch of old repo URLs to the new repo URL ( #8902 )
...
Signed-off-by: Matt Butcher <matt.butcher@microsoft.com>
6 years ago
bellkeyang
fbc32aea3d
bufix: fix validateNumColons docs
...
Signed-off-by: bellkeyang <bellkeyang@tencent.com>
6 years ago
Matt Farina
ff147e9ed7
Locking file URIs to a version in lockfile
...
Previously, if a range was specified for a file:// url as a
dependency the range would be put in the lockfile. Lockfiles are
designed to pin to a specific version and not support ranges. This
is for reproducibility.
The change here pins to a the specific version of the chart
specified using the file:// when update is run.
Signed-off-by: Matt Farina <matt@mattfarina.com>
6 years ago
Bridget Kromhout
c709e10b32
Reinstating comment that is still accurate
...
Signed-off-by: Bridget Kromhout <bridget@kromhout.org>
6 years ago
Bridget Kromhout
fe40c4bf84
Clarify comments to match practice
...
Signed-off-by: Bridget Kromhout <bridget@kromhout.org>
6 years ago
Matthew Fisher
fc4a11c131
bump version to v3.3
...
Signed-off-by: Matthew Fisher <matt.fisher@microsoft.com>
(cherry picked from commit 5c2dfaad84 )
6 years ago
Peter Engelbert
7e9a83184c
Determine chart digest by manifest ( #8249 )
...
Currently, whenever the chart is printed, the digest of the .tar.gz
content layer is printed as the digest. The manifest digest is important
for OCI purposes, particularly in pushing to a registry.
Resolves #8248 .
Signed-off-by: Peter Engelbert <pmengelbert@gmail.com>
6 years ago
Guangwen Feng
7ec501155d
Fix golint issue
...
Signed-off-by: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
6 years ago
Matthew Fisher
65ee1e0bc1
Merge pull request #7356 from EItanya/helm-7351
...
--registry-config flag is not honored
6 years ago
Matthew Fisher
47feb20042
Merge pull request #8220 from bloodorangeio/fix-helm-chart-list-crash-bug
...
Fix crashing `helm chart list` with large list
6 years ago
Matthew Fisher
67c02d0a6e
Merge pull request #8299 from Hellcatlk/UnitTestCase
...
Add unit test case
6 years ago
ZouYu
9249530b77
Add unit test case
...
Signed-off-by: ZouYu <zouy.fnst@cn.fujitsu.com>
6 years ago
Marc Khouzam
88a3d6eaea
feat(comp): Move custom completions to Cobra 1.0
...
Cobra 1.0 introduces custom Go completions. This commit replaces Helm's
own solution to use Cobra's solution.
This allows to completely remove Helm's internal "completion" package.
Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
6 years ago
Adam Reese
a01adcebfd
Merge pull request #8089 from junaid18183/master
...
Fixes repo parsing
6 years ago
Peter Engelbert
f11e74ee57
Add unit test for man-in-the-middle attack on pull
...
Add a unit test that proves the digest of the received content being
checked. The check should ensure that the digest of the received content
is identical to the digest provided by the manifest in the layers[0]
descriptor. This check is currently implemented in containerd, so the
unit test ensures security in the case a breaking change is made in
containerd.
Signed-off-by: Peter Engelbert <pmengelbert@gmail.com>
6 years ago
Eitan Yarmush
2b882df636
Merge branch 'master' into helm-7351
6 years ago
Peter Engelbert
a0fd1d81f0
Fix crashing `helm chart list` with large list
...
With a large list of charts, `helm chart list` will crash with the
following message:
```
$ helm chart list --debug
Error: open
/home/me/.cache/helm/registry/cache/blobs/sha256/109971e44d63f7fd11fff60d19db41c2429a136943be2e3f8fd3e4c165156536:
too many open files
helm.go:75: [debug] open
/home/me/.cache/helm/registry/cache/blobs/sha256/109971e44d63f7fd11fff60d19db41c2429a136943be2e3f8fd3e4c165156536:
too many open files
```
Signed-off-by: Peter Engelbert <pmengelbert@gmail.com>
6 years ago
Adam Reese
44a2225035
ref(tests): localize unit test fixtures to package
...
Use test fixtures that are in the same package as test.
Signed-off-by: Adam Reese <adam@reese.io>
6 years ago
Matt Butcher
59eed4e81f
feat: make the linter coalesce the passed-in values before running values tests ( #7984 )
...
* fix: make the linter coalesce the passed-in values before running values tests
Signed-off-by: Matt Butcher <matt.butcher@microsoft.com>
* fixed typo
Signed-off-by: Matt Butcher <matt.butcher@microsoft.com>
7 years ago
Juned Memon
95e9e18ab5
Removed scheme
...
Signed-off-by: Juned Memon <junaid18183@gmail.com>
7 years ago
Juned Memon
8cb9ab7095
Fixes repo parsing
...
Signed-off-by: Juned Memon <junaid18183@gmail.com>
7 years ago
Juned Memon
b473f8adec
Fixes repo parsing
...
Signed-off-by: Juned Memon <junaid18183@gmail.com>
7 years ago
Matt Farina
f90b842d3e
Merge branch 'master' into xdg
7 years ago
Matt Butcher
8316a403ed
bump version to v3.2
...
Signed-off-by: Matt Butcher <matt.butcher@microsoft.com>
(cherry picked from commit 7bffac813d )
7 years ago
Matt Farina
2334195a01
Adding Helm env vars where XDG exposed
...
Helm had been exposing XDG based variables to end users. This lead
to confusion. For example, if a user wanted to change the cache
location Helm used should they change the XDG variable? Since this
would be like changing the HOME environment variable the answer
is no.
This change adds HELM_*_HOME environment variables to be used
in addition to XDG ones of the same name. Helm will now look
for the Helm specific variable. If not set, Helm will fall
back to XDG locations. If those are not set a default location
will be used. This keeps XDG in use as a default when present,
provides users with the ability to set the location, and removes
XDG from being exposed to end users to avoid confusion.
Closes #7919
Signed-off-by: Matt Farina <matt@mattfarina.com>
7 years ago
Matt Farina
2139e82c68
Merge pull request #7972 from IppX/bug/6081-bom-in-resource-file
...
Remove utf-8 BOM when loading chart files and helmignore
7 years ago
Raphaël
984d2ac767
fix: write index.yaml file atomically ( #7954 )
...
* fix: write index.yaml file atomically
This refactors the already-existing `AtomicWriteFile` utility
to a central location and uses it to write index files
atomically.
This is done to avoid having half-written index files break
client requests.
Drive-bys:
- Add test for AtomicWriteFile.
- Add test IndexFile.WriteFile.
Signed-off-by: rabadin <rvbadin@gmail.com>
* Review fix: use RenameWithFallback instead of os.Rename
Signed-off-by: rabadin <rvbadin@gmail.com>
Co-authored-by: rabadin <rvbadin@gmail.com>
7 years ago