dt-extensions-sdk 1.6.0__tar.gz → 1.6.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.
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/PKG-INFO +1 -1
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/__about__.py +1 -1
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/extension.py +6 -2
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_status.py +50 -10
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/.github/workflows/gh-pages-docs.yml +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/.github/workflows/publish.yml +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/.gitignore +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/LICENSE.txt +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/README.md +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/dt-sdk-header.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/dt-sdk-logo.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/favicon.ico +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-01-new-extension.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-02-type.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-03-import.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-04-import-remote.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-05-activation.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-06-activation-config.png +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/api/events/event_severity.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/api/events/event_type.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/api/events/index.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/api/extension.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/api/metrics/index.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/api/metrics/metric.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/api/metrics/metric_type.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/assemble.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/build.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/create.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/gencerts.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/help.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/run.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/sign.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/upload.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/cli/wheel.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/conf.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/guides/building.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/guides/extension_structure.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/guides/installation.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/guides/migration.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/index.rst +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/requirements.txt +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/create.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/.gitignore.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/README.md.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/activation.json.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/extension/activationSchema.json.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/extension/extension.yaml.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/extension_name/__init__.py.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/extension_name/__main__.py.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/ruff.toml.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/secrets.json.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/extension_template/setup.py.template +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/main.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/schema.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/activation.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/callback.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/communication.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/event.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/helper.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/metric.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/runtime.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/snapshot.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/throttled_logger.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/mureq/LICENSE +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/mureq/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/mureq/mureq.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/pyproject.toml +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/cli/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/cli/test_dt_sdk.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/cli/test_templates.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/cli/test_types.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/data/snapshot.json +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/__init__.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_activation.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_callback.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_communication.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_extension.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_metric.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_runtime_properties.py +0 -0
- {dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/tests/sdk/test_snapshot.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dt-extensions-sdk
|
3
|
-
Version: 1.6.
|
3
|
+
Version: 1.6.2
|
4
4
|
Project-URL: Documentation, https://github.com/dynatrace-extensions/dt-extensions-python-sdk#readme
|
5
5
|
Project-URL: Issues, https://github.com/dynatrace-extensions/dt-extensions-python-sdk/issues
|
6
6
|
Project-URL: Source, https://github.com/dynatrace-extensions/dt-extensions-python-sdk
|
@@ -1081,13 +1081,17 @@ class Extension:
|
|
1081
1081
|
# Build overall status
|
1082
1082
|
overall_status = Status(StatusValue.OK, "\n".join(messages))
|
1083
1083
|
if any_warning:
|
1084
|
-
|
1084
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
1085
|
+
# overall_status.status = StatusValue.WARNING
|
1086
|
+
overall_status.status = StatusValue.GENERIC_ERROR
|
1085
1087
|
elif all_ok:
|
1086
1088
|
overall_status.status = StatusValue.OK
|
1087
1089
|
elif all_err:
|
1088
1090
|
overall_status.status = StatusValue.GENERIC_ERROR
|
1089
1091
|
else:
|
1090
|
-
|
1092
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
1093
|
+
# overall_status.status = StatusValue.WARNING
|
1094
|
+
overall_status.status = StatusValue.GENERIC_ERROR
|
1091
1095
|
|
1092
1096
|
return overall_status
|
1093
1097
|
|
@@ -192,7 +192,11 @@ class TestStatus(unittest.TestCase):
|
|
192
192
|
time.sleep(1)
|
193
193
|
|
194
194
|
status = ext._build_current_status()
|
195
|
-
|
195
|
+
|
196
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
197
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
198
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
199
|
+
|
196
200
|
self.assertIn("foo1", status.message)
|
197
201
|
self.assertIn("foo2", status.message)
|
198
202
|
|
@@ -214,7 +218,11 @@ class TestStatus(unittest.TestCase):
|
|
214
218
|
time.sleep(1)
|
215
219
|
|
216
220
|
status = ext._build_current_status()
|
217
|
-
|
221
|
+
|
222
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
223
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
224
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
225
|
+
|
218
226
|
self.assertIn("foo1", status.message)
|
219
227
|
self.assertIn("foo2", status.message)
|
220
228
|
|
@@ -236,7 +244,11 @@ class TestStatus(unittest.TestCase):
|
|
236
244
|
time.sleep(1)
|
237
245
|
|
238
246
|
status = ext._build_current_status()
|
239
|
-
|
247
|
+
|
248
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
249
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
250
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
251
|
+
|
240
252
|
self.assertIn("foo1", status.message)
|
241
253
|
self.assertIn("foo2", status.message)
|
242
254
|
|
@@ -257,7 +269,11 @@ class TestStatus(unittest.TestCase):
|
|
257
269
|
time.sleep(1)
|
258
270
|
|
259
271
|
status = ext._build_current_status()
|
260
|
-
|
272
|
+
|
273
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
274
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
275
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
276
|
+
|
261
277
|
self.assertIn("foo1", status.message)
|
262
278
|
|
263
279
|
def test_multistatus_error(self):
|
@@ -325,7 +341,11 @@ class TestStatus(unittest.TestCase):
|
|
325
341
|
time.sleep(0.01)
|
326
342
|
|
327
343
|
status = ext._build_current_status()
|
328
|
-
|
344
|
+
|
345
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
346
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
347
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
348
|
+
|
329
349
|
self.assertIn(
|
330
350
|
"OK: 8 NOK: 2 NOK_reported_errors: 4.5.6.7:80 - DEVICE_CONNECTION_ERROR "
|
331
351
|
"Invalid authorization scheme 2, 6.7.8.9:80 - DEVICE_CONNECTION_ERROR Invalid authorization scheme 3",
|
@@ -401,7 +421,11 @@ class TestStatus(unittest.TestCase):
|
|
401
421
|
time.sleep(0.01)
|
402
422
|
|
403
423
|
status = ext._build_current_status()
|
404
|
-
|
424
|
+
|
425
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
426
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
427
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
428
|
+
|
405
429
|
self.assertIn(
|
406
430
|
"OK: 9 NOK: 1 NOK_reported_errors: 1.2.3.4:80 - AUTHENTICATION_ERROR Invalid authorization scheme 7",
|
407
431
|
status.message,
|
@@ -480,7 +504,11 @@ class TestStatus(unittest.TestCase):
|
|
480
504
|
time.sleep(0.01)
|
481
505
|
|
482
506
|
status = ext._build_current_status()
|
483
|
-
|
507
|
+
|
508
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
509
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
510
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
511
|
+
|
484
512
|
self.assertIn(
|
485
513
|
"OK: 0 NOK: 1 NOK_reported_errors: 1.2.3.4:80 - WARNING Invalid authorization scheme A", status.message
|
486
514
|
)
|
@@ -586,7 +614,11 @@ class TestStatus(unittest.TestCase):
|
|
586
614
|
time.sleep(0.01)
|
587
615
|
|
588
616
|
status = ext._build_current_status()
|
589
|
-
|
617
|
+
|
618
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
619
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
620
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
621
|
+
|
590
622
|
self.assertIn("OK: 1 NOK: 1 NOK_reported_errors: EP_HINT_2 - WARNING EP2 MSG", status.message)
|
591
623
|
|
592
624
|
def test_overall_status_error(self):
|
@@ -683,7 +715,11 @@ class TestStatus(unittest.TestCase):
|
|
683
715
|
time.sleep(0.01)
|
684
716
|
|
685
717
|
status = ext._build_current_status()
|
686
|
-
|
718
|
+
|
719
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
720
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
721
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
722
|
+
|
687
723
|
self.assertIn(
|
688
724
|
"Endpoints OK: 0 NOK: 1 NOK_reported_errors: EP_HINT - WARNING EP MSG\ncallback_multistatus: OK - MULTI MSG",
|
689
725
|
status.message,
|
@@ -717,7 +753,11 @@ class TestStatus(unittest.TestCase):
|
|
717
753
|
time.sleep(0.01)
|
718
754
|
|
719
755
|
status = ext._build_current_status()
|
720
|
-
|
756
|
+
|
757
|
+
# TODO WARNING STATUS: to be restored after EEC 1.313 is released
|
758
|
+
# self.assertEqual(status.status, StatusValue.WARNING)
|
759
|
+
self.assertEqual(status.status, StatusValue.GENERIC_ERROR)
|
760
|
+
|
721
761
|
self.assertIn(
|
722
762
|
"Endpoints OK: 0 NOK: 1 NOK_reported_errors: EP_HINT - INVALID_CONFIG_ERROR "
|
723
763
|
"\ncallback_multistatus: GENERIC_ERROR - \ncallback_status: WARNING - ",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-01-new-extension.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-04-import-remote.png
RENAMED
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/docs/_static/img/migrate-05-activation.png
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
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/__init__.py
RENAMED
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/cli/create/create.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
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/communication.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/throttled_logger.py
RENAMED
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/__init__.py
RENAMED
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/mureq/LICENSE
RENAMED
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/mureq/__init__.py
RENAMED
File without changes
|
{dt_extensions_sdk-1.6.0 → dt_extensions_sdk-1.6.2}/dynatrace_extension/sdk/vendor/mureq/mureq.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
|