evo-cli 0.35.2__tar.gz → 0.36.0__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 (156) hide show
  1. {evo_cli-0.35.2 → evo_cli-0.36.0}/PKG-INFO +1 -1
  2. evo_cli-0.36.0/evo_cli/VERSION +1 -0
  3. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/cred.py +28 -0
  4. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli.egg-info/PKG-INFO +1 -1
  5. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_cred.py +49 -1
  6. evo_cli-0.35.2/evo_cli/VERSION +0 -1
  7. {evo_cli-0.35.2 → evo_cli-0.36.0}/Containerfile +0 -0
  8. {evo_cli-0.35.2 → evo_cli-0.36.0}/HISTORY.md +0 -0
  9. {evo_cli-0.35.2 → evo_cli-0.36.0}/LICENSE +0 -0
  10. {evo_cli-0.35.2 → evo_cli-0.36.0}/MANIFEST.in +0 -0
  11. {evo_cli-0.35.2 → evo_cli-0.36.0}/README.md +0 -0
  12. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/__init__.py +0 -0
  13. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/__main__.py +0 -0
  14. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/base.py +0 -0
  15. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/cli.py +0 -0
  16. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/__init__.py +0 -0
  17. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/agent_toy.py +0 -0
  18. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/claude_code.py +0 -0
  19. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/cloudflare.py +0 -0
  20. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/download.py +0 -0
  21. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/fix_claude.py +0 -0
  22. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/gdrive.py +0 -0
  23. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/gh.py +0 -0
  24. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/__init__.py +0 -0
  25. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_dag.py +0 -0
  26. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_git.py +0 -0
  27. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_hub.py +0 -0
  28. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_mirror.py +0 -0
  29. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_model.py +0 -0
  30. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_mutate.py +0 -0
  31. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_paths.py +0 -0
  32. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_render.py +0 -0
  33. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/_server.py +0 -0
  34. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/check.py +0 -0
  35. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/clone.py +0 -0
  36. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/edit.py +0 -0
  37. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/pull.py +0 -0
  38. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/serve.py +0 -0
  39. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/show.py +0 -0
  40. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/views.py +0 -0
  41. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/index-Cs7hXRPJ.css +0 -0
  42. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/index-CuNOlaH7.js +0 -0
  43. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  44. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  45. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  46. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  47. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  48. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  49. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  50. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  51. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  52. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  53. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  54. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  55. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/harness/web/index.html +0 -0
  56. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/hwid.py +0 -0
  57. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/hwid_reset.py +0 -0
  58. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/image.py +0 -0
  59. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/localproxy.py +0 -0
  60. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/mcp.py +0 -0
  61. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/miniconda.py +0 -0
  62. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/netcheck.py +0 -0
  63. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/ngrok.py +0 -0
  64. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/opencode.py +0 -0
  65. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/openvpn.py +0 -0
  66. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/plantuml.py +0 -0
  67. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/__init__.py +0 -0
  68. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/_dns.py +0 -0
  69. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/_dpi.py +0 -0
  70. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/_hosts.py +0 -0
  71. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/_page.py +0 -0
  72. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/_probe.py +0 -0
  73. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/_spoofdpi.py +0 -0
  74. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/check.py +0 -0
  75. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/fix.py +0 -0
  76. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/probe.py +0 -0
  77. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/route/status.py +0 -0
  78. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/serp.py +0 -0
  79. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/site2s.py +0 -0
  80. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/ssh.py +0 -0
  81. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/storage.py +0 -0
  82. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/sysmon.py +0 -0
  83. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/tts.py +0 -0
  84. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/update.py +0 -0
  85. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/commands/wifi.py +0 -0
  86. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/console.py +0 -0
  87. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/__init__.py +0 -0
  88. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/doctor.py +0 -0
  89. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/google_oauth.py +0 -0
  90. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/migrate.py +0 -0
  91. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/oauth_flow.py +0 -0
  92. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/registry.py +0 -0
  93. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/store.py +0 -0
  94. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/credentials/sync.py +0 -0
  95. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/imaging/__init__.py +0 -0
  96. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/imaging/align.py +0 -0
  97. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/imaging/core.py +0 -0
  98. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/imaging/creds.py +0 -0
  99. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/imaging/errors.py +0 -0
  100. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/imaging/gemini.py +0 -0
  101. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/imaging/ncnn.py +0 -0
  102. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/mcp_registry.py +0 -0
  103. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/openvpn.py +0 -0
  104. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/serp/__init__.py +0 -0
  105. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/serp/client.py +0 -0
  106. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/serp/creds.py +0 -0
  107. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/serp/errors.py +0 -0
  108. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/serp/install.py +0 -0
  109. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/serp/render.py +0 -0
  110. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/__init__.py +0 -0
  111. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/chunking.py +0 -0
  112. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/core.py +0 -0
  113. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/creds.py +0 -0
  114. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/errors.py +0 -0
  115. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/gemini.py +0 -0
  116. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/http.py +0 -0
  117. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/openai.py +0 -0
  118. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/player.py +0 -0
  119. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli/tts/vbee.py +0 -0
  120. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli.egg-info/SOURCES.txt +0 -0
  121. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli.egg-info/dependency_links.txt +0 -0
  122. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli.egg-info/entry_points.txt +0 -0
  123. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli.egg-info/requires.txt +0 -0
  124. {evo_cli-0.35.2 → evo_cli-0.36.0}/evo_cli.egg-info/top_level.txt +0 -0
  125. {evo_cli-0.35.2 → evo_cli-0.36.0}/pyproject.toml +0 -0
  126. {evo_cli-0.35.2 → evo_cli-0.36.0}/setup.cfg +0 -0
  127. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/__init__.py +0 -0
  128. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/fake_evo_agents.py +0 -0
  129. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/fixtures/hub/contract-0.2.0.json +0 -0
  130. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/fixtures/hub/mirror-demo.yaml +0 -0
  131. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_agent_toy.py +0 -0
  132. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_claude_code.py +0 -0
  133. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_cli.py +0 -0
  134. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_console.py +0 -0
  135. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_download.py +0 -0
  136. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_fix_claude.py +0 -0
  137. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_gdrive.py +0 -0
  138. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_gh.py +0 -0
  139. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_harness.py +0 -0
  140. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_harness_clone.py +0 -0
  141. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_harness_dag.py +0 -0
  142. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_harness_hub.py +0 -0
  143. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_harness_show.py +0 -0
  144. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_image.py +0 -0
  145. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_mcp.py +0 -0
  146. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_ngrok.py +0 -0
  147. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_opencode.py +0 -0
  148. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_openvpn.py +0 -0
  149. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_plantuml.py +0 -0
  150. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_route.py +0 -0
  151. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_serp.py +0 -0
  152. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_storage.py +0 -0
  153. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_sysmon.py +0 -0
  154. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_tts.py +0 -0
  155. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_update.py +0 -0
  156. {evo_cli-0.35.2 → evo_cli-0.36.0}/tests/test_wifi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evo_cli
