rustplus 6.0.5__tar.gz → 6.0.8__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.
- {rustplus-6.0.5/rustplus.egg-info → rustplus-6.0.8}/PKG-INFO +4 -3
- {rustplus-6.0.5 → rustplus-6.0.8}/requirements.txt +1 -1
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/__init__.py +1 -1
- rustplus-6.0.8/rustplus/icons/radtown.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/rustplus_proto/rustplus.py +6 -1
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/rust_api.py +1 -1
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/utils.py +13 -12
- {rustplus-6.0.5 → rustplus-6.0.8/rustplus.egg-info}/PKG-INFO +4 -3
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus.egg-info/SOURCES.txt +1 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus.egg-info/requires.txt +1 -1
- {rustplus-6.0.5 → rustplus-6.0.8}/setup.py +9 -9
- {rustplus-6.0.5 → rustplus-6.0.8}/LICENSE +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/MANIFEST.in +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/README.md +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/annotations/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/annotations/chat_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/annotations/command.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/annotations/entity_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/annotations/protobuf_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/annotations/team_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/commands/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/commands/chat_command.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/commands/chat_command_data.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/commands/command_options.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/events/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/events/chat_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/events/entity_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/events/protobuf_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/events/team_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/exceptions/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/exceptions/exceptions.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/airfield.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/arctic_base.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/bandit.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/barn.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/cargo.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/chinook.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/chinook_blades.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/crate.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/desert_base.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/dome.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/excavator.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/explosion.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/ferryterminal.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/fishing.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/harbour.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/icon.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/junkyard.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/large_oil_rig.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/launchsite.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/lighthouse.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/military_tunnels.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/mining_outpost.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/mining_quarry_hqm.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/mining_quarry_stone.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/mining_quarry_sulfur.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/missile_silo.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/outpost.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/oxums.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/patrol.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/power_plant.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/satellite.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/sewer.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/small_oil_rig.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/stables.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/supermarket.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/swamp.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/train.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/train_yard.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/underwater_lab.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/vending_machine.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/icons/water_treatment.png +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/identification/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/identification/handler_list.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/identification/registered_listener.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/identification/server_details.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/camera/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/camera/camera_constants.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/camera/camera_manager.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/camera/camera_parser.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/camera/structures.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/fcm/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/fcm/fcm_listener.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/proxy/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/proxy/proxy_value_grabber.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/ratelimiter/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/rustplus_proto/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/websocket/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/remote/websocket/ws.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_chat_message.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_contents.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_entity_info.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_error.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_info.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_item.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_map.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_marker.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_team_info.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/rust_time.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/serialization.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/structs/util.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/deprecated.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/emojis.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/fonts/PermanentMarker.ttf +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/fonts/__init__.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/grab_items.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus/utils/yielding_event.py +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus.egg-info/dependency_links.txt +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/rustplus.egg-info/top_level.txt +0 -0
- {rustplus-6.0.5 → rustplus-6.0.8}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: rustplus
|
|
3
|
-
Version: 6.0.
|
|
3
|
+
Version: 6.0.8
|
|
4
4
|
Summary: A python wrapper for the Rust Plus API
|
|
5
5
|
Home-page: https://github.com/olijeffers0n/rustplus
|
|
6
6
|
Author: olijeffers0n
|
|
@@ -17,12 +17,13 @@ Requires-Dist: http-ece
|
|
|
17
17
|
Requires-Dist: requests
|
|
18
18
|
Requires-Dist: numpy
|
|
19
19
|
Requires-Dist: scipy
|
|
20
|
-
Requires-Dist: betterproto==2.0.
|
|
20
|
+
Requires-Dist: betterproto==2.0.0b7
|
|
21
21
|
Dynamic: author
|
|
22
22
|
Dynamic: description
|
|
23
23
|
Dynamic: description-content-type
|
|
24
24
|
Dynamic: home-page
|
|
25
25
|
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
26
27
|
Dynamic: project-url
|
|
27
28
|
Dynamic: requires-dist
|
|
28
29
|
Dynamic: requires-python
|
|
Binary file
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
2
2
|
# sources: rustplus.proto
|
|
3
3
|
# plugin: python-betterproto
|
|
4
|
+
# This file has been @generated
|
|
5
|
+
|
|
4
6
|
from dataclasses import dataclass
|
|
5
7
|
from typing import List
|
|
6
8
|
|
|
@@ -8,6 +10,7 @@ import betterproto
|
|
|
8
10
|
|
|
9
11
|
|
|
10
12
|
class AppEntityType(betterproto.Enum):
|
|
13
|
+
UnknownType = 0
|
|
11
14
|
Switch = 1
|
|
12
15
|
Alarm = 2
|
|
13
16
|
StorageMonitor = 3
|
|
@@ -27,6 +30,7 @@ class AppMarkerType(betterproto.Enum):
|
|
|
27
30
|
|
|
28
31
|
|
|
29
32
|
class AppCameraRaysEntityType(betterproto.Enum):
|
|
33
|
+
UnknownType = 0
|
|
30
34
|
Tree = 1
|
|
31
35
|
Player = 2
|
|
32
36
|
|
|
@@ -278,6 +282,7 @@ class AppInfo(betterproto.Message):
|
|
|
278
282
|
nexus: str = betterproto.string_field(13)
|
|
279
283
|
nexus_id: int = betterproto.int32_field(14)
|
|
280
284
|
nexus_zone: str = betterproto.string_field(15)
|
|
285
|
+
cameras_enabled: bool = betterproto.bool_field(16)
|
|
281
286
|
|
|
282
287
|
|
|
283
288
|
@dataclass
|
|
@@ -427,7 +432,7 @@ class AppClanChat(betterproto.Message):
|
|
|
427
432
|
|
|
428
433
|
@dataclass
|
|
429
434
|
class AppNexusAuth(betterproto.Message):
|
|
430
|
-
|
|
435
|
+
server_id: str = betterproto.string_field(1)
|
|
431
436
|
player_token: int = betterproto.int32_field(2)
|
|
432
437
|
|
|
433
438
|
|
|
@@ -333,7 +333,7 @@ class RustSocket:
|
|
|
333
333
|
for marker in map_markers:
|
|
334
334
|
if add_events:
|
|
335
335
|
if marker.type in [2, 4, 5, 6, 8]:
|
|
336
|
-
icon = convert_marker(
|
|
336
|
+
icon = convert_marker(int(marker.type), marker.rotation)
|
|
337
337
|
if marker.type == 6:
|
|
338
338
|
x, y = marker.x, marker.y
|
|
339
339
|
y = min(max(y, 0), map_size)
|
|
@@ -144,31 +144,31 @@ async def avatar_processing(
|
|
|
144
144
|
return border_image
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
def convert_marker(
|
|
147
|
+
def convert_marker(marker_type: int, angle) -> Image.Image:
|
|
148
148
|
name_to_file = {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
2: "explosion.png",
|
|
150
|
+
4: "chinook.png",
|
|
151
|
+
5: "cargo.png",
|
|
152
|
+
6: "crate.png",
|
|
153
|
+
8: "patrol.png",
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
with resources.path(ICONS_PATH, name_to_file[
|
|
156
|
+
with resources.path(ICONS_PATH, name_to_file[marker_type]) as path:
|
|
157
157
|
icon = Image.open(path).convert("RGBA")
|
|
158
158
|
|
|
159
|
-
if
|
|
159
|
+
if marker_type == 6:
|
|
160
160
|
icon = icon.resize((85, 85))
|
|
161
|
-
elif
|
|
161
|
+
elif marker_type == 2:
|
|
162
162
|
icon = icon.resize((96, 96))
|
|
163
|
-
elif
|
|
163
|
+
elif marker_type == 4 or marker_type == 8:
|
|
164
164
|
blades_file = "chinook_blades.png"
|
|
165
|
-
blades_size = (100, 100) if
|
|
165
|
+
blades_size = (100, 100) if marker_type == 4 else (200, 200)
|
|
166
166
|
|
|
167
167
|
with resources.path(ICONS_PATH, blades_file) as path:
|
|
168
168
|
blades = Image.open(path).convert("RGBA")
|
|
169
169
|
blades = blades.resize(blades_size)
|
|
170
170
|
|
|
171
|
-
if
|
|
171
|
+
if marker_type == 4:
|
|
172
172
|
icon.paste(blades, (64 - 50, 96 - 50), blades)
|
|
173
173
|
icon.paste(blades, (64 - 50, 32 - 50), blades)
|
|
174
174
|
else:
|
|
@@ -217,6 +217,7 @@ def convert_monument(name: str, override_images: Dict[str, Image.Image]) -> Imag
|
|
|
217
217
|
"mining_quarry_hqm_display_name": "mining_quarry_hqm.png",
|
|
218
218
|
"train_tunnel_link_display_name": "train.png",
|
|
219
219
|
"train_tunnel_display_name": "train.png",
|
|
220
|
+
"radtown": "radtown.png",
|
|
220
221
|
}
|
|
221
222
|
|
|
222
223
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: rustplus
|
|
3
|
-
Version: 6.0.
|
|
3
|
+
Version: 6.0.8
|
|
4
4
|
Summary: A python wrapper for the Rust Plus API
|
|
5
5
|
Home-page: https://github.com/olijeffers0n/rustplus
|
|
6
6
|
Author: olijeffers0n
|
|
@@ -17,12 +17,13 @@ Requires-Dist: http-ece
|
|
|
17
17
|
Requires-Dist: requests
|
|
18
18
|
Requires-Dist: numpy
|
|
19
19
|
Requires-Dist: scipy
|
|
20
|
-
Requires-Dist: betterproto==2.0.
|
|
20
|
+
Requires-Dist: betterproto==2.0.0b7
|
|
21
21
|
Dynamic: author
|
|
22
22
|
Dynamic: description
|
|
23
23
|
Dynamic: description-content-type
|
|
24
24
|
Dynamic: home-page
|
|
25
25
|
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
26
27
|
Dynamic: project-url
|
|
27
28
|
Dynamic: requires-dist
|
|
28
29
|
Dynamic: requires-python
|
|
@@ -12,23 +12,23 @@ with open("requirements.txt") as input_file:
|
|
|
12
12
|
for line in input_file.readlines():
|
|
13
13
|
requirements.append(line.strip())
|
|
14
14
|
|
|
15
|
-
with open("README.md", errors=
|
|
15
|
+
with open("README.md", errors="ignore") as input_file:
|
|
16
16
|
readme = input_file.read()
|
|
17
17
|
|
|
18
18
|
setup(
|
|
19
|
-
name=
|
|
20
|
-
author=
|
|
21
|
-
url=
|
|
19
|
+
name="rustplus",
|
|
20
|
+
author="olijeffers0n",
|
|
21
|
+
url="https://github.com/olijeffers0n/rustplus",
|
|
22
22
|
project_urls={
|
|
23
23
|
"Issue tracker": "https://github.com/olijeffers0n/rustplus/issues",
|
|
24
24
|
},
|
|
25
25
|
version=version,
|
|
26
|
-
packages=find_packages(include=[
|
|
27
|
-
license=
|
|
28
|
-
description=
|
|
26
|
+
packages=find_packages(include=["rustplus", "rustplus.*"]),
|
|
27
|
+
license="MIT",
|
|
28
|
+
description="A python wrapper for the Rust Plus API",
|
|
29
29
|
long_description=readme,
|
|
30
30
|
include_package_data=True,
|
|
31
|
-
long_description_content_type=
|
|
31
|
+
long_description_content_type="text/markdown",
|
|
32
32
|
install_requires=requirements,
|
|
33
|
-
python_requires=
|
|
33
|
+
python_requires=">=3.8.0",
|
|
34
34
|
)
|
|
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
|
|
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
|