sciveo 0.1.69__tar.gz → 0.1.71__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 (169) hide show
  1. {sciveo-0.1.69 → sciveo-0.1.71}/PKG-INFO +1 -1
  2. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/capture/motion_detection.py +11 -3
  3. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/capture/readers.py +6 -1
  4. sciveo-0.1.71/sciveo/version.py +2 -0
  5. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo.egg-info/PKG-INFO +1 -1
  6. sciveo-0.1.69/sciveo/version.py +0 -2
  7. {sciveo-0.1.69 → sciveo-0.1.71}/README.md +0 -0
  8. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/__init__.py +0 -0
  9. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/api/__init__.py +0 -0
  10. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/api/base.py +0 -0
  11. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/api/predictors.py +0 -0
  12. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/api/server.py +0 -0
  13. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/api/upload.py +0 -0
  14. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/cli.py +0 -0
  15. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/common/__init__.py +0 -0
  16. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/common/configuration.py +0 -0
  17. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/common/model.py +0 -0
  18. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/common/optimizers.py +0 -0
  19. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/common/sampling.py +0 -0
  20. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/content/__init__.py +0 -0
  21. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/content/dataset.py +0 -0
  22. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/content/experiment.py +0 -0
  23. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/content/project.py +0 -0
  24. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/content/runner.py +0 -0
  25. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/__init__.py +0 -0
  26. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/capture/__init__.py +0 -0
  27. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/capture/cam.py +0 -0
  28. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/capture/nvr.py +0 -0
  29. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/__init__.py +0 -0
  30. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/base.py +0 -0
  31. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/encoders/__init__.py +0 -0
  32. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/encoders/base.py +0 -0
  33. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/encoders/normalizer.py +0 -0
  34. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/nlp/__init__.py +0 -0
  35. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/nlp/search.py +0 -0
  36. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/time_series/__init__.py +0 -0
  37. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/time_series/dataset.py +0 -0
  38. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/time_series/predictor.py +0 -0
  39. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/time_series/trainer.py +0 -0
  40. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/ml/time_series/window_generator.py +0 -0
  41. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/__init__.py +0 -0
  42. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/base.py +0 -0
  43. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/job_daemon.py +0 -0
  44. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/layouts/__init__.py +0 -0
  45. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/layouts/base.py +0 -0
  46. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/pipeline.py +0 -0
  47. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/postprocessors/__init__.py +0 -0
  48. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/postprocessors/base.py +0 -0
  49. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/postprocessors/default.py +0 -0
  50. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/__init__.py +0 -0
  51. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/audio/__init__.py +0 -0
  52. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/audio/audio.py +0 -0
  53. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/audio/audio_extractor_process.py +0 -0
  54. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/aws.py +0 -0
  55. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/base.py +0 -0
  56. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/file/__init__.py +0 -0
  57. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/file/archive.py +0 -0
  58. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/__init__.py +0 -0
  59. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/album.py +0 -0
  60. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/album_in_image.py +0 -0
  61. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/depth_esimation.py +0 -0
  62. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/embeddings.py +0 -0
  63. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/filters.py +0 -0
  64. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/generators.py +0 -0
  65. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/histogram.py +0 -0
  66. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/mask.py +0 -0
  67. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/object_detection.py +0 -0
  68. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/resize.py +0 -0
  69. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/segmentation.py +0 -0
  70. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/image/watermark.py +0 -0
  71. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/media_info.py +0 -0
  72. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/nlp/__init__.py +0 -0
  73. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/nlp/address.py +0 -0
  74. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/qr.py +0 -0
  75. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/sci/__init__.py +0 -0
  76. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/sci/base.py +0 -0
  77. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/sci/dataset.py +0 -0
  78. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/sci/time_series/__init__.py +0 -0
  79. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/sci/time_series/predictor.py +0 -0
  80. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/sci/time_series/trainer.py +0 -0
  81. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/tpu_base.py +0 -0
  82. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/video/__init__.py +0 -0
  83. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/video/generators.py +0 -0
  84. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/video/motion_detection.py +0 -0
  85. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/video/resize.py +0 -0
  86. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/video/video_album.py +0 -0
  87. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/video/video_frames.py +0 -0
  88. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/processors/video/video_resample.py +0 -0
  89. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/queues.py +0 -0
  90. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/server.py +0 -0
  91. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/web/__init__.py +0 -0
  92. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/pipelines/web/server.py +0 -0
  93. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/tools/__init__.py +0 -0
  94. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/media/tools/video_interactive.py +0 -0
  95. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/__init__.py +0 -0
  96. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/base.py +0 -0
  97. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/dataset/__init__.py +0 -0
  98. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/dataset/object_detection.py +0 -0
  99. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/evaluation/__init__.py +0 -0
  100. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/evaluation/markdown.py +0 -0
  101. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/evaluation/object_detection.py +0 -0
  102. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/images/__init__.py +0 -0
  103. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/images/base.py +0 -0
  104. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/images/description.py +0 -0
  105. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/images/embeddings.py +0 -0
  106. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/images/object_detection.py +0 -0
  107. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/images/tools.py +0 -0
  108. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/images/transformers.py +0 -0
  109. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/nlp/__init__.py +0 -0
  110. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/nlp/embeddings.py +0 -0
  111. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/nlp/tokenizers/__init__.py +0 -0
  112. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/nlp/tokenizers/bpe.py +0 -0
  113. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/video/__init__.py +0 -0
  114. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/ml/video/description.py +0 -0
  115. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/monitoring/__init__.py +0 -0
  116. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/monitoring/monitor.py +0 -0
  117. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/monitoring/start.py +0 -0
  118. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/monitoring/watchdog/__init__.py +0 -0
  119. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/monitoring/watchdog/base.py +0 -0
  120. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/monitoring/watchdog/process.py +0 -0
  121. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/network/__init__.py +0 -0
  122. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/network/camera.py +0 -0
  123. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/network/sniffer.py +0 -0
  124. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/network/tools.py +0 -0
  125. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/__init__.py +0 -0
  126. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/array.py +0 -0
  127. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/aws/__init__.py +0 -0
  128. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/aws/priority_queue.py +0 -0
  129. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/aws/s3.py +0 -0
  130. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/common.py +0 -0
  131. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/complexity.py +0 -0
  132. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/compress.py +0 -0
  133. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/configuration.py +0 -0
  134. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/crypto.py +0 -0
  135. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/daemon.py +0 -0
  136. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/draw/__init__.py +0 -0
  137. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/draw/contours.py +0 -0
  138. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/formating.py +0 -0
  139. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/hardware.py +0 -0
  140. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/http.py +0 -0
  141. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/logger.py +0 -0
  142. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/os.py +0 -0
  143. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/queue.py +0 -0
  144. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/random.py +0 -0
  145. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/remote.py +0 -0
  146. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/simple_counter.py +0 -0
  147. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/synchronized.py +0 -0
  148. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/timers.py +0 -0
  149. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/tools/totp.py +0 -0
  150. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/web/__init__.py +0 -0
  151. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo/web/common.py +0 -0
  152. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo.egg-info/SOURCES.txt +0 -0
  153. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo.egg-info/dependency_links.txt +0 -0
  154. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo.egg-info/entry_points.txt +0 -0
  155. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo.egg-info/requires.txt +0 -0
  156. {sciveo-0.1.69 → sciveo-0.1.71}/sciveo.egg-info/top_level.txt +0 -0
  157. {sciveo-0.1.69 → sciveo-0.1.71}/setup.cfg +0 -0
  158. {sciveo-0.1.69 → sciveo-0.1.71}/setup.py +0 -0
  159. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_complexity.py +0 -0
  160. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_compress.py +0 -0
  161. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_configuration.py +0 -0
  162. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_crypto.py +0 -0
  163. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_eval_markdown.py +0 -0
  164. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_ml_datasets.py +0 -0
  165. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_monitoring.py +0 -0
  166. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_runner.py +0 -0
  167. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_sampling.py +0 -0
  168. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_tokenizers.py +0 -0
  169. {sciveo-0.1.69 → sciveo-0.1.71}/test/test_totp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.69
