cgcsdk 1.0.12__tar.gz → 1.0.13__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.
Files changed (98) hide show
  1. {cgcsdk-1.0.12/cgcsdk.egg-info → cgcsdk-1.0.13}/PKG-INFO +7 -6
  2. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/.env +1 -1
  3. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/CHANGELOG.md +7 -0
  4. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/cgc.py +1 -1
  5. {cgcsdk-1.0.12/cgc/commands → cgcsdk-1.0.13/cgc/commands/compute}/billing/__init__.py +1 -1
  6. {cgcsdk-1.0.12/cgc/commands → cgcsdk-1.0.13/cgc/commands/compute}/billing/billing_cmd.py +2 -2
  7. {cgcsdk-1.0.12/cgc/commands → cgcsdk-1.0.13/cgc/commands/compute}/billing/billing_responses.py +2 -2
  8. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/volume/volume_cmd.py +1 -1
  9. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/volume/volume_responses.py +1 -1
  10. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/volume/volume_utils.py +2 -1
  11. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/responses_tests.py +1 -1
  12. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/version_control.py +1 -1
  13. {cgcsdk-1.0.12 → cgcsdk-1.0.13/cgcsdk.egg-info}/PKG-INFO +7 -6
  14. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgcsdk.egg-info/SOURCES.txt +4 -4
  15. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/setup.py +6 -6
  16. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/LICENSE +0 -0
  17. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/MANIFEST.in +0 -0
  18. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/README.md +0 -0
  19. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/__init__.py +0 -0
  20. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/__init__.py +0 -0
  21. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/auth/__init__.py +0 -0
  22. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/auth/auth_cmd.py +0 -0
  23. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/auth/auth_responses.py +0 -0
  24. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/auth/auth_utils.py +0 -0
  25. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/cgc_cmd.py +0 -0
  26. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/cgc_cmd_responses.py +0 -0
  27. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/cgc_helpers.py +0 -0
  28. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/cgc_models.py +0 -0
  29. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/compute/__init__.py +0 -0
  30. {cgcsdk-1.0.12/cgc/commands → cgcsdk-1.0.13/cgc/commands/compute}/billing/billing_utils.py +0 -0
  31. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/compute/compute_cmd.py +0 -0
  32. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/compute/compute_models.py +0 -0
  33. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/compute/compute_responses.py +0 -0
  34. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/compute/compute_utils.py +0 -0
  35. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/db/__init__.py +0 -0
  36. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/db/db_cmd.py +0 -0
  37. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/db/db_models.py +0 -0
  38. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/debug/__init__.py +0 -0
  39. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/debug/debug_cmd.py +0 -0
  40. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/exceptions.py +0 -0
  41. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/jobs/__init__.py +0 -0
  42. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/jobs/job_utils.py +0 -0
  43. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/jobs/jobs_cmd.py +0 -0
  44. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/jobs/jobs_responses.py +0 -0
  45. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/resource/__init__.py +0 -0
  46. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/resource/resource_cmd.py +0 -0
  47. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/resource/resource_responses.py +0 -0
  48. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/__init__.py +0 -0
  49. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/keys_cmd.py +0 -0
  50. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/keys_models.py +0 -0
  51. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/keys_responses.py +0 -0
  52. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/keys_utils.py +0 -0
  53. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/secret_cmd.py +0 -0
  54. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/secret_models.py +0 -0
  55. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/secret_responses.py +0 -0
  56. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/user/secret_utils.py +0 -0
  57. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/volume/__init__.py +0 -0
  58. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/commands/volume/data_model.py +0 -0
  59. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/config.py +0 -0
  60. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/sdk/__init__.py +0 -0
  61. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/sdk/exceptions.py +0 -0
  62. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/sdk/job.py +0 -0
  63. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/sdk/postgresql.py +0 -0
  64. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/sdk/resource.py +0 -0
  65. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/server.crt +0 -0
  66. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/telemetry/__init__.py +0 -0
  67. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/telemetry/basic.py +0 -0
  68. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/__init__.py +0 -0
  69. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_billing_invoice.txt +0 -0
  70. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_billing_status.txt +0 -0
  71. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_billing_stop_events_compute.txt +0 -0
  72. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_billing_stop_events_volume.txt +0 -0
  73. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_compute_list.txt +0 -0
  74. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_compute_list_no_labels.txt +0 -0
  75. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_tabulate_response.txt +0 -0
  76. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/tests/desired_responses/test_volume_list.txt +0 -0
  77. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/__init__.py +0 -0
  78. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/click_group.py +0 -0
  79. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/config_utils.py +0 -0
  80. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/consts/__init__.py +0 -0
  81. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/consts/env_consts.py +0 -0
  82. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/consts/message_consts.py +0 -0
  83. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/cryptography/__init__.py +0 -0
  84. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/cryptography/aes_crypto.py +0 -0
  85. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/cryptography/encryption_module.py +0 -0
  86. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/cryptography/rsa_crypto.py +0 -0
  87. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/custom_exceptions.py +0 -0
  88. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/message_utils.py +0 -0
  89. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/prepare_headers.py +0 -0
  90. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/requests_helper.py +0 -0
  91. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/response_utils.py +0 -0
  92. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgc/utils/update.py +0 -0
  93. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgcsdk.egg-info/dependency_links.txt +0 -0
  94. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgcsdk.egg-info/entry_points.txt +0 -0
  95. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgcsdk.egg-info/requires.txt +0 -0
  96. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/cgcsdk.egg-info/top_level.txt +0 -0
  97. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/pyproject.toml +0 -0
  98. {cgcsdk-1.0.12 → cgcsdk-1.0.13}/setup.cfg +0 -0
