omnata-plugin-devkit 0.5.2__tar.gz → 0.5.4__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.
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/PKG-INFO +2 -1
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/pyproject.toml +2 -1
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/API_LIMITS.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CONFIGURATION_FORM.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CONFIGURE_APIS.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CONNECTION_FORM.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CONNECTION_TEST.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CONSTRUCT_FORM_OPTION.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CREATE_BILLING_EVENTS.sql.jinja +4 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CREATE_GENERIC_SECRET_OBJECT.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CREATE_GENERIC_SECRET_OBJECT_FROM_EXISTING.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CREATE_NETWORK_RULE_OBJECT.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CREATE_NETWORK_RULE_OBJECT_FROM_EXISTING.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/CREATE_OAUTH_SECRET_OBJECT.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/INBOUND_LIST_STREAMS.sql.jinja +4 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/NETWORK_ADDRESSES.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/NGROK_POST_TUNNEL_FIELDS.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/OUTBOUND_RECORD_VALIDATOR.sql.jinja +4 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/PENDING_API_CONFIGURATION.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/POST_INSTALL_ACTIONS.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_NETWORK_RULE_OBJECT.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_SECRETS.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_SECRETS_UDF.sql.jinja +4 -7
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/SYNC.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/TEST_CALLBACK.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/TEST_OAUTH_TOKEN_EXISTS.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/TUNNEL_TEST.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/UPDATE_API_CONFIGURATION.sql.jinja +3 -1
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/UPDATE_GENERIC_SECRET_OBJECT.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/UPDATE_GENERIC_SECRET_OBJECT_OLD.sql.jinja +1 -1
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/UPDATE_NETWORK_RULE_OBJECT.sql.jinja +3 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/LICENSE +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/README.md +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/airbyte_wrapper.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/cli/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/development_session.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/initialiser.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/jinja_templates/manifest.yml.jinja +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/native_app_packaging.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/plugin_registration.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/plugin_template/icon.svg +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/plugin_template/plugin.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/plugin_template/plugin_development.ipynb +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/plugin_template/requirements.txt +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/plugin_uploader.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/api/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/api/config.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/api/constants.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/api/exceptions.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/app/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/app/snow_connector.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/models.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/package/__init__.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/package_utils.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/snowpark_shared.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/venv.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/zipper.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/snowcli/cli/templates/environment.yml.jinja +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/streamlit/plugin_configuration.py +0 -0
- {omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/test_step_definitions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omnata-plugin-devkit
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.4
|
|
4
4
|
Summary:
|
|
5
5
|
Author: James Weakley
|
|
6
6
|
Author-email: james.weakley@omnata.com
|
|
@@ -16,6 +16,7 @@ Requires-Dist: pandas (==2)
|
|
|
16
16
|
Requires-Dist: pyparsing (>=3.0)
|
|
17
17
|
Requires-Dist: python-slugify (>=8,<9)
|
|
18
18
|
Requires-Dist: requirements-parser (==0.5.0)
|
|
19
|
+
Requires-Dist: snowflake-connector-python[pandas] (<=3.12.0)
|
|
19
20
|
Requires-Dist: tabulate (>=0.9,<0.10)
|
|
20
21
|
Requires-Dist: tomlkit (==0.11.1)
|
|
21
22
|
Requires-Dist: vcrpy (>=4,<5)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "omnata-plugin-devkit"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.4"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["James Weakley <james.weakley@omnata.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -25,6 +25,7 @@ pyparsing = ">=3.0"
|
|
|
25
25
|
#snowflake-cli-labs = "2.0.0"
|
|
26
26
|
requirements-parser = "0.5.0"
|
|
27
27
|
tomlkit = "0.11.1" # this is lower than the version required by snowcli, but exists on Anaconda
|
|
28
|
+
snowflake-connector-python = {extras = ["pandas"], version = "<=3.12.0"}
|
|
28
29
|
|
|
29
30
|
[tool.poetry.dev-dependencies]
|
|
30
31
|
pytest = "^6.2.4"
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
create or replace procedure PLUGIN.CONFIGURE_APIS()
|
|
3
3
|
returns object
|
|
4
4
|
language javascript
|
|
5
|
+
COMMENT = $$
|
|
6
|
+
For all procs and functions that may access external endpoints, rebinds them to all of the configured connections as stored in the OMNATA_REGISTRATION table.
|
|
7
|
+
$$
|
|
5
8
|
execute as owner
|
|
6
9
|
as
|
|
7
10
|
$$
|
|
@@ -5,6 +5,10 @@ RUNTIME_VERSION = '3.10'
|
|
|
5
5
|
PACKAGES = ({{packages}})
|
|
6
6
|
IMPORTS = ('/app.zip')
|
|
7
7
|
HANDLER = 'run'
|
|
8
|
+
COMMENT = $$
|
|
9
|
+
Instructs the plugin app to create a set of billing events.
|
|
10
|
+
This is done so that the billing is associated with the plugin listing instead of the sync engine.
|
|
11
|
+
$$
|
|
8
12
|
execute as owner
|
|
9
13
|
as
|
|
10
14
|
$$
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
create or replace procedure PLUGIN.CREATE_GENERIC_SECRET_OBJECT_FROM_EXISTING(SECRET_NAME VARCHAR,SECRET_TO_CLONE VARCHAR,KEYS_TO_INCLUDE ARRAY)
|
|
2
2
|
returns object
|
|
3
3
|
language javascript
|
|
4
|
+
COMMENT = $$
|
|
5
|
+
Creates a generic secret object, using an existing object as a starting point.
|
|
6
|
+
$$
|
|
4
7
|
execute as owner
|
|
5
8
|
as
|
|
6
9
|
$$
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
create or replace procedure PLUGIN.CREATE_NETWORK_RULE_OBJECT_FROM_EXISTING(RULE_NAME VARCHAR,RULE_TO_CLONE VARCHAR)
|
|
2
2
|
returns object
|
|
3
3
|
language javascript
|
|
4
|
+
COMMENT = $$
|
|
5
|
+
Creates a network rule object, using the addresses from an existing network rule as a starting point.
|
|
6
|
+
$$
|
|
4
7
|
execute as owner
|
|
5
8
|
as
|
|
6
9
|
$$
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
create or replace procedure PLUGIN.CREATE_OAUTH_SECRET_OBJECT(SECRET_NAME VARCHAR,SECURITY_INTEGRATION_NAME VARCHAR)
|
|
2
2
|
returns object
|
|
3
3
|
language javascript
|
|
4
|
+
COMMENT = $$
|
|
5
|
+
This procedure is deprecated, as the user must create the OAuth secrets themselves in order to be able to bind them correctly.
|
|
6
|
+
$$
|
|
4
7
|
execute as owner
|
|
5
8
|
as
|
|
6
9
|
$$
|
|
@@ -10,6 +10,10 @@ RUNTIME_VERSION = '3.10'
|
|
|
10
10
|
PACKAGES = ({{packages}})
|
|
11
11
|
IMPORTS = ('/app.zip')
|
|
12
12
|
HANDLER = 'run'
|
|
13
|
+
COMMENT = $$
|
|
14
|
+
Retrieves a list of inbound streams for a connection.
|
|
15
|
+
If SELECTED_STREAMS is defined, those streams must contain json schema, otherwise it's permitted for them to be null.
|
|
16
|
+
$$
|
|
13
17
|
execute as owner
|
|
14
18
|
as
|
|
15
19
|
$$
|
|
@@ -5,6 +5,10 @@ RUNTIME_VERSION = '3.10'
|
|
|
5
5
|
PACKAGES = ({{packages}})
|
|
6
6
|
IMPORTS = ('/app.zip')
|
|
7
7
|
HANDLER = 'run'
|
|
8
|
+
COMMENT = $$
|
|
9
|
+
Requests validation of an outbound record. Used to test the validity of field mappings and provided data values.
|
|
10
|
+
Failed records will be marked with a SOURCE_FAILURE instead of DESTINATION_FAILURE.
|
|
11
|
+
$$
|
|
8
12
|
as
|
|
9
13
|
$$
|
|
10
14
|
from typing import Any, Dict, Optional
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
create or replace procedure PLUGIN.PENDING_API_CONFIGURATION(APP_DATABASE VARCHAR)
|
|
2
2
|
returns object
|
|
3
3
|
language javascript
|
|
4
|
+
COMMENT = $$
|
|
5
|
+
Returns true if there are External Access configuration changes made by UPDATE_API_CONFIGURATION that have not been applied via CONFIGURE_APIs.
|
|
6
|
+
$$
|
|
4
7
|
execute as owner
|
|
5
8
|
as
|
|
6
9
|
$$
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
create or replace procedure PLUGIN.RETRIEVE_NETWORK_RULE_OBJECT(RULE_NAME VARCHAR)
|
|
2
2
|
returns object
|
|
3
3
|
language javascript
|
|
4
|
+
COMMENT = $$
|
|
5
|
+
Allows the sync engine to retrieve the details of a network rule object, since this application owns them.
|
|
6
|
+
$$
|
|
4
7
|
execute as owner
|
|
5
8
|
as
|
|
6
9
|
$$
|
|
@@ -3,6 +3,9 @@ returns object
|
|
|
3
3
|
language python
|
|
4
4
|
RUNTIME_VERSION = '3.10'
|
|
5
5
|
HANDLER = 'run'
|
|
6
|
+
COMMENT = $$
|
|
7
|
+
Allows this plugin to retrieve its own secrets during CONFIGURE_API calls.
|
|
8
|
+
$$
|
|
6
9
|
as
|
|
7
10
|
$$
|
|
8
11
|
import _snowflake # pylint: disable=import-error, import-outside-toplevel # type: ignore
|
|
@@ -32,10 +35,4 @@ def run(oauth_secret_name,other_secrets_name):
|
|
|
32
35
|
raise ValueError(f"Error parsing secrets content: {str(exception)}") from exception
|
|
33
36
|
return connection_secrets
|
|
34
37
|
$$
|
|
35
|
-
;
|
|
36
|
-
|
|
37
|
-
-- we don't grant this to OMNATA_MANAGEMENT because we'd rather the sync engine couldn't read secrets back once created
|
|
38
|
-
|
|
39
|
-
-- we didn't end up doing this because developers should generally be running in debug mode anyway
|
|
40
|
-
--grant usage on procedure PLUGIN.RETRIEVE_SECRETS_UDF(VARCHAR,VARCHAR)
|
|
41
|
-
--to application role PLUGIN_DEVELOPER;
|
|
38
|
+
;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
create or replace procedure PLUGIN.TEST_OAUTH_TOKEN_EXISTS(SECRET_NAME VARCHAR,EXTERNAL_ACCESS_INTEGRATION_NAME VARCHAR)
|
|
2
2
|
returns object
|
|
3
3
|
language javascript
|
|
4
|
+
COMMENT = $$
|
|
5
|
+
Used during connection configuration to see whether or not an OAuth secret has a token available (i.e. flow has occurred successfully)
|
|
6
|
+
$$
|
|
4
7
|
execute as owner
|
|
5
8
|
as
|
|
6
9
|
$$
|
|
@@ -2,10 +2,12 @@ create or replace procedure PLUGIN.UPDATE_API_CONFIGURATION(APP_DATABASE VARCHAR
|
|
|
2
2
|
EXTERNAL_ACCESS_INTEGRATIONS OBJECT)
|
|
3
3
|
returns object
|
|
4
4
|
language javascript
|
|
5
|
+
COMMENT = $$
|
|
6
|
+
Updates the list of external access integrations that this plugin needs to have its procs and functions bound to.
|
|
7
|
+
$$
|
|
5
8
|
execute as owner
|
|
6
9
|
as
|
|
7
10
|
$$
|
|
8
|
-
// snowflake object automatically injected by Snowpark
|
|
9
11
|
|
|
10
12
|
try{
|
|
11
13
|
let twoDollars=`\$\$`;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
create or replace procedure PLUGIN.UPDATE_NETWORK_RULE_OBJECT(RULE_NAME VARCHAR,VALUE_LIST ARRAY)
|
|
2
2
|
returns object
|
|
3
3
|
language javascript
|
|
4
|
+
COMMENT = $$
|
|
5
|
+
Updates the addresses of a network rule, optionally using the addresses from an existing network rule as a starting point.
|
|
6
|
+
$$
|
|
4
7
|
execute as owner
|
|
5
8
|
as
|
|
6
9
|
$$
|
|
File without changes
|
|
File without changes
|
{omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{omnata_plugin_devkit-0.5.2 → omnata_plugin_devkit-0.5.4}/src/omnata_plugin_devkit/initialiser.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|