3
+ Version: 0.1.71
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -19,6 +19,7 @@ from sciveo.tools.logger import *
19
19
  from sciveo.tools.daemon import DaemonBase
20
20
  from sciveo.media.capture.readers import VideoReaderFFMPEG
21
21
  from sciveo.tools.queue import TouchedFilePathQueue
22
+ from sciveo.tools.simple_counter import SimpleStat
22
23
 
23
24
 
24
25
  class MotionDetectorGrid:
@@ -71,6 +72,8 @@ class VideoMotionDetector:
71
72
  current_threshold = self.configuration["threshold_motion"] * k_motion_level
72
73
  motion_level = np.mean(fgmask)
73
74
 
75
+ self.stat.set(motion_level)
76
+
74
77
  if motion_level > current_threshold:
75
78
  self.count_motion_hold += 1
76
79
  if self.count_motion_hold >= self.configuration["threshold_motion_hold"]:
@@ -82,6 +85,11 @@ class VideoMotionDetector:
82
85
 
83
86
  def __call__(self, list_frames):
84
87
  self.count_motion_hold = 0
88
+ self.stat = SimpleStat()
89
+
90
+ if len(list_frames) > 0:
91
+ for i in range(10):
92
+ fgmask = self.apply(list_frames[0])
85
93
 
