Skip to content

Commit

Permalink
Part of OpenRCT2#21421: replace define with constexpr (OpenRCT2#21760)
Browse files Browse the repository at this point in the history
* Part of OpenRCT2#21421: refactor TUNNEL_MAX_COUNT

* Part of OpenRCT2#21421: deleted unused OBJECT_SELECTION_NOT_...

* Part of OpenRCT2#21421: refactor MAX_SERVER_DESCRIPTION_LENGTH

* Part of OpenRCT2#21421: refactor EXPENDITURE_TABLE_MONTH_COUNT

* Part of OpenRCT2#21421: refactor FINANCE_GRAPH_SIZE

* Part of OpenRCT2#21421: refactor NETWORK_STREAM_VERSION and _ID

* Part of OpenRCT2#21421: MONEY_STRING_MAXLENGTH

* Part of OpenRCT2#21421: deleted MAX_USER_STRINGS

* Part of OpenRCT2#21421: refactor USER_STRING_MAX_LENGTH

* Part of OpenRCT2#21421: deleted USER_STRING_END

* Part of OpenRCT2#21421: refactor REAL_NAME_START

* Part of OpenRCT2#21421: refactor REAL_NAME_END

* Part of OpenRCT2#21421: deleted FONT(X) and FONT_OPENRCT2_SPRITE

* Part of OpenRCT2#21421: refactor CURRENCY_SYMBOL_MAX_SIZE

* Part of OpenRCT2#21421: refactor CURRENCY_RATE_MAX_NUM_DIGITS

* Part of OpenRCT2#21421: refactor SCROLLABLE_ROW_HEIGHT

* Part of OpenRCT2#21421: refactor ADD_CLAMP_BODY

* Part of OpenRCT2#21421: applied clang-format to Util.cpp

* Part of OpenRCT2#21421: incorporate feedback from OpenRCT2#21760

* Part of OpenRCT2#21421: revert to nbsp in Currency.cpp

* Part of OpenRCT2#21421: fix merge conflict

* Part of OpenRCT2#21421: fix more merge conflict

* Part of OpenRCT2#21421: apply clang format

* Part of OpenRCT2#21421: using std::numerics for finding bounds

* Part of OpenRCT2#21421: fix reference to kAddClampBody

* Part of OpenRCT2#21421: improved on comments about AddClamp func

* Part of OpenRCT2#21421: apply correct network stream version number

* Part of OpenRCT2#21421: apply clang-format
  • Loading branch information