@@ -1,24 +1,25 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cgcsdk
3
- Version: 1.0.12
3
+ Version: 1.0.13
4
4
  Summary: Comtegra GPU Cloud REST API client
5
+ Home-page: https://git.comtegra.pl/
5
6
  Author: Comtegra AI Team
6
7
  Author-email: ai@comtegra.pl
7
8
  License: BSD 2-clause
8
- Project-URL: Documentation, https://example.com/documentation/
9
- Project-URL: GitHub, https://github.com/foobar/foobar/
10
- Project-URL: Changelog, https://github.com/foobar/foobar/blob/master/CHANGELOG.md
9
+ Project-URL: Documentation, https://docs.cgc.comtegra.cloud/
10
+ Project-URL: GitHub, https://git.comtegra.pl/
11
+ Project-URL: Changelog, https://git.comtegra.pl/foobar/foobar/blob/master/CHANGELOG.md
11
12
  Keywords: cloud,sdk,orchestrator,kubernetes,jupyter-notebook
12
13
  Classifier: Development Status :: 1 - Planning
13
14
  Classifier: Intended Audience :: Science/Research
14
15
  Classifier: License :: OSI Approved :: BSD License
15
16
  Classifier: Operating System :: POSIX :: Linux
16
17
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.4
18
- Classifier: Programming Language :: Python :: 3.5
19
18
  Classifier: Programming Language :: Python :: 3.8
20
19
  Classifier: Programming Language :: Python :: 3.9
21
20
  Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
22
23
  Description-Content-Type: text/markdown
23
24
  License-File: LICENSE
24
25
  Requires-Dist: click
@@ -6,4 +6,4 @@ CONFIG_FILE_NAME = cfg.json
6
6
  TMP_DIR = .tmp
7
7
  RELEASE = 1
8
8
  MAJOR_VERSION = 0
9
- MINOR_VERSION = 12
9
+ MINOR_VERSION = 13
@@ -1,5 +1,12 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.0.13
4
+
5
+ Release on June 05, 2024
6
+
7
+ * increase volume create size to 4 TB (4096 GB)
8
+ * cgc volume list now shows which disk type is used for the volume
9
+
3
10
  ## 1.0.12
4
11
 
5
12
  Release on May 09, 2024
@@ -1,7 +1,7 @@
1
1
  import click
2
2
  from cgc.commands.volume.volume_cmd import volume_group
3
3
  from cgc.commands.compute.compute_cmd import compute_group
4
- from cgc.commands.billing.billing_cmd import billing_group
4
+ from cgc.commands.compute.billing.billing_cmd import billing_group
5
5
  from cgc.commands.db.db_cmd import db_group
6
6
  from cgc.commands.resource.resource_cmd import resource_group
7
7
  from cgc.commands.jobs.jobs_cmd import job_group
@@ -7,7 +7,7 @@ class BillingCommandException(ResponseException):
7
7
 