3
- Version: 0.35.2
3
+ Version: 0.36.0
4
4
  Summary: Evolution CLI - a developer toolbox for setting up dev machines
5
5
  Author: maycuatroi
6
6
  Project-URL: Homepage, https://github.com/maycuatroi/evo-cli
@@ -0,0 +1 @@
1
+ 0.36.0
@@ -81,6 +81,34 @@ def get(key_path, export_var):
81
81
  sys.stdout.write("\n")
82
82
 
83
83
 
84
+ def _key_paths(node, prefix=""):
85
+ for key, value in node.items():
86
+ path = f"{prefix}.{key}" if prefix else key
87
+ if isinstance(value, dict) and value:
88
+ yield from _key_paths(value, path)
89
+ else:
90
+ yield path
91
+
92
+
93
+ @cred_group.command("keys", help="List dotted key paths in the store, never their values.")
94
+ @click.argument("pattern", required=False)
95
+ @click.option("--json", "as_json", is_flag=True, help="Print the paths as a JSON list.")
96
+ def keys(pattern, as_json):
97
+ flat = _guard(read_flat)
98
+ flat.pop("_generated", None)
99
+ paths = list(_key_paths(flat))
100
+ if pattern:
101
+ paths = [path for path in paths if pattern.lower() in path.lower()]
102
+ if not paths:
103
+ raise click.ClickException(f"no key path contains '{pattern}'")
104
+
105
+ if as_json:
106
+ sys.stdout.write(json.dumps(paths) + "\n")
107
+ return
108
+ for path in paths:
109
+ sys.stdout.write(path + "\n")
110
+
111
+
84
112
  @cred_group.command("list", help="List every credential in the store with its health.")