janclod authored and mrmbernardi committed May 10, 2024
1 parent 473d85b commit 5af1743
Show file tree
Hide file tree
Showing 47 changed files with 168 additions and 211 deletions.
2 changes: 1 addition & 1 deletion src/openrct2-ui/windows/AssetPacks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ static Widget WindowAssetPacksWidgets[] = {
class AssetPacksWindow final : public Window
{
private:
static constexpr int32_t ItemHeight = SCROLLABLE_ROW_HEIGHT + 1;
static constexpr int32_t ItemHeight = kScrollableRowHeight + 1;
static constexpr int32_t ItemCheckBoxSize = ItemHeight - 3;
std::optional<size_t> _highlightedIndex;
std::optional<size_t> _selectedIndex;
Expand Down
10 changes: 5 additions & 5 deletions src/openrct2-ui/windows/Cheats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ static StringId window_cheats_page_titles[] = {
class CheatsWindow final : public Window
{
private:
char _moneySpinnerText[MONEY_STRING_MAXLENGTH]{};
char _moneySpinnerText[kMoneyStringMaxlength]{};
money64 _moneySpinnerValue = CHEATS_MONEY_DEFAULT;
int32_t _parkRatingSpinnerValue{};
int32_t _yearSpinnerValue = 1;
Expand Down Expand Up @@ -709,13 +709,13 @@ static StringId window_cheats_page_titles[] = {
switch (widgetIndex)
{
case WIDX_MONEY_SPINNER_INCREMENT:
_moneySpinnerValue = AddClamp_money64(
_moneySpinnerValue = AddClamp<money64>(
CHEATS_MONEY_INCREMENT_DIV * (_moneySpinnerValue / CHEATS_MONEY_INCREMENT_DIV),
CHEATS_MONEY_INCREMENT_DIV);
InvalidateWidget(WIDX_MONEY_SPINNER);
break;
case WIDX_MONEY_SPINNER_DECREMENT:
_moneySpinnerValue = AddClamp_money64(
_moneySpinnerValue = AddClamp<money64>(
CHEATS_MONEY_INCREMENT_DIV * (_moneySpinnerValue / CHEATS_MONEY_INCREMENT_DIV),
-CHEATS_MONEY_INCREMENT_DIV);
InvalidateWidget(WIDX_MONEY_SPINNER);
Expand Down Expand Up @@ -789,10 +789,10 @@ static StringId window_cheats_page_titles[] = {
CheatsSet(CheatType::NoMoney, GetGameState().Park.Flags & PARK_FLAGS_NO_MONEY ? 0 : 1);
break;
case WIDX_MONEY_SPINNER:
MoneyToString(_moneySpinnerValue, _moneySpinnerText, MONEY_STRING_MAXLENGTH, false);
MoneyToString(_moneySpinnerValue, _moneySpinnerText, kMoneyStringMaxlength, false);
WindowTextInputRawOpen(
this, WIDX_MONEY_SPINNER, STR_ENTER_NEW_VALUE, STR_ENTER_NEW_VALUE, {}, _moneySpinnerText,
MONEY_STRING_MAXLENGTH);
kMoneyStringMaxlength);
break;
case WIDX_SET_MONEY:
CheatsSet(CheatType::SetMoney, _moneySpinnerValue);
Expand Down
6 changes: 3 additions & 3 deletions src/openrct2-ui/windows/CustomCurrency.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ static Widget window_custom_currency_widgets[] = {
case WIDX_SYMBOL_TEXT:
WindowTextInputRawOpen(
this, WIDX_SYMBOL_TEXT, STR_CUSTOM_CURRENCY_SYMBOL_INPUT_TITLE, STR_CUSTOM_CURRENCY_SYMBOL_INPUT_DESC,
{}, CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, CURRENCY_SYMBOL_MAX_SIZE);
{}, CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, kCurrencySymbolMaxSize);
break;
}
}
Expand All @@ -123,7 +123,7 @@ static Widget window_custom_currency_widgets[] = {
WindowTextInputOpen(
this, WIDX_RATE, STR_RATE_INPUT_TITLE, STR_RATE_INPUT_DESC, {}, STR_FORMAT_INTEGER,
static_cast<uint32_t>(CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate),
CURRENCY_RATE_MAX_NUM_DIGITS);
kCurrencyRateMaxNumDigits);
break;
}
}
Expand Down Expand Up @@ -165,7 +165,7 @@ static Widget window_custom_currency_widgets[] = {
case WIDX_SYMBOL_TEXT:
SafeStrCpy(
CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, std::string(text).c_str(),
CURRENCY_SYMBOL_MAX_SIZE);
kCurrencySymbolMaxSize);

gConfigGeneral.CustomCurrencySymbol = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode;

Expand Down
16 changes: 8 additions & 8 deletions src/openrct2-ui/windows/EditorInventionsList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -230,11 +230,11 @@ static Widget _inventionListDragWidgets[] = {
ScreenSize size{};
if (scrollIndex == 0)
{
size.height = static_cast<int32_t>(gameState.ResearchItemsInvented.size()) * SCROLLABLE_ROW_HEIGHT;
size.height = static_cast<int32_t>(gameState.ResearchItemsInvented.size()) * kScrollableRowHeight;
}
else
{
size.height = static_cast<int32_t>(gameState.ResearchItemsUninvented.size()) * SCROLLABLE_ROW_HEIGHT;
size.height = static_cast<int32_t>(gameState.ResearchItemsUninvented.size()) * kScrollableRowHeight;
}
return size;
}
Expand Down Expand Up @@ -279,14 +279,14 @@ static Widget _inventionListDragWidgets[] = {
GfxClear(dpi, paletteIndex);

int16_t boxWidth = widgets[WIDX_RESEARCH_ORDER_SCROLL].width();
int32_t itemY = -SCROLLABLE_ROW_HEIGHT;
int32_t itemY = -kScrollableRowHeight;
auto* dragItem = WindowEditorInventionsListDragGetItem();

const auto& researchList = scrollIndex == 0 ? gameState.ResearchItemsInvented : gameState.ResearchItemsUninvented;
for (const auto& researchItem : researchList)
{
itemY += SCROLLABLE_ROW_HEIGHT;
if (itemY + SCROLLABLE_ROW_HEIGHT < dpi.y || itemY >= dpi.y + dpi.height)
itemY += kScrollableRowHeight;
if (itemY + kScrollableRowHeight < dpi.y || itemY >= dpi.y + dpi.height)
continue;

if (_selectedResearchItem == &researchItem)
Expand All @@ -296,7 +296,7 @@ static Widget _inventionListDragWidgets[] = {
{
// Highlight
top = itemY;
bottom = itemY + SCROLLABLE_ROW_HEIGHT - 1;
bottom = itemY + kScrollableRowHeight - 1;
}
else
{
Expand Down Expand Up @@ -559,7 +559,7 @@ static Widget _inventionListDragWidgets[] = {
auto& researchList = isInvented ? gameState.ResearchItemsInvented : gameState.ResearchItemsUninvented;
for (auto& researchItem : researchList)
{
y -= SCROLLABLE_ROW_HEIGHT;
y -= kScrollableRowHeight;
if (y < 0)
{
return &researchItem;
Expand All @@ -575,7 +575,7 @@ static Widget _inventionListDragWidgets[] = {
auto& researchList = isInvented ? gameState.ResearchItemsInvented : gameState.ResearchItemsUninvented;
for (auto& researchItem : researchList)
{
y -= SCROLLABLE_ROW_HEIGHT;
y -= kScrollableRowHeight;
if (y < 0)
{
return &researchItem;
Expand Down
10 changes: 5 additions & 5 deletions src/openrct2-ui/windows/EditorObjectSelection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
*/
ScreenSize OnScrollGetSize(int32_t scrollIndex) override
{
const auto newHeight = static_cast<int32_t>(_listItems.size() * SCROLLABLE_ROW_HEIGHT);
const auto newHeight = static_cast<int32_t>(_listItems.size() * kScrollableRowHeight);
return { 0, newHeight };
}

Expand Down Expand Up @@ -729,7 +729,7 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
for (size_t i = 0; i < _listItems.size(); i++)
{
const auto& listItem = _listItems[i];
if (screenCoords.y + SCROLLABLE_ROW_HEIGHT >= dpi.y && screenCoords.y <= dpi.y + dpi.height)
if (screenCoords.y + kScrollableRowHeight >= dpi.y && screenCoords.y <= dpi.y + dpi.height)
{
// Draw checkbox
if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) && !(*listItem.flags & 0x20))
Expand All @@ -741,7 +741,7 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
&& !(*listItem.flags & ObjectSelectionFlags::Flag6);
if (highlighted)
{
auto bottom = screenCoords.y + (SCROLLABLE_ROW_HEIGHT - 1);
auto bottom = screenCoords.y + (kScrollableRowHeight - 1);
GfxFilterRect(dpi, { 0, screenCoords.y, width, bottom }, FilterPaletteID::PaletteDarken1);
}

Expand Down Expand Up @@ -800,7 +800,7 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
ft.Add<const char*>(gCommonStringFormatBuffer);
DrawTextEllipsised(dpi, screenCoords, width_limit, STR_STRING, ft, { colour, FontStyle::Medium, darkness });
}
screenCoords.y += SCROLLABLE_ROW_HEIGHT;
screenCoords.y += kScrollableRowHeight;
}
}

Expand Down Expand Up @@ -1538,7 +1538,7 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
*/
int32_t GetObjectFromObjectSelection(ObjectType object_type, int32_t y)
{
int32_t listItemIndex = y / SCROLLABLE_ROW_HEIGHT;
int32_t listItemIndex = y / kScrollableRowHeight;
if (listItemIndex < 0 || static_cast<size_t>(listItemIndex) >= _listItems.size())
return -1;

Expand Down
2 changes: 1 addition & 1 deletion src/openrct2-ui/windows/Finances.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ static Widget _windowFinancesResearchWidgets[] =

uint16_t SummaryMaxAvailableMonth()
{
return std::min<uint16_t>(GetDate().GetMonthsElapsed(), EXPENDITURE_TABLE_MONTH_COUNT - 1);
return std::min<uint16_t>(GetDate().GetMonthsElapsed(), kExpenditureTableMonthCount - 1);
}

#pragma endregion
Expand Down
16 changes: 8 additions & 8 deletions src/openrct2-ui/windows/GuestList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,9 @@ static Widget window_guest_list_widgets[] = {
char Name[256];
};

static constexpr uint8_t SUMMARISED_GUEST_ROW_HEIGHT = SCROLLABLE_ROW_HEIGHT + 11;
static constexpr uint8_t SUMMARISED_GUEST_ROW_HEIGHT = kScrollableRowHeight + 11;
static constexpr auto GUESTS_PER_PAGE = 2000;
static constexpr const auto GUEST_PAGE_HEIGHT = GUESTS_PER_PAGE * SCROLLABLE_ROW_HEIGHT;
static constexpr const auto GUEST_PAGE_HEIGHT = GUESTS_PER_PAGE * kScrollableRowHeight;
static constexpr size_t MaxGroups = 240;

TabId _selectedTab{};
Expand Down Expand Up @@ -500,7 +500,7 @@ static Widget window_guest_list_widgets[] = {
{
case TabId::Individual:
// Count the number of guests
y = static_cast<int32_t>(_guestList.size()) * SCROLLABLE_ROW_HEIGHT;
y = static_cast<int32_t>(_guestList.size()) * kScrollableRowHeight;
_numPages = (_guestList.size() + GUESTS_PER_PAGE - 1) / GUESTS_PER_PAGE;
if (_numPages == 0)
_selectedPage = 0;
Expand Down Expand Up @@ -539,7 +539,7 @@ static Widget window_guest_list_widgets[] = {

void OnScrollMouseOver(int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override
{
auto i = screenCoords.y / (_selectedTab == TabId::Individual ? SCROLLABLE_ROW_HEIGHT : SUMMARISED_GUEST_ROW_HEIGHT);
auto i = screenCoords.y / (_selectedTab == TabId::Individual ? kScrollableRowHeight : SUMMARISED_GUEST_ROW_HEIGHT);
i += static_cast<int32_t>(_selectedPage * GUESTS_PER_PAGE);
if (static_cast<size_t>(i) != _highlightedIndex)
{
Expand All @@ -554,7 +554,7 @@ static Widget window_guest_list_widgets[] = {
{
case TabId::Individual:
{
auto i = screenCoords.y / SCROLLABLE_ROW_HEIGHT;
auto i = screenCoords.y / kScrollableRowHeight;
i += static_cast<int32_t>(_selectedPage * GUESTS_PER_PAGE);
for (const auto& guestItem : _guestList)
{
Expand Down Expand Up @@ -667,14 +667,14 @@ static Widget window_guest_list_widgets[] = {
for (const auto& guestItem : _guestList)
{
// Check if y is beyond the scroll control
if (y + SCROLLABLE_ROW_HEIGHT + 1 >= -0x7FFF && y + SCROLLABLE_ROW_HEIGHT + 1 > dpi.y && y < 0x7FFF
if (y + kScrollableRowHeight + 1 >= -0x7FFF && y + kScrollableRowHeight + 1 > dpi.y && y < 0x7FFF
&& y < dpi.y + dpi.height)
{
// Highlight backcolour and text colour (format)
StringId format = STR_BLACK_STRING;
if (index == _highlightedIndex)
{
GfxFilterRect(dpi, { 0, y, 800, y + SCROLLABLE_ROW_HEIGHT - 1 }, FilterPaletteID::PaletteDarken1);
GfxFilterRect(dpi, { 0, y, 800, y + kScrollableRowHeight - 1 }, FilterPaletteID::PaletteDarken1);
format = STR_WINDOW_COLOUR_2_STRINGID;
}

Expand Down Expand Up @@ -722,7 +722,7 @@ static Widget window_guest_list_widgets[] = {
break;
}
}
y += SCROLLABLE_ROW_HEIGHT;
y += kScrollableRowHeight;
index++;
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/openrct2-ui/windows/LoadSave.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -904,14 +904,14 @@ static Widget window_loadsave_widgets[] =

ScreenSize OnScrollGetSize(int32_t scrollIndex) override
{
return { 0, no_list_items * SCROLLABLE_ROW_HEIGHT };
return { 0, no_list_items * kScrollableRowHeight };
}

void OnScrollMouseOver(int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override
{
int32_t selectedItem;

selectedItem = screenCoords.y / SCROLLABLE_ROW_HEIGHT;
selectedItem = screenCoords.y / kScrollableRowHeight;
if (selectedItem >= no_list_items)
return;

Expand All @@ -924,7 +924,7 @@ static Widget window_loadsave_widgets[] =
{
int32_t selectedItem;

selectedItem = screenCoords.y / SCROLLABLE_ROW_HEIGHT;
selectedItem = screenCoords.y / kScrollableRowHeight;
if (selectedItem >= no_list_items)
return;

Expand Down Expand Up @@ -965,11 +965,11 @@ static Widget window_loadsave_widgets[] =

for (int32_t i = 0; i < no_list_items; i++)
{
int32_t y = i * SCROLLABLE_ROW_HEIGHT;
int32_t y = i * kScrollableRowHeight;
if (y > dpi.y + dpi.height)
break;

if (y + SCROLLABLE_ROW_HEIGHT < dpi.y)
if (y + kScrollableRowHeight < dpi.y)
continue;

StringId stringId = STR_BLACK_STRING;
Expand All @@ -978,7 +978,7 @@ static Widget window_loadsave_widgets[] =
if (i == selected_list_item)
{
stringId = STR_WINDOW_COLOUR_2_STRINGID;
GfxFilterRect(dpi, { 0, y, listWidth, y + SCROLLABLE_ROW_HEIGHT }, FilterPaletteID::PaletteDarken1);
GfxFilterRect(dpi, { 0, y, listWidth, y + kScrollableRowHeight }, FilterPaletteID::PaletteDarken1);
}
// display a marker next to the currently loaded game file
if (_listItems[i].loaded)
Expand Down
22 changes: 11 additions & 11 deletions src/openrct2-ui/windows/Multiplayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
Invalidate();
}

screenSize = { 0, NetworkGetNumPlayers() * SCROLLABLE_ROW_HEIGHT };
screenSize = { 0, NetworkGetNumPlayers() * kScrollableRowHeight };
int32_t i = screenSize.height - window_multiplayer_players_widgets[WIDX_LIST].bottom
+ window_multiplayer_players_widgets[WIDX_LIST].top + 21;
if (i < 0)
Expand All @@ -590,7 +590,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
Invalidate();
}

screenSize = { 0, NetworkGetNumActions() * SCROLLABLE_ROW_HEIGHT };
screenSize = { 0, NetworkGetNumActions() * kScrollableRowHeight };
int32_t i = screenSize.height - window_multiplayer_groups_widgets[WIDX_LIST].bottom
+ window_multiplayer_groups_widgets[WIDX_LIST].top + 21;
if (i < 0)
Expand All @@ -612,7 +612,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
{
case WINDOW_MULTIPLAYER_PAGE_PLAYERS:
{
int32_t index = screenCoords.y / SCROLLABLE_ROW_HEIGHT;
int32_t index = screenCoords.y / kScrollableRowHeight;
if (index >= no_list_items)
return;

Expand All @@ -626,7 +626,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {

case WINDOW_MULTIPLAYER_PAGE_GROUPS:
{
int32_t index = screenCoords.y / SCROLLABLE_ROW_HEIGHT;
int32_t index = screenCoords.y / kScrollableRowHeight;
if (index >= no_list_items)
return;

Expand All @@ -648,7 +648,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
case WINDOW_MULTIPLAYER_PAGE_PLAYERS:
case WINDOW_MULTIPLAYER_PAGE_GROUPS:
{
int32_t index = screenCoords.y / SCROLLABLE_ROW_HEIGHT;
int32_t index = screenCoords.y / kScrollableRowHeight;
if (index >= no_list_items)
return;

Expand Down Expand Up @@ -751,7 +751,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
break;
}

if (screenCoords.y + SCROLLABLE_ROW_HEIGHT + 1 >= dpi.y)
if (screenCoords.y + kScrollableRowHeight + 1 >= dpi.y)
{
thread_local std::string _buffer;
_buffer.reserve(512);
Expand All @@ -762,7 +762,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
if (listPosition == selected_list_item)
{
GfxFilterRect(
dpi, { 0, screenCoords.y, 800, screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1 },
dpi, { 0, screenCoords.y, 800, screenCoords.y + kScrollableRowHeight - 1 },
FilterPaletteID::PaletteDarken1);
_buffer += NetworkGetPlayerName(player);
colour = colours[2];
Expand Down Expand Up @@ -831,7 +831,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
screenCoords.x = 356;
GfxDrawString(dpi, screenCoords, _buffer.c_str(), { colour });
}
screenCoords.y += SCROLLABLE_ROW_HEIGHT;
screenCoords.y += kScrollableRowHeight;
listPosition++;
}
}
Expand Down Expand Up @@ -893,15 +893,15 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
if (i == selected_list_item)
{
GfxFilterRect(
dpi, { 0, screenCoords.y, 800, screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1 },
dpi, { 0, screenCoords.y, 800, screenCoords.y + kScrollableRowHeight - 1 },
FilterPaletteID::PaletteDarken1);
}
if (screenCoords.y > dpi.y + dpi.height)
{
break;
}

if (screenCoords.y + SCROLLABLE_ROW_HEIGHT + 1 >= dpi.y)
if (screenCoords.y + kScrollableRowHeight + 1 >= dpi.y)
{
int32_t groupindex = NetworkGetGroupIndex(_selectedGroup);
if (groupindex != -1)
Expand All @@ -918,7 +918,7 @@ static constexpr StringId WindowMultiplayerPageTitles[] = {
ft.Add<uint16_t>(NetworkGetActionNameStringID(i));
DrawTextBasic(dpi, { 10, screenCoords.y }, STR_WINDOW_COLOUR_2_STRINGID, ft);
}
screenCoords.y += SCROLLABLE_ROW_HEIGHT;
screenCoords.y += kScrollableRowHeight;
}
}

Expand Down

0 comments on commit 5af1743

Please sign in to comment.