366 Commits

Author SHA1 Message Date
b20170e5bc chore(docs): fix some typos in comment (#13209)
Signed-off-by: bytesingsong <bytesing@icloud.com>
2025-07-12 12:52:33 +02:00
55eab8a397 feat: add Network Version 27 skeleton (#13125)
* feat: network version 27 skeleton

* fix(nv27): skip TockFix actors version sanity check

As per comment inline, this is getting in the way of landing a skeleton
for nv27 with an identical actors bundle so version resolution for v16 CIDs
was showing 17.

---------

Co-authored-by: Rod Vagg <rod@vagg.org>
2025-06-26 08:52:48 +02:00
36b2478fdb feat(fip0100): updates to FIP including Teep->Tock 2025-03-19 13:43:52 +11:00
637e21519d chore(fees): add initial fees & migration testing (FIP-0100) (#12942) 2025-03-19 13:43:52 +11:00
e894b7f52d feat: add GenesisTimestamp to NetworkParams (#12925) 2025-02-28 12:45:43 +01:00
685c83aa53 Address review
Signed-off-by: Jakub Sztandera <oss@kubuxu.com>
2025-02-19 18:49:02 +01:00
96684f7c68 Add StateCall to StateModuleAPI, it is already provided by Gateway
Signed-off-by: Jakub Sztandera <oss@kubuxu.com>
2025-02-19 18:49:01 +01:00
b1376cfbd2 feat(api)!: expose StateGetNetworkParams in Lotus Gateway API and remove SupportedProofTypes (#12881)
* refactor(api)!: remove SupportedProofTypes from StateGetNetworkParams

Breaking change: The SupportedProofTypes field has been removed from StateGetNetworkParams. This field was unreliable as it didn't match  the FVM's actual supported proofs and was frequently overlooked during proof type updates

* feat: expose StateGetNetworkParams in Lotus Gateway API

feat: expose StateGetNetworkParams in Lotus Gateway API

* chore: update changelog

chore: update changelog
2025-02-10 08:36:54 +01:00
0857ce54dc chore: bump deps, set calibnet nv25 epoch, change nv25-codename (#12754)
* chore: update codename for nv25 to "Teep"
* chore: set upgrade epoch for Calibration net
* chore: fix GenesisNetworkVersion for butterfly
* chore: set upgrade height for butterflynet
* chore: update to builtin-actors v16.0.0-rc1
* chore: update go-state-types to v0.16.0-rc1
* chore: update filecoin-ffi to v1.32.0-rc1
2024-12-05 15:04:46 +11:00
64736eaab0 feat: api: market pending proposal API/CLI (#12724) 2024-11-29 15:28:24 +11:00
b0de2bd64b feat: nv25 network skeleton (#12707)
* chore: update dependencies and stuff

* update stuff part 2

* chore: make gen

* chore: update UpgradeTuktukHeight to var

* chore: make actors-gen
2024-11-25 09:48:20 +01:00
467c6ff63d chore(deps): adapt to QAP API changes
Ref: https://github.com/filecoin-project/go-state-types/pull/308
2024-11-21 15:19:49 +11:00
d4b8af99b2 fix(miner): fix new bug in StateMinerPreCommitDepositForPower calculation (#12595)
Regression introduced by refactoring in
https://github.com/filecoin-project/lotus/pull/12384 where the NV16 special
case was missed and the full sector weight calculation was applied. The lack of
this special case essentially reverts FIP-0034 for this API, but not for actors
which would have a different PCD calculation.
2024-10-14 18:43:32 +02:00
49d6c8a0b8 feat(fip0081): implement pledge calc change + ramp w/ migration test
Closes: https://github.com/filecoin-project/lotus/issues/12494
2024-10-03 21:07:27 +10:00
e16e08a7a6 fix(drand): StateGetBeaconEntry uses chain beacons for historical epochs (#12428)
* fix(drand): `StateGetBeaconEntry` uses chain beacons for historical epochs

Fixes: https://github.com/filecoin-project/lotus/issues/12414

Previously StateGetBeaconEntry would always try and use a drand beacon to get
the appropriate round. But as drand has shut down old beacons and we've
removed client details from Lotus, it has stopped working for historical
beacons.
This fix restores historical beacon entries by using the on-chain lookup,
however it now follows the rules used by StateGetRandomnessFromBeacon and the
get_beacon_randomness syscall which has some quirks with null rounds prior to
nv14. See https://github.com/filecoin-project/lotus/issues/12414#issuecomment-2320034935
for specifics.

StateGetBeaconEntry still blocks for future epochs and uses live drand beacon
clients to wait for and fetch rounds as they are available.

* fixup! fix(drand): `StateGetBeaconEntry` uses chain beacons for historical epochs

* fixup! fix(drand): `StateGetBeaconEntry` uses chain beacons for historical epochs
2024-09-27 12:55:14 +02:00
06bec3a72f feat(miner): add DDO-friendly StateMinerInitialPledgeForSector (#12384)
* feat(miner): add DDO-friendly StateMinerInitialPledgeForSector

Fixes: https://github.com/filecoin-project/lotus/issues/12369

deprecate StateMinerInitialPledgeCollateral since it only accounts for deals
in PCI, which aren't present in a DDO world

* feat: simplify StateMinerInitialPledgeForSector arguments

* feat(miner): use StateMinerInitialPledgeForSector for collateral calcs

* docs: add StateMinerInitialPledgeForSector to CHANGELOG

* fix: undo unnecessary docsgen changes

* chore(state): use types.EmptyInt as err return instead of big.Zero()

* chore(miner): add tests for pledge calculations

* doc(miner): more docs about pledge calculation delta

* chore(miner): tweaks to pledge api from feedback
2024-09-25 16:51:55 +10:00
Phi
df5cce6d24 chore: update network upgrade name
chore: update network upgrade name
2024-09-13 17:35:41 +02:00
3c8433d49b chore: remaining steps 2024-09-13 17:35:41 +02:00
a83d02efba chore: deps: bump xerrors / fix lint (#12438) 2024-09-07 21:43:15 +00:00
d7b218e148 chore: ffi: copy verifier iface, mock & ffi out of storage (#11581)
* chore: copy verifier iface, mock & ffi out of storage

one step toward a cleaner separation of miner & chain

* ffi: s/verifier/proofs, incorporate GenerateUnsealedCID

* fix: ffi: use non-ffi version of GenerateUnsealedCID

* doc: proofs: document GenerateUnsealedCID use
2024-08-09 11:04:36 +10:00
1bc8a8b32c chore: remove (deprecated) deps on build/ proxy-constants
This is a large diff, yet should have exactly zero functional changes

Ideally as a result of this some parts of the depchain will become lighter,
with downstream reaping the same benefits as the team that initiated this split.

P.S. work was done while forming better intuition of current dependency graph
2024-07-22 17:36:12 +04:00
428524fdd8 chore: lint: enable method godoc linting 2024-07-19 11:10:11 +10:00
21abfc69fb feat: api: Clean API for Miners (#12112)
* proofparams alternate

* createminer

* const factored from /build and types updated to use it

* buildconstants for more places

* deprecate msg

* itest cleanup

* alerting interface

* house cleaning

* rm policy and drand from buildconstants

* clean up curio further

* aussie waffle

* pr fixes

* fix lints

* little fixes

* oops this got updated

* unbreak test builds

* test fixes

* comments - cleanups

* itests fix alerting

* rm obsolete alertinginterface

* spelling oops

* changelog

* tests need buildconstants port

* Fully migrate BlockGasTarget

* ulimit should not depend on build

* complete the simplest deprecations

* bringing back versions
2024-07-14 09:06:08 -05:00
82110d1c52 Update codename for NV23 (#12104)
Update codename for NV23
2024-06-18 07:39:00 +02:00
4088706697 chore: fix some function names (#12031) 2024-05-24 11:34:03 +10:00
26d3fd2ecc chore: lint: fix lint errors with new linting config
Ref: https://github.com/filecoin-project/lotus/issues/11967
2024-05-13 14:52:09 +10:00
2d57bfe273 feat: Skeleton for nv23 (#11964)
* Use local GST

Use local GST

* Import actors and define upgrade heights

Creatin a mock actor-bundle and define upgrade heights

* Generate adapters

Updates gen/inlinegen-data.json, and runs make actors-gen

* Add schedule and migration

Add schedule and migration

* Add upgrade and network version fields/params

Add upgrade and network version fields/params

* Run make gen / make docsgen-cli

Run make gen / make docsgen-cli

* Update filecoin-ffi

Update filecoin-ffi to the v1.28.0-dev tag, which supports the nv23 skeleton.

* Update GST to v0.14.0-dev

Update GST to v0.14.0-dev, which includes the nv23 skeleton

* Add support for actor version 14 in actor registry

Add support for actor version 14 in actor registry
2024-05-07 09:40:49 +02:00
f907354300 Refactor LookupID* APIs in StateManager and StateTree
The naming of `LookupID` can cause confusion when resolving actor IDs vs
 ID addresses. To avoid this:

* Refactor `StateTree` `LookupID` to `LookupIDAddress`, because it
returns ID address.
* Refactor `StateManager` `LookupID` to
`LookupIDAddress` because it also returns ID address via a chain call to
`StateTree`.
* Introduce a new API `StateManager` dedicated to resolving address to
actor ID, called `LookupID` which returns `abi.ActorID`.

For context, see:
 * https://github.com/filecoin-project/lotus/pull/11723#discussion_r1534728607
2024-04-24 15:25:48 +01:00
6f7498b622 chore: Merge nv22 into master (#11699)
* [WIP] feat: Add nv22 skeleton

Addition of Network Version 22 skeleton

* update FFI

* feat: drand: refactor round verification

* feat: sealing: Support nv22 DDO features in the sealing pipeline (#11226)

* Initial work supporting DDO pieces in lotus-miner

* sealing: Update pipeline input to operate on UniversalPiece

* sealing: Update pipeline checks/sealing states to operate on UniversalPiece

* sealing: Make pipeline build with UniversalPiece

* move PieceDealInfo out of api

* make gen

* make sealing pipeline unit tests pass

* fix itest ensemble build

* don't panic in SectorsStatus with deals

* stop linter from complaining about checkPieces

* fix sector import tests

* mod tidy

* sealing: Add logic for (pre)committing DDO sectors

* sealing: state-types with method defs

* DDO non-snap pipeline works(?), DDO Itests

* DDO support in snapdeals pipeline

* make gen

* update actor bundles

* update the gst market fix

* fix: chain: use PreCommitSectorsBatch2 when setting up genesis

* some bug fixes

* integration working changes

* update actor bundles

* Make TestOnboardRawPieceSnap pass

* Appease the linter

* Make deadlines test pass with v12 actors

* Update go-state-types, abstract market DealState

* make gen

* mod tidy, lint fixes

* Fix some more tests

* Bump version in master

Bump version in master

* Make gen

Make gen

* fix sender

* fix: lotus-provider: Fix winning PoSt

* fix: sql Scan cannot write to an object

* Actually show miner-addrs in info-log

Actually show miner-addrs in lotus-provider info-log

* [WIP] feat: Add nv22 skeleton

Addition of Network Version 22 skeleton

* update FFI

* ddo is now nv22

* make gen

* temp actor bundle with ddo

* use working go-state-types

* gst with v13 market migration

* update bundle, builtin.MethodsMiner.ProveCommitSectors2 -> 3

* actually working v13 migration, v13 migration itest

* Address review

* sealing: Correct DDO snap pledge math

* itests: Mixed ddo itest

* pipeline: Fix sectorWeight

* sealing: convert market deals into PAMs in mixed sectors

* sealing: make market to ddo conversion work

* fix lint

* update gst

* Update actors and GST to lastest integ branch

* commit batcher: Update ProveCommitSectors3Params builder logic

* make gen

* use builtin-actors master

* ddo: address review

* itests: Add commd assertions to ddo tests

* make gen

* gst with fixed types

* config knobs for RequireActivationSuccess

* storage: Drop obsolete flaky tasts

---------

Co-authored-by: Jennifer Wang <jiayingw703@gmail.com>
Co-authored-by: Aayush <arajasek94@gmail.com>
Co-authored-by: Shrenuj Bansal <shrenuj.bansal@protocol.ai>
Co-authored-by: Phi <orjan.roren@gmail.com>
Co-authored-by: Andrew Jackson (Ajax) <snadrus@gmail.com>
Co-authored-by: TippyFlits <james.bluett@protocol.ai>

* feat: implement FIP-0063

* chore: deps: update to go-multiaddr v0.12.2 (#11602)

* feat: fvm: update the FVM/FFI to v4.1 (#11608) (#11612)

This:

1. Adds nv22 support.
2. Updates the message tracing format.

Co-authored-by: Steven Allen <steven@stebalien.com>

* AggregateProofType nil when doing batch updates

Use latest nv22 go-state-types version with matching update

* Update to v13.0.0-rc.2 bundle

* chore: Upgrade heights and codename

Update upgrade heights

Co-Authored-By: Steven Allen <steven@stebalien.com>

* Update epoch after nv22 DRAND switch

Update epoch after nv22 DRAND switch

* Update Mango codename to Phoneix

Make the codename for the Drand-change inline with Dragon style.

* Add UpgradePhoenixHeight to API params

* set UpgradePhoenixHeight to be one hour after Dragon

* Make gen

Make gen and UpgradePhoenixHeight in butterfly and local devnet to be in line with Calibration and Mainnet

* Update epoch heights (#11637)

Update epoch heights

* new: add forest bootstrap nodes (#11636)

Signed-off-by: samuelarogbonlo <sbayo971@gmail.com>

* Merge pull request #11491 from filecoin-project/fix/remove-decommissioned-pl-bootstrap-nodes

Remove PL operated bootstrap nodes from mainnet.pi

* feat: api: new verified registry methods to get all allocations and claims (#11631)

* new verireg methods

* update changelog and add itest

* update itest and cli

* update new method's support till v9

* remove gateway APIs

* fix cli internal var names

* chore:: backport #11609 to the feat/nv22 branch (#11644)

* feat: api: improve the correctness of Eth's trace_block (#11609)

* Improve the correctness of Eth's trace_block

- Improve encoding/decoding of parameters and return values:
  - Encode "native" parameters and return values with Solidity ABI.
  - Correctly decode parameters to "create" calls.
  - Use the correct (ish) output for "create" calls.
  - Handle all forms of "create".
- Make robust with respect to reverts:
  - Use the actor ID/address from the trace instead of looking it up in
    the state-tree (may not exist in the state-tree due to a revert).
  - Gracefully handle failed actor/contract creation.
- Improve performance:
  - We avoid looking anything up in the state-tree when translating the
    trace, which should significantly improve performance.
- Improve code readability:
  - Remove all "backtracking" logic.
  - Use an "environment" struct to store temporary state instead of
    attaching it to the trace.
- Fix random bugs:
  - Fix an allocation bug in the "address" logic (need to set the
    capacity before modifying the slice).
  - Improved error checking/handling.
- Use correct types for `trace_block` action/results (create, call, etc.).
  - And use the correct types for Result/Action structs instead of reusing the same "Call" action every time.
- Improve error messages.

* Make gen

Make gen

---------

Co-authored-by: Steven Allen <steven@stebalien.com>

* fix: add UpgradePhoenixHeight to StateGetNetworkParams (#11648)

* chore: deps: update to go-state-types v13.0.0-rc.1

* do NOT update the cache when running the real migration

* Merge pull request #11632 from hanabi1224/hm/drand-test

feat: drand quicknet: allow scheduling drand quicknet upgrade before nv22 on 2k devnet

* chore: deps: update to go-state-types v13.0.0-rc.2

chore: deps: update to go-state-types v13.0.0-rc.2

* feat: set migration config UpgradeEpoch for v13 actors upgrade

* Built-in actor events first draft

* itest for DDO non-market verified data w/ builtin actor events

* Tests for builtin actor events API

* Clean up DDO+Events tests, add lots of explainer comments

* Minor tweaks to events types

* Avoid duplicate messages when looking for receipts

* Rename internal events modules for clarity

* Adjust actor event API after review

* s/ActorEvents/Events/g in global config

* Manage event sending rate for SubscribeActorEvents

* Terminate SubscribeActorEvents chan when at max height

* Document future API changes

* More clarity in actor event API docs

* More post-review changes, lots of tests for SubscribeActorEvents

Use BlockDelay as the window for receiving events on the SubscribeActorEvents
channel. We expect the user to have received the initial batch of historical
events (if any) in one block's time. For real-time events we expect them to
not fall behind by roughly one block's time.

* Remove duplicate code from actor event type marshalling tests

Reduce verbosity and remove duplicate test logic from actor event types
JSON marshalling tests.

* Rename actor events test to follow go convention

Add missing `s` to `actor_events` test file to follow golang convention
used across the repo.

* Run actor events table tests in deterministic order

Refactor `map` usage for actor event table tests to ensure deterministic
test execution order, making debugging potential issues easier. If
non-determinism is a target, leverage Go's built-in parallel testing
capabilities.

* Reduce scope for filter removal failure when getting actor events

Use a fresh context to remove the temporary filter installed solely to
get the actor events. This should reduce chances of failure in a case
where the original context may be expired/cancelled.

Refactor removal into a `defer` statement for a more readable, concise
return statement.

* Use fixed RNG seed for actor event tests

Improve determinism in actor event tests by using a fixed RNG seed. This
makes up a more reproducible test suit.

* Use provided libraries to assert eventual conditions

Use the functionalities already provided by `testify` to assert eventual
conditions, and remove the use of `time.Sleep`.

Remove duplicate code in utility functions that are already defined.

Refactor assertion helper functions to use consistent terminology:
"require" implies fatal error, whereas "assert" implies error where the
test may proceed executing.

* Update changelog for actor events APIs

* Fix concerns and docs identified by review

* Update actor bundle to v13.0.0-rc3

Update actor bundle to v13.0.0-rc3

* Prep Lotus v1.26.0-rc1

- For sanity reverting the mainnet upgrade epoch to 99999999, and then only set it when cutting the final release

-Update Calibnet CIDs to v13.0.0-rc3

- Add GetActorEvents, SubscribeActorEvents, GetAllClaims and GetAllAllocations methods to the changelog

Co-Authored-By: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>

* Update CHANGELOG.md

Co-authored-by: Masih H. Derkani <m@derkani.org>

* Make gen

Make gen

* fix: beacon: validate drand change at nv16 correctly

* bump to v1.26.0-rc2

* test: cleanup ddo verified itest, extract steps to functions

also add allocation-removed event case

* test: extract verified DDO test to separate file, add more checks

* test: add additional actor events checks

* Add verification for "deal-activated" actor event

* docs(drand): document the meaning of "IsChained" (#11692)

* Resolve conflicts

I encountered multiple issues when trying to run make gen. And these changes fixed a couple of them:
- go mod tidy
- Remove RaftState/RaftLeader
- Revert `if ts.Height() > claim.TermMax+claim.TermStart || !cctx.IsSet("expired")` to the what is in the release/v1.26.0: `if tsHeight > val.TermMax || !expired`

* fixup imports, make jen

* Update version

Update version in master to v1.27.0-dev

* Update node/impl/full/dummy.go

Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>

* Adjust ListClaimsCmd

Adjust ListClaimsCmd according to review

---------

Signed-off-by: samuelarogbonlo <sbayo971@gmail.com>
Co-authored-by: TippyFlits <james.bluett@protocol.ai>
Co-authored-by: Aayush <arajasek94@gmail.com>
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
Co-authored-by: Jennifer Wang <jiayingw703@gmail.com>
Co-authored-by: Shrenuj Bansal <shrenuj.bansal@protocol.ai>
Co-authored-by: Andrew Jackson (Ajax) <snadrus@gmail.com>
Co-authored-by: Steven Allen <steven@stebalien.com>
Co-authored-by: Rod Vagg <rod@vagg.org>
Co-authored-by: Samuel Arogbonlo <47984109+samuelarogbonlo@users.noreply.github.com>
Co-authored-by: LexLuthr <88259624+LexLuthr@users.noreply.github.com>
Co-authored-by: tom123222 <160735201+tom123222@users.noreply.github.com>
Co-authored-by: Aarsh Shah <aarshkshah1992@gmail.com>
Co-authored-by: Masih H. Derkani <m@derkani.org>
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2024-03-12 10:33:58 +01:00
5e76b05b17 Merge branch 'feat/nv21' into asr/merge-feat-nv21 2023-10-16 11:13:33 -04:00
2a644e2c04 feat: limit PoSted partitions to 3 2023-10-11 12:41:55 -04:00
2fa5422581 fix: use VerifyDealForActivation in StateComputeCID
Unfortunately, ComputeDataCommitement was deprecated.
2023-09-23 17:54:39 -04:00
4ee20965fa chore: chain/actors: Use type proxies instead of versioned GST imports 2023-08-29 15:28:16 +02:00
5bfea36a17 Merge branch 'feat/nv21' into asr/merge-nv21 2023-08-23 11:44:59 -04:00
3ea3e49bdd wip: 2 more randomness fetching APIs 2023-08-22 12:32:25 -04:00
034f6cf832 wip: 2 more randomness fetching APIs 2023-08-21 16:32:27 -04:00
Phi
8b5da86727 feat: introduce local nv21 skeleton
Introduce nv21 skeleton for local testing:

- Use local go-state-types with actor_version_checklist changes: https://github.com/filecoin-project/go-state-types/blob/master/actors_version_checklist.md
- Imports mock v12-actors bundle
- Define upgrade heights
- Generate adapters
- Add upgrade schedule and migration
- Add actorstype to the NewActorRegistry in /chain/consensus/computestate.go
- Add upgrade field to api/types.go/ForkUpgradeParams
- Add upgrade to node/impl/full/state.go
- Add network version to chain/state/statetree.go
- make jen
- make docsgen-cli
2023-08-16 20:01:48 +02:00
c3f421a9cd feat: add Eip155ChainID to StateGetNetworkParams 2023-07-28 16:03:59 +08:00
10130a32d7 opt: MinerInfo adds the PendingOwnerAddress field 2023-05-30 13:04:11 +08:00
3636af4cd9 feat: Introduce nv19 skeleton
Update to go-state-types v0.11.0-alpha-1

Introduce dummy v11 actor bundles

Make new actors adapters

Add upgrade to Upgrade Schedules

make jen

Update to go-state-types v0.11.0-alpha-2
2023-03-29 16:13:41 -04:00
cdf3812e40 NV18: Filecoin EVM runtime + Actor Events + EthAccount + EAM + f4 addressing (#9998)
Co-authored-by: Steven Allen <steven@stebalien.com>
Co-authored-by: Raul Kripalani <raulk@users.noreply.github.com>
Co-authored-by: Kevin Li <ychiaoli18@users.noreply.github.com>
Co-authored-by: vyzo <vyzo@hackzen.org>
Co-authored-by: Ian Davis <nospam@iandavis.com>
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
Co-authored-by: Jennifer Wang <jiayingw703@gmail.com>
Co-authored-by: Geoff Stuart <geoff.vball@gmail.com>
Co-authored-by: Shrenuj Bansal <shrenuj.bansal@protocol.ai>
Co-authored-by: Shrenuj Bansal <108157875+shrenujbansal@users.noreply.github.com>
Co-authored-by: Geoff Stuart <geoffrey.stuart@protocol.ai>
Co-authored-by: Aayush Rajasekaran <aayushrajasekaran@Aayushs-MacBook-Pro.local>
Co-authored-by: ZenGround0 <5515260+ZenGround0@users.noreply.github.com>
Co-authored-by: zenground0 <ZenGround0@users.noreply.github.com>
2023-01-13 19:11:13 +00:00
f95e6602a0 Check for nil returns from StateSectorGetInfo 2022-12-12 10:44:08 -05:00
40278cd3c1 Update to go-state-types v0.10.0-alpha-2 2022-11-23 17:36:49 -05:00
5284f60e83 fix: add fields to ForkUpgradeParams 2022-10-22 23:41:52 +08:00
30f147770c fix: use api.ErrActorNotFound instead of types.ErrActorNotFound 2022-10-22 23:41:51 +08:00
ce17decf3b use NoAllocationID instead of nil AllocationId 2022-10-12 13:54:04 -04:00
dc102f076a sealing pipeline: Get allocationId with StateApi 2022-10-12 13:54:03 -04:00
e2d5d12e7f Add accessors for allocations and claims maps 2022-10-07 16:41:59 -04:00
b5c5e6627e review fixes 2022-10-06 11:06:21 -04:00
f55dc46a32 Add api for getting allocation 2022-10-06 11:06:21 -04:00