project-brain-cli 1.0.0__tar.gz → 1.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/PKG-INFO +14 -2
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/README.md +2 -0
- project_brain_cli-1.1.0/pyproject.toml +64 -0
- project_brain_cli-1.1.0/src/project_brain/__init__.py +1 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/cli.py +43 -4
- project_brain_cli-1.1.0/src/project_brain/community.py +26 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/config_loader.py +3 -3
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/PKG-INFO +14 -2
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/SOURCES.txt +1 -0
- project_brain_cli-1.0.0/pyproject.toml +0 -40
- project_brain_cli-1.0.0/src/project_brain/__init__.py +0 -1
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/LICENSE +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/setup.cfg +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/cli_help.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/cli_ui.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/config/__init__.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/__init__.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/analyzer.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/differ.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/analysis.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/environment.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/exports.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/llm.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/models.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/repository.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/explainer.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/explainer_file.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/exporter.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/logger.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/results.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/summarizer.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/llm/__init__.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/llm/provider.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/storage/__init__.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/storage/storage.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/dependency_links.txt +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/entry_points.txt +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/requires.txt +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/top_level.txt +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_advanced_cli.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_advanced_config.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_advanced_diff.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_advanced_edge_cases.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_advanced_explain.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_advanced_export.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_advanced_logging.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_analyzer.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_cli.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_config.py +0 -0
- {project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/tests/test_diff.py +0 -0
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: project-brain-cli
|
|
3
|
-
Version: 1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: Local-first developer intelligence CLI for semantic repository analysis and Git diff understanding.
|
|
5
5
|
Author: Srujan Amaragatti
|
|
6
6
|
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Srujan-Amaragatti05/project-brain
|
|
8
|
+
Project-URL: Repository, https://github.com/Srujan-Amaragatti05/project-brain
|
|
9
|
+
Project-URL: Issues, https://github.com/Srujan-Amaragatti05/project-brain/issues
|
|
10
|
+
Project-URL: Discussions, https://github.com/Srujan-Amaragatti05/project-brain/discussions
|
|
11
|
+
Keywords: cli,git,ast,developer-tools,code-analysis,llm,developer-productivity
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Topic :: Software Development
|
|
16
|
+
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
7
17
|
Requires-Python: >=3.10
|
|
8
18
|
Description-Content-Type: text/markdown
|
|
9
19
|
License-File: LICENSE
|
|
@@ -25,6 +35,8 @@ Dynamic: license-file
|
|
|
25
35
|

|
|
26
36
|

|
|
27
37
|

|
|
38
|
+

|
|
39
|
+

|
|
28
40
|
|
|
29
41
|
---
|
|
30
42
|
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|

|
|
8
8
|

|
|
9
9
|

|
|
10
|
+

|
|
11
|
+

|
|
10
12
|
|
|
11
13
|
---
|
|
12
14
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=65", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "project-brain-cli"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Local-first developer intelligence CLI for semantic repository analysis and Git diff understanding."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
authors = [
|
|
11
|
+
{ name = "Srujan Amaragatti" }
|
|
12
|
+
]
|
|
13
|
+
license = "MIT"
|
|
14
|
+
license-files = ["LICENSE"]
|
|
15
|
+
requires-python = ">=3.10"
|
|
16
|
+
dependencies = [
|
|
17
|
+
"typer",
|
|
18
|
+
"rich",
|
|
19
|
+
"PyYAML",
|
|
20
|
+
"requests"
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
keywords = [
|
|
24
|
+
"cli",
|
|
25
|
+
"git",
|
|
26
|
+
"ast",
|
|
27
|
+
"developer-tools",
|
|
28
|
+
"code-analysis",
|
|
29
|
+
"llm",
|
|
30
|
+
"developer-productivity",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
classifiers = [
|
|
34
|
+
"Programming Language :: Python :: 3",
|
|
35
|
+
"Programming Language :: Python :: 3.10",
|
|
36
|
+
"Environment :: Console",
|
|
37
|
+
"Topic :: Software Development",
|
|
38
|
+
"Topic :: Software Development :: Version Control :: Git",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[project.urls]
|
|
42
|
+
Homepage = "https://github.com/Srujan-Amaragatti05/project-brain"
|
|
43
|
+
Repository = "https://github.com/Srujan-Amaragatti05/project-brain"
|
|
44
|
+
Issues = "https://github.com/Srujan-Amaragatti05/project-brain/issues"
|
|
45
|
+
Discussions = "https://github.com/Srujan-Amaragatti05/project-brain/discussions"
|
|
46
|
+
|
|
47
|
+
[tool.setuptools.dynamic]
|
|
48
|
+
version = {attr = "project_brain.__version__"}
|
|
49
|
+
|
|
50
|
+
[project.scripts]
|
|
51
|
+
project-brain = "project_brain.cli:main"
|
|
52
|
+
brain = "project_brain.cli:main"
|
|
53
|
+
|
|
54
|
+
[tool.setuptools]
|
|
55
|
+
package-dir = {"" = "src"}
|
|
56
|
+
|
|
57
|
+
[tool.setuptools.packages.find]
|
|
58
|
+
where = ["src"]
|
|
59
|
+
|
|
60
|
+
[project.optional-dependencies]
|
|
61
|
+
dev = [
|
|
62
|
+
"pytest",
|
|
63
|
+
"pytest-cov"
|
|
64
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.1.0"
|
|
@@ -11,6 +11,7 @@ import typer.rich_utils
|
|
|
11
11
|
from rich.console import Console
|
|
12
12
|
from rich.panel import Panel
|
|
13
13
|
|
|
14
|
+
from project_brain import __version__
|
|
14
15
|
from project_brain.core.analyzer import analyze_project
|
|
15
16
|
from project_brain.core.config_loader import (DEFAULT_CONFIG, dump_config,
|
|
16
17
|
load_config)
|
|
@@ -42,6 +43,8 @@ from project_brain.cli_ui import (
|
|
|
42
43
|
doctor_panel,
|
|
43
44
|
)
|
|
44
45
|
|
|
46
|
+
from project_brain.community import open_feedback
|
|
47
|
+
|
|
45
48
|
typer.rich_utils.STYLE_HELPTEXT = "bold"
|
|
46
49
|
typer.rich_utils.STYLE_OPTIONS_PANEL_BORDER = "cyan"
|
|
47
50
|
typer.rich_utils.STYLE_COMMANDS_PANEL_BORDER = "cyan"
|
|
@@ -80,23 +83,29 @@ llm_app = typer.Typer(
|
|
|
80
83
|
no_args_is_help=True,
|
|
81
84
|
)
|
|
82
85
|
|
|
86
|
+
community_app = typer.Typer(
|
|
87
|
+
help="Community and ecosystem resources.",
|
|
88
|
+
no_args_is_help=False,
|
|
89
|
+
)
|
|
90
|
+
|
|
83
91
|
app.add_typer(project_app, name="project")
|
|
84
92
|
app.add_typer(diff_app, name="diff")
|
|
85
93
|
app.add_typer(export_app, name="export")
|
|
86
94
|
app.add_typer(llm_app, name="testllm")
|
|
95
|
+
app.add_typer(community_app, name="community")
|
|
87
96
|
|
|
88
97
|
|
|
89
98
|
def version_callback(value: bool):
|
|
90
99
|
if value:
|
|
91
100
|
try:
|
|
92
|
-
version =
|
|
101
|
+
version = __version__
|
|
93
102
|
except Exception:
|
|
94
103
|
version = "unknown"
|
|
95
104
|
typer.echo(f"project-brain version: {version}")
|
|
96
105
|
raise typer.Exit()
|
|
97
106
|
|
|
98
107
|
|
|
99
|
-
@app.callback()
|
|
108
|
+
@app.callback(invoke_without_command=True)
|
|
100
109
|
def main_callback(
|
|
101
110
|
version: bool = typer.Option(
|
|
102
111
|
False,
|
|
@@ -105,9 +114,17 @@ def main_callback(
|
|
|
105
114
|
callback=version_callback,
|
|
106
115
|
is_eager=True,
|
|
107
116
|
help="Show version and exit",
|
|
108
|
-
)
|
|
117
|
+
),
|
|
118
|
+
feedback: bool = typer.Option(
|
|
119
|
+
False,
|
|
120
|
+
"--feedback",
|
|
121
|
+
help="Open GitHub Discussions page",
|
|
122
|
+
is_eager=True,
|
|
123
|
+
),
|
|
109
124
|
):
|
|
110
|
-
|
|
125
|
+
if feedback:
|
|
126
|
+
open_feedback()
|
|
127
|
+
raise typer.Exit()
|
|
111
128
|
|
|
112
129
|
|
|
113
130
|
def require_git_repo(root: Path):
|
|
@@ -635,6 +652,28 @@ def test():
|
|
|
635
652
|
typer.echo(f"✅ Output: {result['output']}")
|
|
636
653
|
typer.echo(f"📦 Models: {result['models'][:5]}")
|
|
637
654
|
|
|
655
|
+
@community_app.callback(invoke_without_command=True)
|
|
656
|
+
def community():
|
|
657
|
+
panel = Panel.fit(
|
|
658
|
+
"""
|
|
659
|
+
[bold cyan]GitHub[/bold cyan]
|
|
660
|
+
https://github.com/Srujan-Amaragatti05/project-brain
|
|
661
|
+
|
|
662
|
+
[bold cyan]PyPI[/bold cyan]
|
|
663
|
+
https://pypi.org/project/project-brain-cli/
|
|
664
|
+
|
|
665
|
+
[bold cyan]Discussions[/bold cyan]
|
|
666
|
+
https://github.com/Srujan-Amaragatti05/project-brain/discussions
|
|
667
|
+
|
|
668
|
+
[bold cyan]Issues[/bold cyan]
|
|
669
|
+
https://github.com/Srujan-Amaragatti05/project-brain/issues
|
|
670
|
+
""",
|
|
671
|
+
title="🧠 project-brain Community",
|
|
672
|
+
border_style="cyan",
|
|
673
|
+
)
|
|
674
|
+
|
|
675
|
+
console.print(panel)
|
|
676
|
+
|
|
638
677
|
|
|
639
678
|
def main():
|
|
640
679
|
app()
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import webbrowser
|
|
2
|
+
from rich.console import Console
|
|
3
|
+
|
|
4
|
+
console = Console()
|
|
5
|
+
|
|
6
|
+
DISCUSSIONS_URL = (
|
|
7
|
+
"https://github.com/Srujan-Amaragatti05/project-brain/discussions"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def open_feedback():
|
|
12
|
+
try:
|
|
13
|
+
opened = webbrowser.open(DISCUSSIONS_URL)
|
|
14
|
+
|
|
15
|
+
if opened:
|
|
16
|
+
console.print(
|
|
17
|
+
"[green]Opened GitHub Discussions in browser.[/green]"
|
|
18
|
+
)
|
|
19
|
+
else:
|
|
20
|
+
raise RuntimeError()
|
|
21
|
+
|
|
22
|
+
except Exception:
|
|
23
|
+
console.print(
|
|
24
|
+
"[yellow]Unable to open browser automatically.[/yellow]"
|
|
25
|
+
)
|
|
26
|
+
console.print(f"\nFeedback URL:\n{DISCUSSIONS_URL}")
|
|
@@ -6,7 +6,7 @@ import yaml
|
|
|
6
6
|
from project_brain.core.logger import log_warning
|
|
7
7
|
|
|
8
8
|
DEFAULT_CONFIG = {
|
|
9
|
-
"version": "1.0",
|
|
9
|
+
"version": "1.1.0",
|
|
10
10
|
"llm": {
|
|
11
11
|
"provider": "none",
|
|
12
12
|
"model": "",
|
|
@@ -24,7 +24,7 @@ DEFAULT_CONFIG = {
|
|
|
24
24
|
"__pycache__/",
|
|
25
25
|
"env/",
|
|
26
26
|
".env/",
|
|
27
|
-
"
|
|
27
|
+
"project_brain_cli.egg-info/",
|
|
28
28
|
"tests/",
|
|
29
29
|
"test/",
|
|
30
30
|
],
|
|
@@ -54,7 +54,7 @@ DEFAULT_CONFIG = {
|
|
|
54
54
|
"__pycache__/",
|
|
55
55
|
"env/",
|
|
56
56
|
".env/",
|
|
57
|
-
"
|
|
57
|
+
"project_brain_cli.egg-info/",
|
|
58
58
|
"tests/",
|
|
59
59
|
"test/",
|
|
60
60
|
],
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: project-brain-cli
|
|
3
|
-
Version: 1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: Local-first developer intelligence CLI for semantic repository analysis and Git diff understanding.
|
|
5
5
|
Author: Srujan Amaragatti
|
|
6
6
|
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Srujan-Amaragatti05/project-brain
|
|
8
|
+
Project-URL: Repository, https://github.com/Srujan-Amaragatti05/project-brain
|
|
9
|
+
Project-URL: Issues, https://github.com/Srujan-Amaragatti05/project-brain/issues
|
|
10
|
+
Project-URL: Discussions, https://github.com/Srujan-Amaragatti05/project-brain/discussions
|
|
11
|
+
Keywords: cli,git,ast,developer-tools,code-analysis,llm,developer-productivity
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Topic :: Software Development
|
|
16
|
+
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
7
17
|
Requires-Python: >=3.10
|
|
8
18
|
Description-Content-Type: text/markdown
|
|
9
19
|
License-File: LICENSE
|
|
@@ -25,6 +35,8 @@ Dynamic: license-file
|
|
|
25
35
|

|
|
26
36
|

|
|
27
37
|

|
|
38
|
+

|
|
39
|
+

|
|
28
40
|
|
|
29
41
|
---
|
|
30
42
|
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=65", "wheel"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "project-brain-cli"
|
|
7
|
-
dynamic = ["version"]
|
|
8
|
-
description = "CLI-first developer intelligence tool"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
authors = [
|
|
11
|
-
{ name = "Srujan Amaragatti" }
|
|
12
|
-
]
|
|
13
|
-
license = "MIT"
|
|
14
|
-
license-files = ["LICENSE"]
|
|
15
|
-
requires-python = ">=3.10"
|
|
16
|
-
dependencies = [
|
|
17
|
-
"typer",
|
|
18
|
-
"rich",
|
|
19
|
-
"PyYAML",
|
|
20
|
-
"requests"
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
[tool.setuptools.dynamic]
|
|
24
|
-
version = {attr = "project_brain.__version__"}
|
|
25
|
-
|
|
26
|
-
[project.scripts]
|
|
27
|
-
project-brain = "project_brain.cli:main"
|
|
28
|
-
brain = "project_brain.cli:main"
|
|
29
|
-
|
|
30
|
-
[tool.setuptools]
|
|
31
|
-
package-dir = {"" = "src"}
|
|
32
|
-
|
|
33
|
-
[tool.setuptools.packages.find]
|
|
34
|
-
where = ["src"]
|
|
35
|
-
|
|
36
|
-
[project.optional-dependencies]
|
|
37
|
-
dev = [
|
|
38
|
-
"pytest",
|
|
39
|
-
"pytest-cov"
|
|
40
|
-
]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.0.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/exports.py
RENAMED
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/llm.py
RENAMED
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/doctor_checks/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain/core/explainer_file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/requires.txt
RENAMED
|
File without changes
|
{project_brain_cli-1.0.0 → project_brain_cli-1.1.0}/src/project_brain_cli.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|