@visactor/vquery 0.2.5 → 0.2.7
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.
- package/dist/node/esm/adapters/index.d.ts +1 -0
- package/dist/node/esm/adapters/query-adapter/duckdbNodeAdapter.d.ts +14 -0
- package/dist/node/esm/adapters/query-adapter/duckdbWebAdapter.d.ts +14 -0
- package/dist/node/esm/adapters/storage-adapter/index.d.ts +2 -0
- package/dist/node/esm/adapters/storage-adapter/indexeddbAdapter.d.ts +21 -0
- package/dist/node/esm/adapters/storage-adapter/inmemoryAdapter.d.ts +22 -0
- package/dist/node/esm/browser.d.ts +5 -0
- package/dist/node/esm/data-source-builder/dataSourceBuilder.d.ts +16 -0
- package/dist/node/esm/data-source-builder/index.d.ts +1 -0
- package/dist/node/esm/dataset/dataset.d.ts +30 -0
- package/dist/node/esm/dataset/index.d.ts +2 -0
- package/dist/node/esm/node.d.ts +5 -0
- package/dist/node/esm/node.js +476 -0
- package/dist/node/esm/sql-builder/builders/groupBy.d.ts +2 -0
- package/dist/node/esm/sql-builder/builders/index.d.ts +3 -0
- package/dist/node/esm/sql-builder/builders/limit.d.ts +2 -0
- package/dist/node/esm/sql-builder/builders/where.d.ts +3 -0
- package/dist/node/esm/sql-builder/compile/index.d.ts +1 -0
- package/dist/node/esm/sql-builder/compile/inlineParameters.d.ts +1 -0
- package/dist/node/esm/sql-builder/dialect/index.d.ts +1 -0
- package/dist/node/esm/sql-builder/dialect/postgresDialect.d.ts +11 -0
- package/dist/node/esm/sql-builder/dslToSQL.d.ts +2 -0
- package/dist/node/esm/sql-builder/index.d.ts +1 -0
- package/dist/node/esm/sql-builder/utils.d.ts +8 -0
- package/dist/node/esm/types/DataSet.d.ts +11 -0
- package/dist/node/esm/types/DataSource.d.ts +11 -0
- package/dist/node/esm/types/QueryResult.d.ts +1 -0
- package/dist/node/esm/types/adapters/QueryAdapter.d.ts +11 -0
- package/dist/node/esm/types/adapters/StorageAdapter.d.ts +17 -0
- package/dist/node/esm/types/adapters/index.d.ts +2 -0
- package/dist/node/esm/types/dsl/GroupBy.d.ts +1 -0
- package/dist/node/esm/types/dsl/OrderBy.d.ts +4 -0
- package/dist/node/esm/types/dsl/QueryDSL.d.ts +12 -0
- package/dist/node/esm/types/dsl/Select.d.ts +7 -0
- package/dist/node/esm/types/dsl/Where.d.ts +24 -0
- package/dist/node/esm/types/dsl/demo.d.ts +1 -0
- package/dist/node/esm/types/dsl/index.d.ts +5 -0
- package/dist/node/esm/types/index.d.ts +5 -0
- package/dist/node/esm/utils/index.d.ts +1 -0
- package/dist/node/esm/utils/url.d.ts +3 -0
- package/dist/node/esm/vquery-browser.d.ts +21 -0
- package/dist/node/esm/vquery-node.d.ts +21 -0
- package/package.json +15 -10
- /package/dist/{cjs → browser/esm}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/adapters/query-adapter/duckdbNodeAdapter.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/adapters/query-adapter/duckdbWebAdapter.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/adapters/storage-adapter/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/adapters/storage-adapter/indexeddbAdapter.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/adapters/storage-adapter/inmemoryAdapter.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/browser.d.ts +0 -0
- /package/dist/{esm → browser/esm}/browser.js +0 -0
- /package/dist/{cjs → browser/esm}/data-source-builder/dataSourceBuilder.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/data-source-builder/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/dataset/dataset.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/dataset/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/node.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/builders/groupBy.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/builders/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/builders/limit.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/builders/where.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/compile/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/compile/inlineParameters.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/dialect/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/dialect/postgresDialect.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/dslToSQL.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/sql-builder/utils.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/DataSet.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/DataSource.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/QueryResult.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/adapters/QueryAdapter.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/adapters/StorageAdapter.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/adapters/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/dsl/GroupBy.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/dsl/OrderBy.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/dsl/QueryDSL.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/dsl/Select.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/dsl/Where.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/dsl/demo.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/dsl/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/types/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/utils/index.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/utils/url.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/vquery-browser.d.ts +0 -0
- /package/dist/{cjs → browser/esm}/vquery-node.d.ts +0 -0
- /package/dist/{esm → node/cjs}/adapters/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/adapters/query-adapter/duckdbNodeAdapter.d.ts +0 -0
- /package/dist/{esm → node/cjs}/adapters/query-adapter/duckdbWebAdapter.d.ts +0 -0
- /package/dist/{esm → node/cjs}/adapters/storage-adapter/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/adapters/storage-adapter/indexeddbAdapter.d.ts +0 -0
- /package/dist/{esm → node/cjs}/adapters/storage-adapter/inmemoryAdapter.d.ts +0 -0
- /package/dist/{esm → node/cjs}/browser.d.ts +0 -0
- /package/dist/{esm → node/cjs}/data-source-builder/dataSourceBuilder.d.ts +0 -0
- /package/dist/{esm → node/cjs}/data-source-builder/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/dataset/dataset.d.ts +0 -0
- /package/dist/{esm → node/cjs}/dataset/index.d.ts +0 -0
- /package/dist/{cjs → node/cjs}/node.cjs +0 -0
- /package/dist/{esm → node/cjs}/node.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/builders/groupBy.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/builders/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/builders/limit.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/builders/where.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/compile/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/compile/inlineParameters.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/dialect/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/dialect/postgresDialect.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/dslToSQL.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/sql-builder/utils.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/DataSet.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/DataSource.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/QueryResult.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/adapters/QueryAdapter.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/adapters/StorageAdapter.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/adapters/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/dsl/GroupBy.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/dsl/OrderBy.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/dsl/QueryDSL.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/dsl/Select.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/dsl/Where.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/dsl/demo.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/dsl/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/types/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/utils/index.d.ts +0 -0
- /package/dist/{esm → node/cjs}/utils/url.d.ts +0 -0
- /package/dist/{esm → node/cjs}/vquery-browser.d.ts +0 -0
- /package/dist/{esm → node/cjs}/vquery-node.d.ts +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Where, WhereClause, WhereGroup, WhereLeaf } from '../types';
|
|
2
|
+
import { SelectItem } from '../types/dsl/Select';
|
|
3
|
+
export declare const isSelectItem: <T>(item: keyof T | SelectItem<T>) => item is SelectItem<T>;
|
|
4
|
+
export declare const isWhereLeaf: <T>(where: Where<T> | WhereClause<T>) => where is WhereLeaf<T>;
|
|
5
|
+
export declare const isWhereGroup: <T>(where: Where<T> | WhereClause<T>) => where is WhereGroup<T>;
|
|
6
|
+
export declare const isStringOrNumber: (value: unknown) => value is string | number;
|
|
7
|
+
export declare const escapeLiteral: <T>(value: T[keyof T]) => T[keyof T];
|
|
8
|
+
export declare const escapeValue: (value: unknown) => string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { QueryResult } from './QueryResult';
|
|
2
|
+
export type DataType = 'number' | 'string' | 'date' | 'datetime' | 'timestamp';
|
|
3
|
+
export interface DatasetColumn {
|
|
4
|
+
type: DataType;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DatasetSchema {
|
|
8
|
+
datasetId: string;
|
|
9
|
+
datasetAlias: string;
|
|
10
|
+
columns: DatasetColumn[];
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type TidyDatum = Record<string, number | string | null | boolean | undefined>;
|
|
2
|
+
export type DatasetSourceType = 'csv' | 'json' | 'xlsx' | 'parquet';
|
|
3
|
+
export type DatasetSourceValue = string | ArrayBuffer | Blob | TidyDatum[];
|
|
4
|
+
export interface DatasetSource {
|
|
5
|
+
type: DatasetSourceType;
|
|
6
|
+
blob: Blob;
|
|
7
|
+
}
|
|
8
|
+
export interface RawDatasetSource {
|
|
9
|
+
type: DatasetSourceType;
|
|
10
|
+
rawDataset: DatasetSourceValue;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type QueryResult = any;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { QueryResult } from '../QueryResult';
|
|
2
|
+
export interface QueryAdapter {
|
|
3
|
+
open: () => Promise<void>;
|
|
4
|
+
close: () => Promise<void>;
|
|
5
|
+
writeFile: <T extends Blob>(fileName: string, source: T) => Promise<void>;
|
|
6
|
+
getSchema: (fileName: string) => Promise<QueryResult>;
|
|
7
|
+
query: (sql: string) => Promise<{
|
|
8
|
+
dataset: any[];
|
|
9
|
+
table: any;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DatasetSchema } from '../DataSet';
|
|
2
|
+
import { DatasetSource } from '../DataSource';
|
|
3
|
+
export interface StorageAdapter {
|
|
4
|
+
open: () => Promise<void>;
|
|
5
|
+
close: () => Promise<void>;
|
|
6
|
+
writeDataset: (datasetId: string, datasetSchema: DatasetSchema, datasetSource?: DatasetSource) => Promise<void>;
|
|
7
|
+
readDataset: (datasetId: string) => Promise<{
|
|
8
|
+
datasetSchema: DatasetSchema;
|
|
9
|
+
datasetSource?: DatasetSource;
|
|
10
|
+
} | null>;
|
|
11
|
+
deleteDataset: (datasetId: string) => Promise<void>;
|
|
12
|
+
listDatasets: () => Promise<{
|
|
13
|
+
datasetId: string;
|
|
14
|
+
datasetSchema: DatasetSchema;
|
|
15
|
+
datasetSource?: DatasetSource;
|
|
16
|
+
}[]>;
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type GroupBy<T> = Array<keyof T>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GroupBy } from './GroupBy';
|
|
2
|
+
import { OrderBy } from './OrderBy';
|
|
3
|
+
import { Select } from './Select';
|
|
4
|
+
import { Where } from './Where';
|
|
5
|
+
export interface QueryDSL<Table> {
|
|
6
|
+
select: Select<Table>;
|
|
7
|
+
where?: Where<Table>;
|
|
8
|
+
groupBy?: GroupBy<Table>;
|
|
9
|
+
orderBy?: OrderBy<Table>;
|
|
10
|
+
limit?: number;
|
|
11
|
+
}
|
|
12
|
+
export type VQueryDSL<Table = Record<string, unknown>> = QueryDSL<Table>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type Where<T> = WhereGroup<T>;
|
|
2
|
+
export type WhereGroup<T> = {
|
|
3
|
+
op: 'and' | 'or';
|
|
4
|
+
conditions: Array<WhereClause<T>>;
|
|
5
|
+
};
|
|
6
|
+
export type WhereClause<T> = WhereLeaf<T> | WhereGroup<T>;
|
|
7
|
+
export type WhereLeaf<T> = {
|
|
8
|
+
[K in keyof T]: {
|
|
9
|
+
[O in Operator]: {
|
|
10
|
+
field: K;
|
|
11
|
+
op: O;
|
|
12
|
+
} & (O extends 'is null' | 'is not null' ? {
|
|
13
|
+
value?: never;
|
|
14
|
+
} : O extends 'in' | 'not in' ? {
|
|
15
|
+
value: T[K] | T[K][];
|
|
16
|
+
} : O extends 'between' | 'not between' ? {
|
|
17
|
+
value: [T[K], T[K]];
|
|
18
|
+
} : {
|
|
19
|
+
value: T[K];
|
|
20
|
+
});
|
|
21
|
+
}[Operator];
|
|
22
|
+
}[keyof T];
|
|
23
|
+
type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'like' | 'not like' | 'ilike' | 'not ilike' | 'in' | 'not in' | 'between' | 'not between' | 'is null' | 'is not null';
|
|
24
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { isUrl, isHttpUrl, isBase64Url } from './url';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Dataset } from './dataset/dataset';
|
|
2
|
+
import { RawDatasetSource, DatasetColumn } from './types';
|
|
3
|
+
export declare class VQuery {
|
|
4
|
+
private queryAdapter;
|
|
5
|
+
private storageAdapter;
|
|
6
|
+
private isInitialized;
|
|
7
|
+
constructor();
|
|
8
|
+
private checkInitialized;
|
|
9
|
+
private checkDatasetExists;
|
|
10
|
+
createDataset(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
|
|
11
|
+
updateDatasetSource(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
|
|
12
|
+
dropDataset(datasetId: string): Promise<void>;
|
|
13
|
+
connectDataset(datasetId: string, temporaryColumns?: DatasetColumn[], temporaryRawDatasetSource?: RawDatasetSource): Promise<Dataset>;
|
|
14
|
+
hasDataset(datasetId: string): Promise<boolean>;
|
|
15
|
+
listDatasets(): Promise<{
|
|
16
|
+
datasetId: string;
|
|
17
|
+
datasetSchema: import("./types").DatasetSchema;
|
|
18
|
+
datasetSource?: import("./types").DatasetSource;
|
|
19
|
+
}[]>;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Dataset } from './dataset/dataset';
|
|
2
|
+
import { RawDatasetSource, DatasetColumn } from './types';
|
|
3
|
+
export declare class VQuery {
|
|
4
|
+
private queryAdapter;
|
|
5
|
+
private storageAdapter;
|
|
6
|
+
private isInitialized;
|
|
7
|
+
constructor();
|
|
8
|
+
private checkInitialized;
|
|
9
|
+
private checkDatasetExists;
|
|
10
|
+
createDataset(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
|
|
11
|
+
updateDatasetSource(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
|
|
12
|
+
dropDataset(datasetId: string): Promise<void>;
|
|
13
|
+
connectDataset(datasetId: string, temporaryColumns?: DatasetColumn[], temporaryRawDatasetSource?: RawDatasetSource): Promise<Dataset>;
|
|
14
|
+
hasDataset(datasetId: string): Promise<boolean>;
|
|
15
|
+
listDatasets(): Promise<{
|
|
16
|
+
datasetId: string;
|
|
17
|
+
datasetSchema: import("./types").DatasetSchema;
|
|
18
|
+
datasetSource?: import("./types").DatasetSource;
|
|
19
|
+
}[]>;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
}
|
package/package.json
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vquery",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
|
-
"
|
|
8
|
-
"types": "./dist/
|
|
9
|
-
"
|
|
7
|
+
"node": {
|
|
8
|
+
"types": "./dist/node/esm/node.d.ts",
|
|
9
|
+
"import": "./dist/node/esm/node.js",
|
|
10
|
+
"require": "./dist/node/cjs/node.cjs"
|
|
10
11
|
},
|
|
11
|
-
"
|
|
12
|
-
"types": "./dist/esm/browser.d.
|
|
13
|
-
"
|
|
12
|
+
"browser": {
|
|
13
|
+
"types": "./dist/browser/esm/browser.d.ts",
|
|
14
|
+
"import": "./dist/browser/esm/browser.js"
|
|
15
|
+
},
|
|
16
|
+
"default": {
|
|
17
|
+
"types": "./dist/browser/esm/browser.d.ts",
|
|
18
|
+
"import": "./dist/browser/esm/browser.js"
|
|
14
19
|
}
|
|
15
20
|
}
|
|
16
21
|
},
|
|
17
|
-
"main": "./dist/cjs/node.cjs",
|
|
18
|
-
"types": "./dist/
|
|
22
|
+
"main": "./dist/node/cjs/node.cjs",
|
|
23
|
+
"types": "./dist/node/esm/node.d.ts",
|
|
19
24
|
"files": [
|
|
20
25
|
"dist"
|
|
21
26
|
],
|
|
@@ -33,7 +38,7 @@
|
|
|
33
38
|
"eslint": "9.39.0",
|
|
34
39
|
"globals": "16.4.0",
|
|
35
40
|
"typescript": "5.9.3",
|
|
36
|
-
"typescript-eslint": "8.
|
|
41
|
+
"typescript-eslint": "8.48.0"
|
|
37
42
|
},
|
|
38
43
|
"scripts": {
|
|
39
44
|
"build": "rslib build",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|