mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-08-26 13:17:30 -05:00
🤖 Auto commit for release 'develop' on 2026-08-11
This commit is contained in:
@@ -158,7 +158,10 @@ final class TagController extends Controller
|
|||||||
'currency_id' => (string) $foreignCurrencyId,
|
'currency_id' => (string) $foreignCurrencyId,
|
||||||
'currency_code' => $journal['foreign_currency_code'],
|
'currency_code' => $journal['foreign_currency_code'],
|
||||||
];
|
];
|
||||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
$response[$foreignKey]['difference'] = bcadd(
|
||||||
|
(string) $response[$foreignKey]['difference'],
|
||||||
|
Steam::positive($journal['foreign_amount'])
|
||||||
|
);
|
||||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference'];
|
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,7 +155,10 @@ final class TagController extends Controller
|
|||||||
'currency_id' => (string) $foreignCurrencyId,
|
'currency_id' => (string) $foreignCurrencyId,
|
||||||
'currency_code' => $journal['foreign_currency_code'],
|
'currency_code' => $journal['foreign_currency_code'],
|
||||||
];
|
];
|
||||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
$response[$foreignKey]['difference'] = bcadd(
|
||||||
|
(string) $response[$foreignKey]['difference'],
|
||||||
|
Steam::positive($journal['foreign_amount'])
|
||||||
|
);
|
||||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float
|
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -198,7 +198,13 @@ final class BudgetLimitController extends Controller
|
|||||||
if ($request->expectsJson()) {
|
if ($request->expectsJson()) {
|
||||||
$array = $limit->toArray();
|
$array = $limit->toArray();
|
||||||
// add some extra metadata:
|
// add some extra metadata:
|
||||||
$spentArr = $this->opsRepository->sumExpenses($limit->start_date, $limit->end_date, null, new Collection()->push($budget), $currency);
|
$spentArr = $this->opsRepository->sumExpenses(
|
||||||
|
$limit->start_date,
|
||||||
|
$limit->end_date,
|
||||||
|
null,
|
||||||
|
new Collection()->push($budget),
|
||||||
|
$currency
|
||||||
|
);
|
||||||
$array['spent'] = $spentArr[$currency->id]['sum'] ?? '0';
|
$array['spent'] = $spentArr[$currency->id]['sum'] ?? '0';
|
||||||
$array['left_formatted'] = Amount::formatAnything($limit->transactionCurrency, bcadd($array['spent'], (string) $array['amount']));
|
$array['left_formatted'] = Amount::formatAnything($limit->transactionCurrency, bcadd($array['spent'], (string) $array['amount']));
|
||||||
$array['amount_formatted'] = Amount::formatAnything($limit->transactionCurrency, $limit['amount']);
|
$array['amount_formatted'] = Amount::formatAnything($limit->transactionCurrency, $limit['amount']);
|
||||||
|
|||||||
@@ -284,7 +284,10 @@ final class IndexController extends Controller
|
|||||||
|
|
||||||
if (array_key_exists($currency->id, $spentArr) && array_key_exists('sum', $spentArr[$currency->id])) {
|
if (array_key_exists($currency->id, $spentArr) && array_key_exists('sum', $spentArr[$currency->id])) {
|
||||||
$array['spent'][$currency->id]['spent'] = $spentArr[$currency->id]['sum'];
|
$array['spent'][$currency->id]['spent'] = $spentArr[$currency->id]['sum'];
|
||||||
$array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub($spentInLimits[$currency->id], $spentArr[$currency->id]['sum']));
|
$array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub(
|
||||||
|
$spentInLimits[$currency->id],
|
||||||
|
$spentArr[$currency->id]['sum']
|
||||||
|
));
|
||||||
$array['spent'][$currency->id]['currency_id'] = $currency->id;
|
$array['spent'][$currency->id]['currency_id'] = $currency->id;
|
||||||
$array['spent'][$currency->id]['currency_symbol'] = $currency->symbol;
|
$array['spent'][$currency->id]['currency_symbol'] = $currency->symbol;
|
||||||
$array['spent'][$currency->id]['currency_decimal_places'] = $currency->decimal_places;
|
$array['spent'][$currency->id]['currency_decimal_places'] = $currency->decimal_places;
|
||||||
|
|||||||
@@ -539,7 +539,13 @@ final class BudgetController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get spent amount in this period for this currency.
|
// get spent amount in this period for this currency.
|
||||||
$sum = $this->opsRepository->sumExpenses($currentStart, $currentEnd, $accounts, new Collection()->push($budget), $currency);
|
$sum = $this->opsRepository->sumExpenses(
|
||||||
|
$currentStart,
|
||||||
|
$currentEnd,
|
||||||
|
$accounts,
|
||||||
|
new Collection()->push($budget),
|
||||||
|
$currency
|
||||||
|
);
|
||||||
$amount = Steam::positive($sum[$currency->id]['sum'] ?? '0');
|
$amount = Steam::positive($sum[$currency->id]['sum'] ?? '0');
|
||||||
$chartData[0]['entries'][$title] = Steam::bcround($amount, $currency->decimal_places);
|
$chartData[0]['entries'][$title] = Steam::bcround($amount, $currency->decimal_places);
|
||||||
|
|
||||||
|
|||||||
@@ -122,7 +122,13 @@ class CreateAutoBudgetLimits implements ShouldQueue
|
|||||||
// if has one, calculate expenses and use that as a base.
|
// if has one, calculate expenses and use that as a base.
|
||||||
$repository = app(OperationsRepositoryInterface::class);
|
$repository = app(OperationsRepositoryInterface::class);
|
||||||
$repository->setUser($autoBudget->budget->user);
|
$repository->setUser($autoBudget->budget->user);
|
||||||
$spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
|
$spent = $repository->sumExpenses(
|
||||||
|
$previousStart,
|
||||||
|
$previousEnd,
|
||||||
|
null,
|
||||||
|
new Collection()->push($autoBudget->budget),
|
||||||
|
$autoBudget->transactionCurrency
|
||||||
|
);
|
||||||
$currencyId = $autoBudget->transaction_currency_id;
|
$currencyId = $autoBudget->transaction_currency_id;
|
||||||
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
||||||
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
||||||
@@ -212,7 +218,13 @@ class CreateAutoBudgetLimits implements ShouldQueue
|
|||||||
// if has one, calculate expenses and use that as a base.
|
// if has one, calculate expenses and use that as a base.
|
||||||
$repository = app(OperationsRepositoryInterface::class);
|
$repository = app(OperationsRepositoryInterface::class);
|
||||||
$repository->setUser($autoBudget->budget->user);
|
$repository->setUser($autoBudget->budget->user);
|
||||||
$spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
|
$spent = $repository->sumExpenses(
|
||||||
|
$previousStart,
|
||||||
|
$previousEnd,
|
||||||
|
null,
|
||||||
|
new Collection()->push($autoBudget->budget),
|
||||||
|
$autoBudget->transactionCurrency
|
||||||
|
);
|
||||||
$currencyId = $autoBudget->transaction_currency_id;
|
$currencyId = $autoBudget->transaction_currency_id;
|
||||||
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
||||||
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
||||||
|
|||||||
@@ -206,7 +206,22 @@ class BillRepository implements BillRepositoryInterface, UserGroupInterface
|
|||||||
|
|
||||||
public function getBillsForAccounts(Collection $accounts): Collection
|
public function getBillsForAccounts(Collection $accounts): Collection
|
||||||
{
|
{
|
||||||
$fields = ['bills.id', 'bills.created_at', 'bills.updated_at', 'bills.deleted_at', 'bills.user_id', 'bills.name', 'bills.amount_min', 'bills.amount_max', 'bills.date', 'bills.transaction_currency_id', 'bills.repeat_freq', 'bills.skip', 'bills.automatch', 'bills.active',];
|
$fields = [
|
||||||
|
'bills.id',
|
||||||
|
'bills.created_at',
|
||||||
|
'bills.updated_at',
|
||||||
|
'bills.deleted_at',
|
||||||
|
'bills.user_id',
|
||||||
|
'bills.name',
|
||||||
|
'bills.amount_min',
|
||||||
|
'bills.amount_max',
|
||||||
|
'bills.date',
|
||||||
|
'bills.transaction_currency_id',
|
||||||
|
'bills.repeat_freq',
|
||||||
|
'bills.skip',
|
||||||
|
'bills.automatch',
|
||||||
|
'bills.active',
|
||||||
|
];
|
||||||
$ids = $accounts->pluck('id')->toArray();
|
$ids = $accounts->pluck('id')->toArray();
|
||||||
|
|
||||||
return $this->user->bills()
|
return $this->user->bills()
|
||||||
|
|||||||
@@ -222,7 +222,14 @@ trait AugumentData
|
|||||||
$currentEnd->addMonth();
|
$currentEnd->addMonth();
|
||||||
}
|
}
|
||||||
// primary currency amount.
|
// primary currency amount.
|
||||||
$expenses = $opsRepository->sumExpenses($currentStart, $currentEnd, null, $budgetCollection, $entry->transactionCurrency, $this->convertToPrimary);
|
$expenses = $opsRepository->sumExpenses(
|
||||||
|
$currentStart,
|
||||||
|
$currentEnd,
|
||||||
|
null,
|
||||||
|
$budgetCollection,
|
||||||
|
$entry->transactionCurrency,
|
||||||
|
$this->convertToPrimary
|
||||||
|
);
|
||||||
$spent = $expenses[$currency->id]['sum'] ?? '0';
|
$spent = $expenses[$currency->id]['sum'] ?? '0';
|
||||||
$entry->pc_spent = $spent;
|
$entry->pc_spent = $spent;
|
||||||
|
|
||||||
|
|||||||
@@ -354,7 +354,11 @@ class RecurringEnrichment implements EnrichmentInterface
|
|||||||
|
|
||||||
/** @var RecurrenceRepetition $repetition */
|
/** @var RecurrenceRepetition $repetition */
|
||||||
foreach ($set as $repetition) {
|
foreach ($set as $repetition) {
|
||||||
$recurrence = $this->collection->filter(static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id)->first();
|
$recurrence = $this->collection->filter(
|
||||||
|
static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id
|
||||||
|
)
|
||||||
|
->first()
|
||||||
|
;
|
||||||
$fromDate = clone ($recurrence->latest_date ?? $recurrence->first_date);
|
$fromDate = clone ($recurrence->latest_date ?? $recurrence->first_date);
|
||||||
$recurrenceId = (int) $repetition->recurrence_id;
|
$recurrenceId = (int) $repetition->recurrence_id;
|
||||||
$repId = (int) $repetition->id;
|
$repId = (int) $repetition->id;
|
||||||
|
|||||||
Generated
+28
-28
@@ -2508,16 +2508,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/commonmark",
|
"name": "league/commonmark",
|
||||||
"version": "2.9.1",
|
"version": "2.9.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/thephpleague/commonmark.git",
|
"url": "https://github.com/thephpleague/commonmark.git",
|
||||||
"reference": "73cb188c785abfa7a7bec73487148202968274c6"
|
"reference": "72e9a87efcf41a8e83be3ed0866b69d77565cb12"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/73cb188c785abfa7a7bec73487148202968274c6",
|
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/72e9a87efcf41a8e83be3ed0866b69d77565cb12",
|
||||||
"reference": "73cb188c785abfa7a7bec73487148202968274c6",
|
"reference": "72e9a87efcf41a8e83be3ed0866b69d77565cb12",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2611,7 +2611,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2026-08-09T14:10:38+00:00"
|
"time": "2026-08-11T00:58:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/config",
|
"name": "league/config",
|
||||||
@@ -11034,20 +11034,20 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.13.4",
|
"version": "1.14.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
|
"reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae",
|
||||||
"reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
|
"reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1 || ^8.0"
|
"php": "^8.0"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"doctrine/collections": "<1.6.8",
|
"doctrine/collections": "<1.6.8",
|
||||||
@@ -11082,15 +11082,15 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
|
"source": "https://github.com/myclabs/DeepCopy/tree/1.14.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
|
"url": "https://github.com/mnapoli",
|
||||||
"type": "tidelift"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-01T08:46:24+00:00"
|
"time": "2026-08-11T10:17:44+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
@@ -11742,23 +11742,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-file-iterator",
|
"name": "phpunit/php-file-iterator",
|
||||||
"version": "7.0.0",
|
"version": "7.0.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
||||||
"reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50"
|
"reference": "3ccaa29123548190af12fee7af078dcd7f3ddfab"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6e5aa1fb0a95b1703d83e721299ee18bb4e2de50",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3ccaa29123548190af12fee7af078dcd7f3ddfab",
|
||||||
"reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50",
|
"reference": "3ccaa29123548190af12fee7af078dcd7f3ddfab",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.4"
|
"php": ">=8.4"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^13.0"
|
"phpunit/phpunit": "^13.3.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
@@ -11791,7 +11791,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
|
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
|
"security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/7.0.0"
|
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/7.0.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -11811,7 +11811,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2026-02-06T04:33:26+00:00"
|
"time": "2026-08-10T06:43:12+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-invoker",
|
"name": "phpunit/php-invoker",
|
||||||
@@ -13159,23 +13159,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/type",
|
"name": "sebastian/type",
|
||||||
"version": "7.0.1",
|
"version": "7.0.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/type.git",
|
"url": "https://github.com/sebastianbergmann/type.git",
|
||||||
"reference": "fee0309275847fefd7636167085e379c1dbf6990"
|
"reference": "bd1df467864cb95140414059a535b2d906173fcf"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fee0309275847fefd7636167085e379c1dbf6990",
|
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/bd1df467864cb95140414059a535b2d906173fcf",
|
||||||
"reference": "fee0309275847fefd7636167085e379c1dbf6990",
|
"reference": "bd1df467864cb95140414059a535b2d906173fcf",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.4"
|
"php": ">=8.4"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^13.1.10"
|
"phpunit/phpunit": "^13.3.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
@@ -13204,7 +13204,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/type/issues",
|
"issues": "https://github.com/sebastianbergmann/type/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/type/security/policy",
|
"security": "https://github.com/sebastianbergmann/type/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/type/tree/7.0.1"
|
"source": "https://github.com/sebastianbergmann/type/tree/7.0.2"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -13224,7 +13224,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2026-05-20T06:49:11+00:00"
|
"time": "2026-08-10T08:00:57+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/version",
|
"name": "sebastian/version",
|
||||||
|
|||||||
+2
-2
@@ -78,8 +78,8 @@ return [
|
|||||||
'running_balance_column' => (bool)env_default_when_empty(env('USE_RUNNING_BALANCE'), true), // this is only the default value, is not used.
|
'running_balance_column' => (bool)env_default_when_empty(env('USE_RUNNING_BALANCE'), true), // this is only the default value, is not used.
|
||||||
// see cer.php for exchange rates feature flag.
|
// see cer.php for exchange rates feature flag.
|
||||||
],
|
],
|
||||||
'version' => 'develop/2026-08-10',
|
'version' => 'develop/2026-08-11',
|
||||||
'build_time' => 1786333122,
|
'build_time' => 1786452847,
|
||||||
'api_version' => '2.1.0', // field is no longer used.
|
'api_version' => '2.1.0', // field is no longer used.
|
||||||
'db_version' => 28, // field is no longer used.
|
'db_version' => 28, // field is no longer used.
|
||||||
|
|
||||||
|
|||||||
Generated
+45
-9406
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user