dirsql 0.3.1__tar.gz → 0.3.2__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.
- {dirsql-0.3.1 → dirsql-0.3.2}/Cargo.lock +1 -1
- {dirsql-0.3.1 → dirsql-0.3.2}/PKG-INFO +1 -1
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/Cargo.toml +1 -1
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/cli_e2e.rs +14 -20
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/cli_integration.rs +31 -23
- {dirsql-0.3.1 → dirsql-0.3.2}/Cargo.toml +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/README.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/AGENTS.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/api/index.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/getting-started.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/async.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/cli.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/config.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/crdt.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/persistence.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/querying.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/tables.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/guide/watching.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/index.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/migrations.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/package.json +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/playwright.config.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/tests/integration/home.spec.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/tests/integration/language-flag.spec.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/tests/unit/config.test.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/tests/unit/lang.test.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/docs/vitest.config.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/README.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/api/index.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/async.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/cli.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/config.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/crdt.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/persistence.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/querying.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/tables.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/guide/watching.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/index.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/migrations.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/package.json +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/playwright.config.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/tests/integration/home.spec.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/tests/integration/language-flag.spec.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/tests/unit/config.test.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/tests/unit/lang.test.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/docs/vitest.config.ts +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/python/conftest.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/src/lib.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/test_async_dirsql.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/test_binding.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/test_dirsql.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/test_docs_examples.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/test_docs_gaps.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/test_from_config.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/python/tests/integration/test_persist.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/Cargo.toml +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/README.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/api/index.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/async.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/cli.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/config.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/crdt.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/persistence.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/querying.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/tables.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/guide/watching.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/index.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/docs/migrations.md +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/config.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/db.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/lib.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/matcher.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/scanner.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/async_sdk.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/docs_examples.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/docs_gaps.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/from_config.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/persist.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/readonly_query.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/packages/rust/tests/sdk.rs +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/pyproject.toml +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/__init__.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_async.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_cli/__init__.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_cli/binary_path.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_cli/binary_path_test.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_cli/is_windows.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_cli/is_windows_test.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_cli/main.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/_cli/main_test.py +0 -0
- {dirsql-0.3.1 → dirsql-0.3.2}/python/dirsql/test_async.py +0 -0
|
@@ -4,7 +4,7 @@ name = "dirsql-py-ext"
|
|
|
4
4
|
# pypi/maturin handler can rewrite it via `write-version` before
|
|
5
5
|
# `maturin build`. `pyproject.toml` declares `dynamic = ["version"]`
|
|
6
6
|
# and maturin reads this field. Mirrors `packages/rust/Cargo.toml`.
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.2"
|
|
8
8
|
edition.workspace = true
|
|
9
9
|
publish = false
|
|
10
10
|
readme = "README.md"
|
|
@@ -30,25 +30,22 @@ use tempfile::TempDir;
|
|
|
30
30
|
|
|
31
31
|
/// Write a two-post blog fixture into a fresh tempdir and return it.
|
|
32
32
|
/// The `.dirsql.toml` lives at the root so `dirsql` can discover it.
|
|
33
|
+
///
|
|
34
|
+
/// `title` and `author` are captured from the file path (`posts/{author}/
|
|
35
|
+
/// {title}.json`) rather than parsed from file content -- the new model
|
|
36
|
+
/// derives row columns from filesystem facts only.
|
|
33
37
|
fn blog_fixture() -> TempDir {
|
|
34
38
|
let root = TempDir::new().unwrap();
|
|
35
|
-
fs::create_dir_all(root.path().join("posts")).unwrap();
|
|
36
|
-
fs::
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
)
|
|
40
|
-
.unwrap();
|
|
41
|
-
fs::write(
|
|
42
|
-
root.path().join("posts/second.json"),
|
|
43
|
-
r#"{"title":"Second Post","author":"bob"}"#,
|
|
44
|
-
)
|
|
45
|
-
.unwrap();
|
|
39
|
+
fs::create_dir_all(root.path().join("posts/alice")).unwrap();
|
|
40
|
+
fs::create_dir_all(root.path().join("posts/bob")).unwrap();
|
|
41
|
+
fs::write(root.path().join("posts/alice/Hello-World.json"), "{}").unwrap();
|
|
42
|
+
fs::write(root.path().join("posts/bob/Second-Post.json"), "{}").unwrap();
|
|
46
43
|
fs::write(
|
|
47
44
|
root.path().join(".dirsql.toml"),
|
|
48
45
|
r#"
|
|
49
46
|
[[table]]
|
|
50
|
-
ddl = "CREATE TABLE posts (title TEXT, author TEXT)"
|
|
51
|
-
glob = "posts
|
|
47
|
+
ddl = "CREATE TABLE posts (title TEXT, author TEXT, _basename TEXT, _size INTEGER)"
|
|
48
|
+
glob = "posts/{author}/{title}.json"
|
|
52
49
|
"#,
|
|
53
50
|
)
|
|
54
51
|
.unwrap();
|
|
@@ -194,8 +191,8 @@ fn post_query_returns_rows_over_http() {
|
|
|
194
191
|
assert_eq!(
|
|
195
192
|
body,
|
|
196
193
|
vec![
|
|
197
|
-
json!({"title": "Hello
|
|
198
|
-
json!({"title": "Second
|
|
194
|
+
json!({"title": "Hello-World"}),
|
|
195
|
+
json!({"title": "Second-Post"}),
|
|
199
196
|
]
|
|
200
197
|
);
|
|
201
198
|
|
|
@@ -248,11 +245,8 @@ fn get_events_emits_insert_event_when_file_created() {
|
|
|
248
245
|
.recv_timeout(Duration::from_secs(5))
|
|
249
246
|
.expect("SSE stream never produced a ready sentinel");
|
|
250
247
|
std::thread::sleep(Duration::from_millis(200));
|
|
251
|
-
fs::
|
|
252
|
-
|
|
253
|
-
r#"{"title":"Third Post","author":"carol"}"#,
|
|
254
|
-
)
|
|
255
|
-
.unwrap();
|
|
248
|
+
fs::create_dir_all(root.path().join("posts/carol")).unwrap();
|
|
249
|
+
fs::write(root.path().join("posts/carol/Third-Post.json"), "{}").unwrap();
|
|
256
250
|
|
|
257
251
|
let data = rx
|
|
258
252
|
.recv_timeout(Duration::from_secs(10))
|
|
@@ -31,25 +31,24 @@ use tempfile::TempDir;
|
|
|
31
31
|
/// Build a `DirSQL` over a two-post blog fixture driven by `.dirsql.toml`,
|
|
32
32
|
/// matching the e2e fixture shape. Returns the tempdir so the caller can
|
|
33
33
|
/// mutate files while the server runs.
|
|
34
|
+
///
|
|
35
|
+
/// `title` and `author` are captured from the file path (`posts/{author}/
|
|
36
|
+
/// {title}.json`) rather than parsed from file content -- the new model
|
|
37
|
+
/// derives row columns from filesystem facts only. `_size` is included so
|
|
38
|
+
/// that content-only edits still change a column value and surface as
|
|
39
|
+
/// `Update` events in the SSE stream.
|
|
34
40
|
fn blog_fixture() -> (TempDir, DirSQL) {
|
|
35
41
|
let root = TempDir::new().unwrap();
|
|
36
|
-
fs::create_dir_all(root.path().join("posts")).unwrap();
|
|
37
|
-
fs::
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
)
|
|
41
|
-
.unwrap();
|
|
42
|
-
fs::write(
|
|
43
|
-
root.path().join("posts/second.json"),
|
|
44
|
-
r#"{"title":"Second Post","author":"bob"}"#,
|
|
45
|
-
)
|
|
46
|
-
.unwrap();
|
|
42
|
+
fs::create_dir_all(root.path().join("posts/alice")).unwrap();
|
|
43
|
+
fs::create_dir_all(root.path().join("posts/bob")).unwrap();
|
|
44
|
+
fs::write(root.path().join("posts/alice/Hello-World.json"), "{}").unwrap();
|
|
45
|
+
fs::write(root.path().join("posts/bob/Second-Post.json"), "{}").unwrap();
|
|
47
46
|
fs::write(
|
|
48
47
|
root.path().join(".dirsql.toml"),
|
|
49
48
|
r#"
|
|
50
49
|
[[table]]
|
|
51
|
-
ddl = "CREATE TABLE posts (title TEXT, author TEXT)"
|
|
52
|
-
glob = "posts
|
|
50
|
+
ddl = "CREATE TABLE posts (title TEXT, author TEXT, _basename TEXT, _size INTEGER)"
|
|
51
|
+
glob = "posts/{author}/{title}.json"
|
|
53
52
|
"#,
|
|
54
53
|
)
|
|
55
54
|
.unwrap();
|
|
@@ -129,8 +128,8 @@ async fn post_query_returns_json_rows_on_success() {
|
|
|
129
128
|
assert_eq!(
|
|
130
129
|
body,
|
|
131
130
|
vec![
|
|
132
|
-
json!({"title": "Hello
|
|
133
|
-
json!({"title": "Second
|
|
131
|
+
json!({"title": "Hello-World"}),
|
|
132
|
+
json!({"title": "Second-Post"}),
|
|
134
133
|
]
|
|
135
134
|
);
|
|
136
135
|
handle.shutdown().await.unwrap();
|
|
@@ -263,9 +262,11 @@ async fn get_events_streams_mutation_events() {
|
|
|
263
262
|
// exists.
|
|
264
263
|
await_ready(&mut stream).await;
|
|
265
264
|
|
|
265
|
+
// Modify the file's content; `_size` is part of the row, so the diff
|
|
266
|
+
// produces an Update event even though no captured path changed.
|
|
266
267
|
fs::write(
|
|
267
|
-
root.path().join("posts/
|
|
268
|
-
r#"{"
|
|
268
|
+
root.path().join("posts/alice/Hello-World.json"),
|
|
269
|
+
r#"{"some":"larger","payload":"to change _size"}"#,
|
|
269
270
|
)
|
|
270
271
|
.unwrap();
|
|
271
272
|
|
|
@@ -284,7 +285,7 @@ async fn get_events_streams_mutation_events() {
|
|
|
284
285
|
|
|
285
286
|
#[tokio::test]
|
|
286
287
|
async fn get_events_surfaces_parse_errors_as_error_events_not_fatal() {
|
|
287
|
-
// Per docs/guide/cli.md: an error during
|
|
288
|
+
// Per docs/guide/cli.md: an error during ingestion is a per-event problem,
|
|
288
289
|
// not a server-wide one. The stream must keep delivering subsequent events.
|
|
289
290
|
let (root, db) = blog_fixture();
|
|
290
291
|
let handle = spawn_server(db).await;
|
|
@@ -297,13 +298,20 @@ async fn get_events_surfaces_parse_errors_as_error_events_not_fatal() {
|
|
|
297
298
|
|
|
298
299
|
await_ready(&mut stream).await;
|
|
299
300
|
|
|
300
|
-
// Break a file
|
|
301
|
-
|
|
302
|
-
//
|
|
301
|
+
// Break a file with invalid UTF-8 -- the pipeline reads file bytes
|
|
302
|
+
// before invoking the synthesized extract, and `read_to_string` rejects
|
|
303
|
+
// non-UTF-8 bytes with InvalidData. That surfaces as a per-file error
|
|
304
|
+
// event without taking the stream down.
|
|
305
|
+
fs::write(
|
|
306
|
+
root.path().join("posts/alice/Hello-World.json"),
|
|
307
|
+
[0xff_u8, 0xfe, 0xfd, 0xfc],
|
|
308
|
+
)
|
|
309
|
+
.unwrap();
|
|
310
|
+
// Then mutate another file to produce a valid event after the error.
|
|
303
311
|
tokio::time::sleep(Duration::from_millis(50)).await;
|
|
304
312
|
fs::write(
|
|
305
|
-
root.path().join("posts/
|
|
306
|
-
r#"{"
|
|
313
|
+
root.path().join("posts/bob/Second-Post.json"),
|
|
314
|
+
r#"{"some":"new content to change _size"}"#,
|
|
307
315
|
)
|
|
308
316
|
.unwrap();
|
|
309
317
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|