muse 0.2.0__tar.gz → 0.2.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.
- {muse-0.2.0 → muse-0.2.2}/CHANGELOG.rst +9 -0
- {muse-0.2.0/muse.egg-info → muse-0.2.2}/PKG-INFO +7 -3
- {muse-0.2.0 → muse-0.2.2}/muse/_version.py +3 -3
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/test_figures.py +4 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/test_linelist.py +4 -1
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/test_response.py +3 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/test_spectral.py +5 -1
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/tests/test_backends.py +3 -1
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/tests/test_synthesis.py +3 -0
- {muse-0.2.0 → muse-0.2.2/muse.egg-info}/PKG-INFO +7 -3
- {muse-0.2.0 → muse-0.2.2}/muse.egg-info/requires.txt +6 -2
- {muse-0.2.0 → muse-0.2.2}/muse.egg-info/scm_version.json +2 -2
- {muse-0.2.0 → muse-0.2.2}/pyproject.toml +6 -2
- {muse-0.2.0 → muse-0.2.2}/MANIFEST.in +0 -0
- {muse-0.2.0 → muse-0.2.2}/README.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/Makefile +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/_static/.gitkeep +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/_static/muse_logo.png +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/changelog.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/conf.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/contributing.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/design.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/index.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/installation.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/make.bat +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/muse.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/nitpick-exceptions +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/reference/data.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/reference/index.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/reference/instrument.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/reference/muse.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/reference/synthesis.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/reference/transforms.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/reference/utils.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/docs/robots.txt +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/README.txt +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/other_instruments/README.txt +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/other_instruments/aia_94_response.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/other_instruments/aia_94_synthesis.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/other_instruments/eis_fe_xii_response.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/other_instruments/eis_fe_xii_synthesis.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/other_instruments/skip_prepare_chianti_line_lists.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/02_vdem_to_muse_fov.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/04_create_sg_responses.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/05_synthesize_muse_observation.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/06_analyze_synthetic_spectra.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/07_density_and_nonthermal_responses.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/08_create_ci_response.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/README.txt +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/skip_01_create_vdem.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/skip_03_prepare_chianti_line_lists.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/licenses/LICENSE.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/licenses/README.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/licenses/TEMPLATE_LICENSE.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/conftest.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/data/README.rst +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/data/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/data/tests/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/data/tests/test_data.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/linelist.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/migration.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/radiometry.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/response.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/response_io.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/spectral.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/test_migration.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/test_radiometry.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/instrument/tests/test_response_io.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/log.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/_backends.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/synthesis.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/tests/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/tests/test_figures.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/tests/test_utils.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/synthesis/utils.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/tests/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/tests/figure_hashes_mpl_3111_ft_2143_astropy_801.json +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/tests/helpers.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/tests/test_documentation.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/tests/test_figures.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/tests/test_helpers.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/tests/test_variables.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/transforms/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/transforms/tests/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/transforms/tests/test_figures.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/transforms/tests/test_transforms.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/transforms/transforms.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/utils/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/utils/documentation.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/utils/tests/__init__.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/utils/tests/test_documentation.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/utils/tests/test_utils.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/utils/utils.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/variables.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/variables_schema.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse/version.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse.egg-info/SOURCES.txt +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse.egg-info/dependency_links.txt +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse.egg-info/not-zip-safe +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse.egg-info/scm_file_list.json +0 -0
- {muse-0.2.0 → muse-0.2.2}/muse.egg-info/top_level.txt +0 -0
- {muse-0.2.0 → muse-0.2.2}/pytest.ini +0 -0
- {muse-0.2.0 → muse-0.2.2}/setup.cfg +0 -0
- {muse-0.2.0 → muse-0.2.2}/setup.py +0 -0
- {muse-0.2.0 → muse-0.2.2}/tox.ini +0 -0
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
0.2.1 (2026-09-07)
|
|
2
|
+
==================
|
|
3
|
+
|
|
4
|
+
Internal Changes
|
|
5
|
+
----------------
|
|
6
|
+
|
|
7
|
+
- Declare Dask, Zarr, netCDF4, and SciPy explicitly instead of relying on xarray extras, and skip tests requiring unavailable optional science dependencies. (`#102 <https://github.com/LM-SAL/muse/pull/102>`__)
|
|
8
|
+
|
|
9
|
+
|
|
1
10
|
0.2.0 (2026-09-07)
|
|
2
11
|
==================
|
|
3
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: muse
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: A library to reduce and analyze data from the MUSE Mission.
|
|
5
5
|
Author-email: MUSE Instrument Team <nfreij@seti.org>
|
|
6
6
|
Project-URL: Documentation, https://muse-lmsal.readthedocs.io/en/latest/
|
|
@@ -23,10 +23,14 @@ Description-Content-Type: text/x-rst
|
|
|
23
23
|
License-File: licenses/LICENSE.rst
|
|
24
24
|
Requires-Dist: astropy>=8.0
|
|
25
25
|
Requires-Dist: attrs>=26.1.0
|
|
26
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: dask[array]>=2026.8.0
|
|
27
|
+
Requires-Dist: loguru>=0.7.0
|
|
28
|
+
Requires-Dist: netCDF4>=1.7.0
|
|
27
29
|
Requires-Dist: numpy>=2.5.0
|
|
30
|
+
Requires-Dist: scipy>=1.18.0
|
|
28
31
|
Requires-Dist: tqdm>=4.70
|
|
29
|
-
Requires-Dist: xarray
|
|
32
|
+
Requires-Dist: xarray>=2026.7.0
|
|
33
|
+
Requires-Dist: zarr>=3.3.0
|
|
30
34
|
Provides-Extra: all
|
|
31
35
|
Requires-Dist: muse[chianti,torch]; extra == "all"
|
|
32
36
|
Provides-Extra: chianti
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 2,
|
|
21
|
+
__version__ = version = '0.2.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 2, 2)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gd336a0a5f'
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import matplotlib.pyplot as plt
|
|
2
2
|
import numpy as np
|
|
3
|
+
import pytest
|
|
3
4
|
|
|
4
5
|
import astropy.units as u
|
|
5
6
|
|
|
6
7
|
from muse.instrument.spectral import create_spectral_response
|
|
7
8
|
from muse.tests.helpers import figure_test, synthetic_effective_area, synthetic_line_list
|
|
8
9
|
|
|
10
|
+
pytest.importorskip("numexpr")
|
|
11
|
+
pytest.importorskip("periodictable")
|
|
12
|
+
|
|
9
13
|
WAVELENGTH_GRID = np.linspace(170.75, 171.25, 501) * u.AA
|
|
10
14
|
|
|
11
15
|
|
|
@@ -165,6 +165,7 @@ def test_no_lines_raises(monkeypatch):
|
|
|
165
165
|
|
|
166
166
|
|
|
167
167
|
def test_missing_xuvtop_raises(monkeypatch):
|
|
168
|
+
pytest.importorskip("ChiantiPy")
|
|
168
169
|
monkeypatch.delenv("XUVTOP", raising=False)
|
|
169
170
|
temperature = xr.DataArray([1e6] * u.K, dims="logT")
|
|
170
171
|
pressure = xr.DataArray([3e15] * u.K / u.cm**3, dims="pressure")
|
|
@@ -174,10 +175,11 @@ def test_missing_xuvtop_raises(monkeypatch):
|
|
|
174
175
|
|
|
175
176
|
@pytest.mark.chianti
|
|
176
177
|
def test_create_chianti_line_list_live_minimum_abundance_scalar_grid(monkeypatch):
|
|
178
|
+
pytest.importorskip("ChiantiPy")
|
|
177
179
|
assert os.environ.get("XUVTOP")
|
|
178
180
|
with warnings.catch_warnings():
|
|
179
181
|
warnings.simplefilter("ignore", RuntimeWarning)
|
|
180
|
-
|
|
182
|
+
chdata = pytest.importorskip("ChiantiPy.tools.data")
|
|
181
183
|
|
|
182
184
|
monkeypatch.delattr(chdata, "Defaults")
|
|
183
185
|
temperature = xr.DataArray([1e6] * u.K, dims="logT")
|
|
@@ -203,6 +205,7 @@ def test_create_chianti_line_list_live_minimum_abundance_scalar_grid(monkeypatch
|
|
|
203
205
|
|
|
204
206
|
@pytest.mark.chianti
|
|
205
207
|
def test_create_chianti_line_list_live_density():
|
|
208
|
+
pytest.importorskip("ChiantiPy")
|
|
206
209
|
assert os.environ.get("XUVTOP")
|
|
207
210
|
temperature = xr.DataArray(10 ** np.arange(5.6, 6.2, 0.2) * u.K, dims="logT")
|
|
208
211
|
density = xr.DataArray([1e8, 1e9] / u.cm**3, dims="density")
|
|
@@ -404,6 +404,9 @@ def test_map_response_to_ci_detector_rejects_invalid_inputs(case, error, match):
|
|
|
404
404
|
)
|
|
405
405
|
@pytest.mark.chianti
|
|
406
406
|
def test_public_response_workflow_composes_through_moment_analysis(tmp_path):
|
|
407
|
+
pytest.importorskip("ChiantiPy")
|
|
408
|
+
pytest.importorskip("numexpr")
|
|
409
|
+
pytest.importorskip("periodictable")
|
|
407
410
|
line_list = create_chianti_line_list(
|
|
408
411
|
xr.DataArray([1e6] * u.K, dims="logT"),
|
|
409
412
|
pressure=xr.DataArray([3e15] * u.K / u.cm**3, dims="pressure"),
|
|
@@ -17,6 +17,9 @@ from muse.instrument.spectral import _evaluate_gaussian_response, create_spectra
|
|
|
17
17
|
from muse.tests.helpers import synthetic_effective_area, synthetic_line_list
|
|
18
18
|
from muse.variables import DEFAULTS_MUSE
|
|
19
19
|
|
|
20
|
+
pytest.importorskip("numexpr")
|
|
21
|
+
pytest.importorskip("periodictable")
|
|
22
|
+
|
|
20
23
|
RESPONSE_NORMALIZATION = 1e-27
|
|
21
24
|
DEFAULT_WAVELENGTH_GRID = np.arange(170.0, 172.002, 0.002) * u.AA
|
|
22
25
|
DOPPLER_VELOCITY = np.array([-200.0, 0.0, 200.0]) * u.km / u.s
|
|
@@ -127,7 +130,8 @@ def test_gaussian_window_matches_full_grid():
|
|
|
127
130
|
expected = gofnt_scaled.data * np.exp(-0.5 * (shift.data / width.data) ** 2) / gaussian_norm / width.data
|
|
128
131
|
|
|
129
132
|
response, _ = _evaluate_gaussian_response(wavelength_grid, line_center, doppler_width, gofnt, gaussian_norm)
|
|
130
|
-
|
|
133
|
+
# NumPy and numexpr can underflow differently in the subnormal Gaussian tails.
|
|
134
|
+
np.testing.assert_allclose(response, expected, rtol=1e-15, atol=np.finfo(expected.dtype).tiny)
|
|
131
135
|
|
|
132
136
|
response, _ = _evaluate_gaussian_response(
|
|
133
137
|
wavelength_grid,
|
|
@@ -40,7 +40,9 @@ def test_numpy_to_torch_caps_precision_at_float32() -> None:
|
|
|
40
40
|
|
|
41
41
|
@pytest.mark.cuda
|
|
42
42
|
def test_torch_numpy_round_trip_cuda() -> None:
|
|
43
|
-
pytest.importorskip("torch")
|
|
43
|
+
torch = pytest.importorskip("torch")
|
|
44
|
+
if not torch.cuda.is_available():
|
|
45
|
+
pytest.skip("CUDA is not available")
|
|
44
46
|
array = np.arange(6.0).reshape(2, 3)
|
|
45
47
|
tensor = numpy_to_torch(array, cuda_device=0)
|
|
46
48
|
assert tensor.is_cuda
|
|
@@ -384,6 +384,9 @@ def test_vdem_synthesis_converts_wavelength_coords_to_angstrom(response, raster)
|
|
|
384
384
|
|
|
385
385
|
@pytest.mark.cuda
|
|
386
386
|
def test_vdem_synthesis_cuda_matches_cpu(response, raster) -> None:
|
|
387
|
+
torch = pytest.importorskip("torch")
|
|
388
|
+
if not torch.cuda.is_available():
|
|
389
|
+
pytest.skip("CUDA is not available")
|
|
387
390
|
cpu = vdem_synthesis(raster, response)
|
|
388
391
|
gpu = vdem_synthesis(raster, response, cuda_device=0, backend="torch")
|
|
389
392
|
assert_dataset_structure(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: muse
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: A library to reduce and analyze data from the MUSE Mission.
|
|
5
5
|
Author-email: MUSE Instrument Team <nfreij@seti.org>
|
|
6
6
|
Project-URL: Documentation, https://muse-lmsal.readthedocs.io/en/latest/
|
|
@@ -23,10 +23,14 @@ Description-Content-Type: text/x-rst
|
|
|
23
23
|
License-File: licenses/LICENSE.rst
|
|
24
24
|
Requires-Dist: astropy>=8.0
|
|
25
25
|
Requires-Dist: attrs>=26.1.0
|
|
26
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: dask[array]>=2026.8.0
|
|
27
|
+
Requires-Dist: loguru>=0.7.0
|
|
28
|
+
Requires-Dist: netCDF4>=1.7.0
|
|
27
29
|
Requires-Dist: numpy>=2.5.0
|
|
30
|
+
Requires-Dist: scipy>=1.18.0
|
|
28
31
|
Requires-Dist: tqdm>=4.70
|
|
29
|
-
Requires-Dist: xarray
|
|
32
|
+
Requires-Dist: xarray>=2026.7.0
|
|
33
|
+
Requires-Dist: zarr>=3.3.0
|
|
30
34
|
Provides-Extra: all
|
|
31
35
|
Requires-Dist: muse[chianti,torch]; extra == "all"
|
|
32
36
|
Provides-Extra: chianti
|
|
@@ -27,10 +27,14 @@ urls."Source Code" = "https://github.com/LM-SAL/muse"
|
|
|
27
27
|
dependencies = [
|
|
28
28
|
"astropy>=8.0",
|
|
29
29
|
"attrs>=26.1.0",
|
|
30
|
-
"
|
|
30
|
+
"dask[array]>=2026.8.0",
|
|
31
|
+
"loguru>=0.7.0",
|
|
32
|
+
"netCDF4>=1.7.0",
|
|
31
33
|
"numpy>=2.5.0",
|
|
34
|
+
"scipy>=1.18.0",
|
|
32
35
|
"tqdm>=4.70",
|
|
33
|
-
"xarray
|
|
36
|
+
"xarray>=2026.7.0",
|
|
37
|
+
"zarr>=3.3.0",
|
|
34
38
|
]
|
|
35
39
|
optional-dependencies.all = ["muse[chianti,torch]"]
|
|
36
40
|
optional-dependencies.chianti = [
|
|
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
|
{muse-0.2.0 → muse-0.2.2}/examples/synthesis_tutorial/07_density_and_nonthermal_responses.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
|
|
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
|