8
8
  class NoCostsFound(BillingCommandException):
9
9
  def __init__(self) -> None:
10
- super().__init__(f"No costs found in your namespace for current month.")
10
+ super().__init__("No costs found in your namespace for current month.")
11
11
 
12
12
 
13
13
  class NoInvoiceFoundForSelectedMonth(BillingCommandException):
@@ -2,8 +2,8 @@ import click
2
2
 
3
3
  from datetime import datetime
4
4
 
5
- from cgc.commands.billing.billing_utils import verify_input_datetime
6
- from cgc.commands.billing.billing_responses import (
5
+ from cgc.commands.compute.billing.billing_utils import verify_input_datetime
6
+ from cgc.commands.compute.billing.billing_responses import (
7
7
  billing_status_response,
8
8
  billing_invoice_response,
9
9
  stop_events_resource_response,
@@ -1,11 +1,11 @@
1
1
  import calendar
2
- from cgc.commands.billing import (
2
+ from cgc.commands.compute.billing import (
3
3
  NoCostsFound,
4
4
  NoInvoiceFoundForSelectedMonth,
5
5
  NoResourceStopEvents,
6
6
  NoVolumeStopEvents,
7
7
  )
8
- from cgc.commands.billing.billing_utils import (
8
+ from cgc.commands.compute.billing.billing_utils import (
9
9
  get_billing_status_message,
10
10
  get_table_compute_stop_events_message,
11
11
  get_table_volume_stop_events_message,
@@ -54,7 +54,7 @@ def volume_list():
54
54
  "--size",
55
55
  "size",
56
56
  help="Volume size in GiB",
57
- type=click.IntRange(1, 1000),
57
+ type=click.IntRange(1, 4000),
58
58
  required=True,
59
59
  )
60
60
  @click.option(
@@ -26,7 +26,7 @@ def volume_list_response(data: dict) -> str:
26
26
  volume_list_to_print, total_size = get_formatted_volume_list_and_total_size(
27
27
  list_of_volumes
28
28
  )
29
- list_headers = ["name", "used", "size", "type", "mounted to"]
29
+ list_headers = ["name", "used", "size", "type", "disks type", "mounted to"]
30
30
 
31
31
  setup_gauge(f"{get_namespace()}.volume.count", len(list_of_volumes))
32
32
  setup_gauge(f"{get_namespace()}.volume.totalSizeAccumulated", total_size)
@@ -12,12 +12,13 @@ def get_formatted_volume_list_and_total_size(list_of_volumes: list):
12
12
  name = volume["name"]
13
13
  used = volume["used"]
14
14
  size = volume["size"]
15
+ disks_type = volume["disks_type"]
15
16
  access_types = ", ".join(volume["access_types"])
16
17
  mounts = volume["mounted_to"]
17
18
  mounts[:] = [s.rsplit("-", 2)[0] for s in mounts]
18
19
  all_mounted_to = ", ".join(mounts)
19
20
  total_size += int("".join(filter(str.isdigit, size)))
20
- row_list = [name, used, size, access_types, all_mounted_to]
21
+ row_list = [name, used, size, access_types, disks_type, all_mounted_to]
21
22
  list_to_print.append(row_list)
22
23
  return list_to_print, total_size
23
24
 
@@ -17,7 +17,7 @@ from cgc.commands.compute.compute_responses import (
17
17
  template_list_response,
18
18
  template_get_start_path_response,
19
19
  )
20
- from cgc.commands.billing.billing_responses import (
20
+ from cgc.commands.compute.billing.billing_responses import (
21
21
  billing_status_response,
22
22
  billing_invoice_response,
23
23
  stop_events_resource_response,
@@ -57,7 +57,7 @@ def check_version():
57
57
  ] # braking change - 0.9.0, will not work with lower server version
58
58
  server_version = f"{server_release}.{server_major}.{server_minor}"
59
59
  client_version = f"{RELEASE}.{MAJOR_VERSION}.{MINOR_VERSION}"
60
- if server_major > MAJOR_VERSION or server_release > RELEASE:
60
+ if server_major >= MAJOR_VERSION and server_release > RELEASE:
61
61
  click.echo(prepare_error_message(OUTDATED_MAJOR))
62
62
  print_compare_versions(server_version, client_version)
63
63
  while True:
@@ -1,24 +1,25 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cgcsdk
3
- Version: 1.0.12
3
+ Version: 1.0.13
4
4
  Summary: Comtegra GPU Cloud REST API client
5
+ Home-page: https://git.comtegra.pl/
5
6
  Author: Comtegra AI Team
6
7
  Author-email: ai@comtegra.pl
7
8
  License: BSD 2-clause
8
- Project-URL: Documentation, https://example.com/documentation/
9
- Project-URL: GitHub, https://github.com/foobar/foobar/
10
- Project-URL: Changelog, https://github.com/foobar/foobar/blob/master/CHANGELOG.md
9
+ Project-URL: Documentation, https://docs.cgc.comtegra.cloud/
10
+ Project-URL: GitHub, https://git.comtegra.pl/
11
+ Project-URL: Changelog, https://git.comtegra.pl/foobar/foobar/blob/master/CHANGELOG.md
11
12
  Keywords: cloud,sdk,orchestrator,kubernetes,jupyter-notebook
12
13
  Classifier: Development Status :: 1 - Planning
13
14
  Classifier: Intended Audience :: Science/Research
14
15
  Classifier: License :: OSI Approved :: BSD License
15
16
  Classifier: Operating System :: POSIX :: Linux
16
17
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.4
18
- Classifier: Programming Language :: Python :: 3.5
19
18
  Classifier: Programming Language :: Python :: 3.8
20
19
  Classifier: Programming Language :: Python :: 3.9
21
20
  Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
22
23
  Description-Content-Type: text/markdown
23
24
  License-File: LICENSE
24
25
  Requires-Dist: click
@@ -19,15 +19,15 @@ cgc/commands/auth/__init__.py
19
19
  cgc/commands/auth/auth_cmd.py
20
20
  cgc/commands/auth/auth_responses.py
21
21
  cgc/commands/auth/auth_utils.py
22
- cgc/commands/billing/__init__.py
23
- cgc/commands/billing/billing_cmd.py
24
- cgc/commands/billing/billing_responses.py
25
- cgc/commands/billing/billing_utils.py
26
22
  cgc/commands/compute/__init__.py
27
23
  cgc/commands/compute/compute_cmd.py
28
24
  cgc/commands/compute/compute_models.py
29
25
  cgc/commands/compute/compute_responses.py
30
26
  cgc/commands/compute/compute_utils.py
27
+ cgc/commands/compute/billing/__init__.py
28
+ cgc/commands/compute/billing/billing_cmd.py
29
+ cgc/commands/compute/billing/billing_responses.py
30
+ cgc/commands/compute/billing/billing_utils.py
31
31
  cgc/commands/db/__init__.py
32
32
  cgc/commands/db/db_cmd.py
33
33
  cgc/commands/db/db_models.py
@@ -18,11 +18,11 @@ setup(
18
18
  description="Comtegra GPU Cloud REST API client",
19
19
  long_description=long_description,
20
20
  long_description_content_type="text/markdown",
21
- # url="https://github.com/",
21
+ url="https://git.comtegra.pl/",
22
22
  project_urls={
23
- "Documentation": "https://example.com/documentation/",
24
- "GitHub": "https://github.com/foobar/foobar/",
25
- "Changelog": "https://github.com/foobar/foobar/blob/master/CHANGELOG.md",
23
+ "Documentation": "https://docs.cgc.comtegra.cloud/",
24
+ "GitHub": "https://git.comtegra.pl/",
25
+ "Changelog": "https://git.comtegra.pl/foobar/foobar/blob/master/CHANGELOG.md",
26
26
  },
27
27
  author="Comtegra AI Team",
28
28
  author_email="ai@comtegra.pl",
@@ -54,10 +54,10 @@ setup(
54
54
  "License :: OSI Approved :: BSD License",
55
55
  "Operating System :: POSIX :: Linux",
56
56
  "Programming Language :: Python :: 3",
57
- "Programming Language :: Python :: 3.4",
58
- "Programming Language :: Python :: 3.5",
59
57
  "Programming Language :: Python :: 3.8",
60
58
  "Programming Language :: Python :: 3.9",
61
59
  "Programming Language :: Python :: 3.10",
60
+ "Programming Language :: Python :: 3.11",
61
+ "Programming Language :: Python :: 3.12",
62
62
  ],
63
63
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes