praisonAI 2.3.73__tar.gz → 2.3.74__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.
- {praisonai-2.3.73 → praisonai-2.3.74}/PKG-INFO +2 -2
- {praisonai-2.3.73 → praisonai-2.3.74}/PraisonAI.egg-info/PKG-INFO +2 -2
- {praisonai-2.3.73 → praisonai-2.3.74}/PraisonAI.egg-info/requires.txt +1 -1
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/skills.py +6 -13
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/main.py +19 -2
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/deploy.py +1 -1
- praisonai-2.3.74/praisonai/version.py +1 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/pyproject.toml +1 -1
- praisonai-2.3.73/praisonai/version.py +0 -1
- {praisonai-2.3.73 → praisonai-2.3.74}/PraisonAI.egg-info/SOURCES.txt +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/README.md +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/__main__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/agent_scheduler.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/agents_generator.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/api/call.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/auto.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/chainlit_ui.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/at_mentions.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/auto_memory.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/autonomy_mode.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/base.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/compare.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/cost_tracker.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/eval.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/external_agents.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/fast_context.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/flow_display.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/git_integration.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/guardrail.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/handoff.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/image.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/interactive_tui.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/knowledge.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/mcp.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/message_queue.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/metrics.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/n8n.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/repo_map.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/router.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/sandbox_executor.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/session.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/slash_commands.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/telemetry.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/todo.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/tools.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/agent_tools.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/inc/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/inc/config.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/inc/models.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/integrations/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/integrations/base.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/profiler.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/scheduler/base.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/scheduler.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/setup/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/setup/build.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/setup/post_install.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/setup.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/test.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/train.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/train_vision.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/agents.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/callbacks.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/chat.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/code.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/colab.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/colab_chainlit.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/context.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/database_config.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/db.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/realtime.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/realtimeclient/__init__.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/realtimeclient/tools.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/ui/sql_alchemy.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/praisonai/upload_vision.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/setup.cfg +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_agents_playbook.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_approval_system.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_basic.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_cli_features.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_double_api_fix.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_n8n_integration.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_phase2_refactor.py +0 -0
- {praisonai-2.3.73 → praisonai-2.3.74}/tests/test_runner.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.74
|
|
4
4
|
Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
|
|
5
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=0.1.
|
|
14
|
+
Requires-Dist: praisonaiagents>=0.1.23
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: instructor>=1.3.3
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.74
|
|
4
4
|
Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
|
|
5
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=0.1.
|
|
14
|
+
Requires-Dist: praisonaiagents>=0.1.23
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: instructor>=1.3.3
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -253,18 +253,11 @@ def add_skills_parser(subparsers) -> None:
|
|
|
253
253
|
Args:
|
|
254
254
|
subparsers: Subparsers object from argparse
|
|
255
255
|
"""
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
help='Manage Agent Skills'
|
|
259
|
-
)
|
|
260
|
-
|
|
261
|
-
skills_subparsers = skills_parser.add_subparsers(
|
|
262
|
-
dest='skills_command',
|
|
263
|
-
help='Skills commands'
|
|
264
|
-
)
|
|
256
|
+
# subparsers is already the skills subparsers object
|
|
257
|
+
# We just need to add the subcommands to it
|
|
265
258
|
|
|
266
259
|
# list command
|
|
267
|
-
list_parser =
|
|
260
|
+
list_parser = subparsers.add_parser(
|
|
268
261
|
'list',
|
|
269
262
|
help='List available skills'
|
|
270
263
|
)
|
|
@@ -275,7 +268,7 @@ def add_skills_parser(subparsers) -> None:
|
|
|
275
268
|
)
|
|
276
269
|
|
|
277
270
|
# validate command
|
|
278
|
-
validate_parser =
|
|
271
|
+
validate_parser = subparsers.add_parser(
|
|
279
272
|
'validate',
|
|
280
273
|
help='Validate a skill directory'
|
|
281
274
|
)
|
|
@@ -286,7 +279,7 @@ def add_skills_parser(subparsers) -> None:
|
|
|
286
279
|
)
|
|
287
280
|
|
|
288
281
|
# create command
|
|
289
|
-
create_parser =
|
|
282
|
+
create_parser = subparsers.add_parser(
|
|
290
283
|
'create',
|
|
291
284
|
help='Create a new skill from template'
|
|
292
285
|
)
|
|
@@ -306,7 +299,7 @@ def add_skills_parser(subparsers) -> None:
|
|
|
306
299
|
)
|
|
307
300
|
|
|
308
301
|
# prompt command
|
|
309
|
-
prompt_parser =
|
|
302
|
+
prompt_parser = subparsers.add_parser(
|
|
310
303
|
'prompt',
|
|
311
304
|
help='Generate prompt XML for skills'
|
|
312
305
|
)
|
|
@@ -613,7 +613,7 @@ class PraisonAI:
|
|
|
613
613
|
return default_args
|
|
614
614
|
|
|
615
615
|
# Define special commands
|
|
616
|
-
special_commands = ['chat', 'code', 'call', 'realtime', 'train', 'ui', 'context', 'research', 'memory', 'rules', 'workflow', 'hooks', 'knowledge', 'session', 'tools', 'todo', 'docs', 'mcp', 'commit', 'serve', 'schedule']
|
|
616
|
+
special_commands = ['chat', 'code', 'call', 'realtime', 'train', 'ui', 'context', 'research', 'memory', 'rules', 'workflow', 'hooks', 'knowledge', 'session', 'tools', 'todo', 'docs', 'mcp', 'commit', 'serve', 'schedule', 'skills']
|
|
617
617
|
|
|
618
618
|
parser = argparse.ArgumentParser(prog="praisonai", description="praisonAI command-line interface")
|
|
619
619
|
parser.add_argument("--framework", choices=["crewai", "autogen", "praisonai"], help="Specify the framework")
|
|
@@ -814,7 +814,7 @@ class PraisonAI:
|
|
|
814
814
|
except ModuleNotFoundError as e:
|
|
815
815
|
missing_module = str(e).split("'")[1]
|
|
816
816
|
print(f"[red]ERROR: Missing dependency {missing_module}. Install with:[/red]")
|
|
817
|
-
print(
|
|
817
|
+
print("\npip install \"praisonai[chat]\"\n")
|
|
818
818
|
sys.exit(1)
|
|
819
819
|
sys.exit(0)
|
|
820
820
|
|
|
@@ -1042,6 +1042,23 @@ class PraisonAI:
|
|
|
1042
1042
|
self.handle_commit_command(unknown_args)
|
|
1043
1043
|
sys.exit(0)
|
|
1044
1044
|
|
|
1045
|
+
elif args.command == 'skills':
|
|
1046
|
+
if not PRAISONAI_AVAILABLE:
|
|
1047
|
+
print("[red]ERROR: PraisonAI Agents is not installed. Install with:[/red]")
|
|
1048
|
+
print("\npip install praisonaiagents\n")
|
|
1049
|
+
sys.exit(1)
|
|
1050
|
+
|
|
1051
|
+
from .features.skills import handle_skills_command, add_skills_parser
|
|
1052
|
+
|
|
1053
|
+
# Create a parser for skills command
|
|
1054
|
+
skills_parser = argparse.ArgumentParser(prog="praisonai skills")
|
|
1055
|
+
skills_subparsers = skills_parser.add_subparsers(dest='skills_command', help='Skills commands')
|
|
1056
|
+
add_skills_parser(skills_subparsers)
|
|
1057
|
+
skills_args = skills_parser.parse_args(unknown_args)
|
|
1058
|
+
|
|
1059
|
+
exit_code = handle_skills_command(skills_args)
|
|
1060
|
+
sys.exit(exit_code)
|
|
1061
|
+
|
|
1045
1062
|
# Only check framework availability for agent-related operations
|
|
1046
1063
|
if not args.command and (args.init or args.auto or args.framework):
|
|
1047
1064
|
if not CREWAI_AVAILABLE and not AUTOGEN_AVAILABLE and not PRAISONAI_AVAILABLE:
|
|
@@ -57,7 +57,7 @@ class CloudDeployer:
|
|
|
57
57
|
file.write("FROM python:3.11-slim\n")
|
|
58
58
|
file.write("WORKDIR /app\n")
|
|
59
59
|
file.write("COPY . .\n")
|
|
60
|
-
file.write("RUN pip install flask praisonai==2.3.
|
|
60
|
+
file.write("RUN pip install flask praisonai==2.3.74 gunicorn markdown\n")
|
|
61
61
|
file.write("EXPOSE 8080\n")
|
|
62
62
|
file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
|
|
63
63
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.3.74"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.3.73"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|