dulus 0.2.27__tar.gz → 0.2.28__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.
- {dulus-0.2.27/dulus.egg-info → dulus-0.2.28}/PKG-INFO +2 -2
- {dulus-0.2.27 → dulus-0.2.28}/README.md +1 -1
- {dulus-0.2.27 → dulus-0.2.28}/docs/news.md +2 -0
- {dulus-0.2.27 → dulus-0.2.28/dulus.egg-info}/PKG-INFO +2 -2
- {dulus-0.2.27 → dulus-0.2.28}/dulus.py +10 -1
- {dulus-0.2.27 → dulus-0.2.28}/pyproject.toml +1 -1
- {dulus-0.2.27 → dulus-0.2.28}/LICENSE +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/MANIFEST.in +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/agent.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/compressor.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/context.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/githook.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/marketplace.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/mempalace_bridge.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/personas.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/plugins.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/server.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/backend/tasks.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/batch_api.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/checkpoint/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/checkpoint/hooks.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/checkpoint/store.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/checkpoint/types.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/claude_code_watcher.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/clipboard_utils.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/cloudsave.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/common.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/compaction.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/config.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/context.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/active_persona.json +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/context.json +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/marketplace.json +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/personas.json +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/plugins/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/plugins/composio/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/plugins/composio/composio_plugin/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/plugins/composio/plugin.json +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/plugins/composio/plugin_tool.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/data/tasks.json +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/README.md +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/api.html +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/architecture.md +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/azure-speech-template.json +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/dashboard/index.html +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/divider.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/generate.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/hero.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/index.html +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/nvidia-models.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/particle-playground.html +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/personas/index.html +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/poetry-banner.png +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/preview.html +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-agents.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-brainstorm.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-bridges.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-features.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-freetier.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-memory.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-models.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-perms.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-plugins.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-quickstart.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/sec-ssj.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/spinners.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/split-pane.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/terminal-boot.svg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/docs/uploads/particle-playground.html +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus.egg-info/SOURCES.txt +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus.egg-info/dependency_links.txt +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus.egg-info/entry_points.txt +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus.egg-info/requires.txt +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus.egg-info/top_level.txt +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus_gui.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus_mcp/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus_mcp/client.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus_mcp/config.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus_mcp/tools.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/dulus_mcp/types.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/agent_bridge.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/chat_widget.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/main_window.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/personas.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/session_utils.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/settings_dialog.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/sidebar.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/tasks_view.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/themes.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/gui/tool_panel.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/input.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/license_manager.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/audit.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/consolidator.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/context.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/offload.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/palace.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/scan.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/sessions.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/store.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/tools.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/types.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/memory/vector_search.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/multi_agent/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/multi_agent/subagent.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/multi_agent/tools.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/offload_helper.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/plugin/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/plugin/autoadapter.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/plugin/loader.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/plugin/recommend.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/plugin/store.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/plugin/types.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/providers.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/setup.cfg +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/skill/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/skill/builtin.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/skill/clawhub.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/skill/executor.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/skill/loader.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/skill/tools.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/skills.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/spinner.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/string_utils.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/subagent.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/task/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/task/store.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/task/tools.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/task/types.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_checkpoint.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_compaction.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_diff_view.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_injection_fix.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_license.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_mcp.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_memory.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_plugin.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_skills.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_subagent.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_task.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_telegram_buffer.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_tool_registry.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tests/test_voice.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tmux_offloader.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tmux_tools.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tool_registry.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/tools.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/ui/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/ui/input.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/ui/render.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/voice/__init__.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/voice/keyterms.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/voice/recorder.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/voice/stt.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/voice/tts.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/webchat.py +0 -0
- {dulus-0.2.27 → dulus-0.2.28}/webchat_server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dulus
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.28
|
|
4
4
|
Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
|
|
5
5
|
Author: KevRojo
|
|
6
6
|
License: GPL-3.0
|
|
@@ -69,7 +69,7 @@ SET /sticky_input ON since the first run for the best experience!
|
|
|
69
69
|
<a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
|
|
70
70
|
<img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
|
|
71
71
|
<img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
|
|
72
|
-
<img src="https://img.shields.io/badge/version-v0.2.
|
|
72
|
+
<img src="https://img.shields.io/badge/version-v0.2.28-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
|
|
73
73
|
<img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
|
|
74
74
|
<img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
|
|
75
75
|
<img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
|
|
@@ -22,7 +22,7 @@ SET /sticky_input ON since the first run for the best experience!
|
|
|
22
22
|
<a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
|
|
23
23
|
<img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
|
|
24
24
|
<img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
|
|
25
|
-
<img src="https://img.shields.io/badge/version-v0.2.
|
|
25
|
+
<img src="https://img.shields.io/badge/version-v0.2.28-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
|
|
26
26
|
<img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
|
|
27
27
|
<img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
|
|
28
28
|
<img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## 🔥🔥🔥 News (Pacific Time)
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
- May 09, 2026 (**v0.2.28**): **IPC server thread no longer crashes on idle / dropped connections** — `conn.recv()` was hitting its 60s read timeout and raising `TimeoutError` out of the worker, killing the IPC thread silently. After that, the daemon was still running but `dulus "..."` from any shell would hang forever. Caught socket.timeout / ConnectionReset / BrokenPipe / OSError around the request-handling block so a single bad client can't take down the server.
|
|
7
|
+
|
|
6
8
|
- May 09, 2026 (**v0.2.27**): **`/bg` no longer leaves stale state** — when something else (a REPL, an old daemon) is already on `127.0.0.1:5151`, `/bg start` now refuses to spawn a duplicate that would just fail to bind, explains what's happening, and clears the stale PID file. `/bg status` self-heals: when it sees a stale PID it auto-removes it instead of complaining on every call. The previous "Some Dulus is listening on IPC, but our PID file is stale" warning is gone for good.
|
|
7
9
|
|
|
8
10
|
- May 09, 2026 (**v0.2.26**): **`/bg start` daemon crash fix + defensive `clr()` + composio fallback**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dulus
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.28
|
|
4
4
|
Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
|
|
5
5
|
Author: KevRojo
|
|
6
6
|
License: GPL-3.0
|
|
@@ -69,7 +69,7 @@ SET /sticky_input ON since the first run for the best experience!
|
|
|
69
69
|
<a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
|
|
70
70
|
<img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
|
|
71
71
|
<img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
|
|
72
|
-
<img src="https://img.shields.io/badge/version-v0.2.
|
|
72
|
+
<img src="https://img.shields.io/badge/version-v0.2.28-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
|
|
73
73
|
<img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
|
|
74
74
|
<img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
|
|
75
75
|
<img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
|
|
@@ -218,7 +218,7 @@ try:
|
|
|
218
218
|
from importlib.metadata import version as _pkg_version
|
|
219
219
|
VERSION = _pkg_version("dulus")
|
|
220
220
|
except Exception:
|
|
221
|
-
VERSION = "0.2.
|
|
221
|
+
VERSION = "0.2.28" # dev fallback — keep in sync with pyproject.toml
|
|
222
222
|
|
|
223
223
|
# ── ANSI helpers (used even with rich for non-markdown output) ─────────────
|
|
224
224
|
from common import C, clr, info, ok, warn, err, stream_thinking, print_tool_start, print_tool_end, sanitize_text
|
|
@@ -4080,6 +4080,15 @@ def _ipc_server_loop(config, state):
|
|
|
4080
4080
|
conn.sendall(payload)
|
|
4081
4081
|
except Exception:
|
|
4082
4082
|
pass
|
|
4083
|
+
except (_socket.timeout, TimeoutError, ConnectionResetError, BrokenPipeError, OSError):
|
|
4084
|
+
# Common transient socket errors: client opened conn and walked
|
|
4085
|
+
# away (recv timeout), client killed mid-write, etc. Drop this
|
|
4086
|
+
# connection but keep the server thread running.
|
|
4087
|
+
pass
|
|
4088
|
+
except Exception:
|
|
4089
|
+
# Catch-all so a single bad request never takes down the IPC
|
|
4090
|
+
# server thread (which would silently break /bg start's promise).
|
|
4091
|
+
pass
|
|
4083
4092
|
finally:
|
|
4084
4093
|
try:
|
|
4085
4094
|
conn.close()
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dulus"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.28"
|
|
8
8
|
description = "Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
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
|
|
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
|