85
113
  def list_credentials():
86
114
  _guard(require_folder)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evo_cli
3
- Version: 0.35.2
3
+ Version: 0.36.0
4
4
  Summary: Evolution CLI - a developer toolbox for setting up dev machines
5
5
  Author: maycuatroi
6
6
  Project-URL: Homepage, https://github.com/maycuatroi/evo-cli
@@ -41,7 +41,7 @@ def _write(store, rel, entry):
41
41
 
42
42
  def test_cred_command_is_registered():
43
43
  assert "cred" in cli.commands
44
- for name in ("get", "list", "doctor", "compile", "add", "auth", "refresh", "migrate", "sync", "path"):
44
+ for name in ("get", "keys", "list", "doctor", "compile", "add", "auth", "refresh", "migrate", "sync", "path"):
45
45
  assert name in cli.commands["cred"].commands
46
46
  assert set(cli.commands["cred"].commands["sync"].commands) == {"push", "pull"}
47
47
 
@@ -113,6 +113,54 @@ def test_get_command_missing_key_fails(store):
113
113
  assert "key not found: nope.deeper" in result.output
114
114
 
115
115
 
116
+ def _write_secrets(store):
117
+ _write(store, "ai/openai.json", {"id": "openai", "flat": {"openai_api_key": "sk-live-123"}})
118
+ _write(
119
+ store,
120
+ "net/mikrotik.json",
121
+ {"id": "mikrotik", "flat": {"ialab_network": {"username": "admin-user", "password": "pw-456"}}},
122
+ )
123
+ compile_flat()
124
+
125
+
126
+ def test_keys_lists_every_path_and_no_value(store):
127
+ _write_secrets(store)
128
+
129
+ result = CliRunner().invoke(cli, ["cred", "keys"])
130
+
131
+ assert result.exit_code == 0
132
+ assert result.output.split() == ["openai_api_key", "ialab_network.username", "ialab_network.password"]
133
+ for value in ("sk-live-123", "admin-user", "pw-456"):
134
+ assert value not in result.output
135
+
136
+
137
+ def test_keys_filters_case_insensitively(store):
138
+ _write_secrets(store)
139
+
140
+ result = CliRunner().invoke(cli, ["cred", "keys", "NETWORK"])
141
+
142
+ assert result.exit_code == 0
143
+ assert result.output == "ialab_network.username\nialab_network.password\n"
144
+
145
+
146
+ def test_keys_json_form(store):
147
+ _write_secrets(store)
148
+
149
+ result = CliRunner().invoke(cli, ["cred", "keys", "openai", "--json"])
150
+
151
+ assert result.exit_code == 0
152
+ assert json.loads(result.output) == ["openai_api_key"]
153
+
154
+
155
+ def test_keys_no_match_fails(store):
156
+ _write_secrets(store)
157
+
158
+ result = CliRunner().invoke(cli, ["cred", "keys", "nothing-like-this"])
159
+
160
+ assert result.exit_code != 0
161
+ assert "no key path contains 'nothing-like-this'" in result.output
162
+
163
+
116
164
  def test_set_value_routes_known_key_to_its_spec_file(store):
117
165
  path, existed = set_value("openai_api_key", "sk-new")
118
166
 
@@ -1 +0,0 @@
1
- 0.35.2
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