edx-ace 1.11.3__tar.gz → 1.11.4__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.
- {edx-ace-1.11.3 → edx-ace-1.11.4}/CHANGELOG.rst +27 -31
- edx-ace-1.11.4/PKG-INFO +312 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/README.rst +11 -11
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/__init__.py +1 -1
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/utils/signals.py +4 -0
- edx-ace-1.11.4/edx_ace.egg-info/PKG-INFO +312 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace.egg-info/entry_points.txt +0 -1
- {edx-ace-1.11.3 → edx-ace-1.11.4}/setup.py +2 -2
- edx-ace-1.11.3/PKG-INFO +0 -316
- edx-ace-1.11.3/edx_ace.egg-info/PKG-INFO +0 -316
- {edx-ace-1.11.3 → edx-ace-1.11.4}/LICENSE.txt +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/MANIFEST.in +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/ace.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/apps.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/channel/__init__.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/channel/braze.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/channel/django_email.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/channel/file.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/channel/mixins.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/channel/push_notification.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/channel/sailthru.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/delivery.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/errors.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/message.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/monitoring.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/policy.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/presentation.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/push_notifications/views/__init__.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/recipient.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/recipient_resolver.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/renderers.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/serialization.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/signals.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/templatetags/acetags.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/test_utils/__init__.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/channel/test_braze.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/channel/test_channel_helpers.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/channel/test_django_email.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/channel/test_file_email.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/channel/test_push_notification.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/channel/test_sailthru.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_ace.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_date.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_delivery.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_message.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_policy.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_presentation.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_templates/testapp/edx_ace/testmessage/email/body.html +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/test_templates/testapp/edx_ace/testmessage/email/head.html +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/tests/utils/test_signals.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/utils/__init__.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/utils/date.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/utils/once.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace/utils/plugins.py +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace.egg-info/SOURCES.txt +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace.egg-info/dependency_links.txt +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace.egg-info/not-zip-safe +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace.egg-info/requires.txt +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/edx_ace.egg-info/top_level.txt +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/requirements/base.in +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/requirements/constraints.txt +0 -0
- {edx-ace-1.11.3 → edx-ace-1.11.4}/setup.cfg +0 -0
@@ -1,316 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: edx-ace
|
3
|
-
Version: 1.11.3
|
4
|
-
Summary: Framework for Messaging
|
5
|
-
Home-page: https://github.com/openedx/edx-ace
|
6
|
-
Author: edX
|
7
|
-
Author-email: oscm@edx.org
|
8
|
-
License: AGPL 3.0
|
9
|
-
Description: edX Automated Communication Engine (A.C.E.)
|
10
|
-
###########################################
|
11
|
-
|
12
|
-
|License: AGPL v3| |Python CI| |Publish package to PyPi| |Status| |pypi-badge| |travis-badge| |codecov-badge|
|
13
|
-
|doc-badge| |pyversions-badge|
|
14
|
-
|
15
|
-
Purpose
|
16
|
-
=======
|
17
|
-
|
18
|
-
The `automated communication engine <https://edx-ace.readthedocs.io/en/latest/>`_, A.C.E. for short, is a Django app
|
19
|
-
for messaging learners on the Open edX platform. This
|
20
|
-
app can be installed in any Open edX project, but has only been tested with ``edx-platform``. Email delivery
|
21
|
-
(via Sailthru and Django Email)
|
22
|
-
are the currently supported delivery channels. In the future we may add support for other delivery channels such as push
|
23
|
-
notifications.
|
24
|
-
|
25
|
-
Getting Started
|
26
|
-
===============
|
27
|
-
|
28
|
-
For instructions on starting local development, see `Getting Started <https://github.com/openedx/edx-ace/blob/master/docs/getting_started.rst>`_.
|
29
|
-
|
30
|
-
Getting Help
|
31
|
-
============
|
32
|
-
|
33
|
-
Documentation
|
34
|
-
-------------
|
35
|
-
|
36
|
-
See `the documentation`_. If you need more help see below.
|
37
|
-
|
38
|
-
.. _the documentation: https://edx-ace.readthedocs.io/en/latest/
|
39
|
-
|
40
|
-
More Help
|
41
|
-
----------
|
42
|
-
|
43
|
-
If you're having trouble, we have discussion forums at
|
44
|
-
https://discuss.openedx.org where you can connect with others in the
|
45
|
-
community.
|
46
|
-
|
47
|
-
Our real-time conversations are on Slack. You can request a `Slack
|
48
|
-
invitation`_, then join our `community Slack workspace`_.
|
49
|
-
|
50
|
-
For anything non-trivial, the best path is to open an issue in this
|
51
|
-
repository with as many details about the issue you are facing as you
|
52
|
-
can provide.
|
53
|
-
|
54
|
-
https://github.com/openedx/edx-ace/issues
|
55
|
-
|
56
|
-
For more information about these options, see the `Getting Help`_ page.
|
57
|
-
|
58
|
-
.. _Slack invitation: https://openedx.org/slack
|
59
|
-
.. _community Slack workspace: https://openedx.slack.com/
|
60
|
-
.. _Getting Help: https://openedx.org/getting-help
|
61
|
-
|
62
|
-
License
|
63
|
-
=======
|
64
|
-
|
65
|
-
The code in this repository is licensed under the AGPL 3.0 unless
|
66
|
-
otherwise noted.
|
67
|
-
|
68
|
-
Please see ``LICENSE.txt`` for details.
|
69
|
-
|
70
|
-
Contributing
|
71
|
-
============
|
72
|
-
|
73
|
-
Contributions are very welcome.
|
74
|
-
|
75
|
-
Please read `How To Contribute <https://openedx.org/r/how-to-contribute>`_ for details.
|
76
|
-
|
77
|
-
Even though they were written with ``edx-platform`` in mind, the guidelines
|
78
|
-
should be followed for Open edX code in general.
|
79
|
-
|
80
|
-
PR description template should be automatically applied if you are sending PR from github interface; otherwise you
|
81
|
-
can find it
|
82
|
-
at `PULL_REQUEST_TEMPLATE.md <https://github.com/openedx/edx-ace/blob/master/.github/PULL_REQUEST_TEMPLATE.md>`_
|
83
|
-
|
84
|
-
Issue report template should be automatically applied if you are sending it from github UI as well; otherwise you
|
85
|
-
can find it at `ISSUE_TEMPLATE.md <https://github.com/openedx/edx-ace/blob/master/.github/ISSUE_TEMPLATE.md>`_
|
86
|
-
|
87
|
-
The Open edX Code of Conduct
|
88
|
-
============================
|
89
|
-
|
90
|
-
All community members are expected to follow the `Open edX Code of Conduct`_.
|
91
|
-
|
92
|
-
.. _Open edX Code of Conduct: https://openedx.org/code-of-conduct/
|
93
|
-
|
94
|
-
People
|
95
|
-
======
|
96
|
-
|
97
|
-
The assigned maintainers for this component and other project details may be
|
98
|
-
found in `Backstage`_. Backstage pulls this data from the ``catalog-info.yaml``
|
99
|
-
file in this repo.
|
100
|
-
|
101
|
-
.. _Backstage: https://open-edx-backstage.herokuapp.com/catalog/default/component/edx-ace
|
102
|
-
|
103
|
-
Reporting Security Issues
|
104
|
-
=========================
|
105
|
-
|
106
|
-
Please do not report security issues in public. Please email security@openedx.org.
|
107
|
-
|
108
|
-
.. |pypi-badge| image:: https://img.shields.io/pypi/v/edx-ace.svg
|
109
|
-
:target: https://pypi.python.org/pypi/edx-ace/
|
110
|
-
:alt: PyPI
|
111
|
-
|
112
|
-
.. |travis-badge| image:: https://travis-ci.com/edx/edx-ace.svg?branch=master
|
113
|
-
:target: https://travis-ci.com/edx/edx-ace
|
114
|
-
:alt: Travis
|
115
|
-
|
116
|
-
.. |codecov-badge| image:: http://codecov.io/github/edx/edx-ace/coverage.svg?branch=master
|
117
|
-
:target: http://codecov.io/github/edx/edx-ace?branch=master
|
118
|
-
:alt: Codecov
|
119
|
-
|
120
|
-
.. |doc-badge| image:: https://readthedocs.org/projects/edx-ace/badge/?version=latest
|
121
|
-
:target: http://edx-ace.readthedocs.io/en/latest/
|
122
|
-
:alt: Documentation
|
123
|
-
|
124
|
-
.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/edx-ace.svg
|
125
|
-
:target: https://pypi.python.org/pypi/edx-ace/
|
126
|
-
:alt: Supported Python versions
|
127
|
-
|
128
|
-
.. |license-badge| image:: https://img.shields.io/github/license/edx/edx-ace.svg
|
129
|
-
:target: https://github.com/openedx/edx-ace/blob/master/LICENSE.txt
|
130
|
-
:alt: License
|
131
|
-
|
132
|
-
.. |License: AGPL v3| image:: https://img.shields.io/badge/License-AGPL_v3-blue.svg
|
133
|
-
:target: https://www.gnu.org/licenses/agpl-3.0
|
134
|
-
|
135
|
-
.. |Python CI| image:: https://github.com/openedx/edx-ace/actions/workflows/ci.yml/badge.svg
|
136
|
-
:target: https://github.com/openedx/edx-ace/actions/workflows/ci.yml
|
137
|
-
|
138
|
-
.. |Publish package to PyPi| image:: https://github.com/openedx/edx-ace/actions/workflows/pypi-publish.yml/badge.svg
|
139
|
-
:target: https://github.com/openedx/edx-ace/actions/workflows/pypi-release.yml
|
140
|
-
|
141
|
-
.. |Status| image:: https://img.shields.io/badge/Status-Maintained-brightgreen
|
142
|
-
|
143
|
-
|
144
|
-
Change Log
|
145
|
-
----------
|
146
|
-
|
147
|
-
..
|
148
|
-
All enhancements and patches to edx_ace will be documented
|
149
|
-
in this file. It adheres to the structure of http://keepachangelog.com/ ,
|
150
|
-
but in reStructuredText instead of Markdown (for ease of incorporation into
|
151
|
-
Sphinx documentation and the PyPI description).
|
152
|
-
|
153
|
-
This project adheres to Semantic Versioning (http://semver.org/).
|
154
|
-
|
155
|
-
.. There should always be an "Unreleased" section for changes pending release.
|
156
|
-
|
157
|
-
Unreleased
|
158
|
-
~~~~~~~~~~
|
159
|
-
|
160
|
-
[1.8.0] - 2024-03-06
|
161
|
-
~~~~~~~~~~~~~~~~~~~~
|
162
|
-
* Added support for ``Python 3.12``
|
163
|
-
* Dropped support for ``Django 3.2``
|
164
|
-
|
165
|
-
|
166
|
-
[1.7.0] - 2023-07-21
|
167
|
-
~~~~~~~~~~~~~~~~~~~~
|
168
|
-
|
169
|
-
* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is
|
170
|
-
deprecated
|
171
|
-
* Added support for django 4.2
|
172
|
-
|
173
|
-
[1.6.1] - 2023-02-07
|
174
|
-
~~~~~~~~~~~~~~~~~~~~
|
175
|
-
|
176
|
-
* Updated code coverage target in https://github.com/openedx/edx-ace/pull/189
|
177
|
-
* Updated Python Requirements in https://github.com/openedx/edx-ace/pull/199
|
178
|
-
* **Full Changelog**: https://github.com/openedx/edx-ace/compare/v1.6.0...v1.6.1
|
179
|
-
|
180
|
-
[1.5.0] - 2022-02-15
|
181
|
-
~~~~~~~~~~~~~~~~~~~~
|
182
|
-
|
183
|
-
* Added support for Django40
|
184
|
-
* Removed support for Django22, 30 and 31
|
185
|
-
|
186
|
-
[1.4.1] - 2021-12-06
|
187
|
-
~~~~~~~~~~~~~~~~~~~~
|
188
|
-
|
189
|
-
* Adds in the ability to override frequency caps for Braze emails. Can be accessed via
|
190
|
-
Message options using the key ``override_frequency_capping``. All emails containing the
|
191
|
-
``transactional`` Message option will also override frequency caps.
|
192
|
-
|
193
|
-
[1.4.0] - 2021-11-08
|
194
|
-
~~~~~~~~~~~~~~~~~~~~
|
195
|
-
|
196
|
-
* Deprecate the action_links property
|
197
|
-
* Add a get_action_links method and template tag to allow passing arguments to action links
|
198
|
-
|
199
|
-
[1.3.1] - 2021-08-17
|
200
|
-
~~~~~~~~~~~~~~~~~~~~
|
201
|
-
|
202
|
-
* Adjust name ``handles_delivery_for_message`` to ``overrides_delivery_for_message``
|
203
|
-
|
204
|
-
[1.3.0] - 2021-08-16
|
205
|
-
~~~~~~~~~~~~~~~~~~~~
|
206
|
-
|
207
|
-
* New channel method ``handles_delivery_for_message`` for allowing a default channel
|
208
|
-
to claim a message, even if it would normally be delivered to the configured
|
209
|
-
transactional channel.
|
210
|
-
* Braze: Will handle any message defined in ``ACE_CHANNEL_BRAZE_CAMPAIGNS`` (using the
|
211
|
-
above new feature) to steal campaign messages from the transactional channel as
|
212
|
-
needed.
|
213
|
-
|
214
|
-
[1.2.0] - 2021-07-16
|
215
|
-
~~~~~~~~~~~~~~~~~~~~
|
216
|
-
|
217
|
-
* Added support for django 3.2
|
218
|
-
|
219
|
-
[1.1.1] - 2021-07-09
|
220
|
-
~~~~~~~~~~~~~~~~~~~~
|
221
|
-
|
222
|
-
* Removed upper constraint from Django
|
223
|
-
|
224
|
-
[1.1.0] - 2021-03-26
|
225
|
-
~~~~~~~~~~~~~~~~~~~~
|
226
|
-
|
227
|
-
* Braze: Add ACE_CHANNEL_BRAZE_FROM_EMAIL setting to override the normal from address
|
228
|
-
* Sailthru: Remove Braze rollout waffle flag
|
229
|
-
|
230
|
-
[1.0.1] - 2021-03-15
|
231
|
-
~~~~~~~~~~~~~~~~~~~~
|
232
|
-
|
233
|
-
* Braze: Add an unsubscribe action link
|
234
|
-
* Braze: Don't ask Braze to inline css, as ACE templates already have inline css
|
235
|
-
|
236
|
-
[1.0.0] - 2021-03-11
|
237
|
-
~~~~~~~~~~~~~~~~~~~~
|
238
|
-
|
239
|
-
* BREAKING: Recipient objects now take `lms_user_id` instead of `username`
|
240
|
-
* New `braze_email` backend, needing the following new configuration:
|
241
|
-
|
242
|
-
* ACE_CHANNEL_BRAZE_API_KEY
|
243
|
-
* ACE_CHANNEL_BRAZE_APP_ID
|
244
|
-
* ACE_CHANNEL_BRAZE_REST_ENDPOINT (like `rest.iad-01.braze.com`)
|
245
|
-
* ACE_CHANNEL_BRAZE_CAMPAIGNS (an optional dictionary of ACE message names to Braze campaign identifiers)
|
246
|
-
|
247
|
-
[0.1.18] - 2020-11-19
|
248
|
-
~~~~~~~~~~~~~~~~~~~~~
|
249
|
-
|
250
|
-
* Updated he travis-badge in README.rst to point to travis-ci.com
|
251
|
-
|
252
|
-
[0.1.17] - 2020-10-19
|
253
|
-
~~~~~~~~~~~~~~~~~~~~~
|
254
|
-
|
255
|
-
* Use IntEnum to avoid silent failure in value comparisons
|
256
|
-
|
257
|
-
[0.1.16] - 2020-10-17
|
258
|
-
~~~~~~~~~~~~~~~~~~~~~
|
259
|
-
|
260
|
-
* Fixed Enum usage for Python 3.8 to avoid TypeError when comparing values
|
261
|
-
|
262
|
-
[0.1.15] - 2020-03-11
|
263
|
-
~~~~~~~~~~~~~~~~~~~~~
|
264
|
-
|
265
|
-
* Added support for Python 3.8
|
266
|
-
* Removed support for Django 2.0 and 2.1
|
267
|
-
|
268
|
-
[0.1.14] - 2020-03-11
|
269
|
-
~~~~~~~~~~~~~~~~~~~~~
|
270
|
-
|
271
|
-
* Fix trivial warning from deprecated use of attr library.
|
272
|
-
|
273
|
-
[0.1.13] - 2019-12-06
|
274
|
-
~~~~~~~~~~~~~~~~~~~~~
|
275
|
-
|
276
|
-
* Django22 Support.
|
277
|
-
|
278
|
-
[0.1.12] - 2019-10-16
|
279
|
-
~~~~~~~~~~~~~~~~~~~~~
|
280
|
-
|
281
|
-
* Reply_to field added in emails.
|
282
|
-
|
283
|
-
[0.1.10] - 2018-11-01
|
284
|
-
~~~~~~~~~~~~~~~~~~~~~
|
285
|
-
|
286
|
-
* Django lazy text translations are handled properly.
|
287
|
-
|
288
|
-
|
289
|
-
[0.1.9] - 2018-07-13
|
290
|
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
291
|
-
|
292
|
-
* Updated delivery logging
|
293
|
-
|
294
|
-
|
295
|
-
[0.1.0] - 2017-08-08
|
296
|
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
297
|
-
|
298
|
-
Added
|
299
|
-
_____
|
300
|
-
|
301
|
-
* First release on PyPI.
|
302
|
-
|
303
|
-
Keywords: Django edx
|
304
|
-
Platform: UNKNOWN
|
305
|
-
Classifier: Development Status :: 3 - Alpha
|
306
|
-
Classifier: Framework :: Django
|
307
|
-
Classifier: Framework :: Django :: 4.2
|
308
|
-
Classifier: Intended Audience :: Developers
|
309
|
-
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
310
|
-
Classifier: Natural Language :: English
|
311
|
-
Classifier: Programming Language :: Python :: 3
|
312
|
-
Classifier: Programming Language :: Python :: 3.8
|
313
|
-
Classifier: Programming Language :: Python :: 3.12
|
314
|
-
Description-Content-Type: text/x-rst
|
315
|
-
Provides-Extra: sailthru
|
316
|
-
Provides-Extra: push_notifications
|
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
|