86
94
  for frame in list_frames:
87
95
  try:
@@ -131,10 +139,10 @@ class MotionDetectorDaemon(DaemonBase):
131
139
  source_id = file_name_split[0]
132
140
 
133
141
  if source_id in self.configuration:
134
- configuration = self.configuration.get(source_id, { "threshold_motion": 5, "threshold_motion_hold": 8, "grid": [[0.0]] })
142
+ configuration = self.configuration.get(source_id, { "threshold_motion": 5, "threshold_motion_hold": 5, "grid": [[0.0]] })
135
143
  md = self.motion_detectors.get(source_id, VideoMotionDetector(source_id, configuration))
136
- motion = md(VideoReaderFFMPEG.read(file_path, resolution=360, RGB=False, gpu_id=0))
137
-
144
+ motion = md(VideoReaderFFMPEG.read(file_path, resolution=360, RGB=False, gpu_id=-1, framestep=5))
145
+ debug("STAT", source_id, md.stat)
138
146
  if motion:
139
147
  self.on_motion(source_id, file_name, file_path, configuration)
140
148
 
@@ -43,7 +43,7 @@ class VideoReaderFFMPEG:
43
43
  return width, height
44
44
 
45
45
  @staticmethod
46
- def read(file_path, resolution=720, RGB=False, gpu_id=-1, timeout=30):
46
+ def read(file_path, resolution=720, RGB=False, gpu_id=-1, timeout=30, fps=None, framestep=None):
47
47
  timer_video_read = Timer()
48
48
  frames = []
49
49
 
@@ -81,6 +81,11 @@ class VideoReaderFFMPEG:
81
81
  if in_w != out_w or in_h != out_h:
82
82
  ffmpeg_input = ffmpeg_input.filter('scale', out_w, out_h)
83
83
 
84
+ if fps is not None:
85
+ ffmpeg_input = ffmpeg_input.filter('fps', fps=fps)
86
+ if framestep is not None:
87
+ ffmpeg_input = ffmpeg_input.filter('framestep', step=framestep)
88
+
84
89
  process = (
85
90
  ffmpeg_input
86
91
  .output('pipe:', format='rawvideo', pix_fmt=pix_fmt, vsync='vfr')
@@ -0,0 +1,2 @@
1
+
2
+ __version__ = '0.1.71'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.69
3
+ Version: 0.1.71
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -1,2 +0,0 @@
1
-
2
- __version__ = '0.1.69'
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