Commit Graph

473 Commits

Author SHA1 Message Date
whyrusleeping
af2789c3d8 fix non-deterministic map serialization 2019-11-07 14:55:24 -08:00
Łukasz Magiera
eca5501923 remove some outdated todos 2019-11-07 13:06:32 +01:00
Łukasz Magiera
be0d07e143 pass deal IDs in SectorPreCommitInfo 2019-11-07 13:03:18 +01:00
Łukasz Magiera
bcf9778b18 Update cbor-gen post-merge 2019-11-05 19:02:28 +01:00
Łukasz Magiera
ed5ccfd750 Merge remote-tracking branch 'origin/devnet/7' into feat/interactive-porep 2019-11-05 18:53:19 +01:00
Łukasz Magiera
1f56bcf581 Some param changes 2019-11-05 17:15:52 +01:00
whyrusleeping
9a398c6260 Track down all the uses of cboripld and eliminate them 2019-11-04 19:42:13 -08:00
Łukasz Magiera
c550e030b1 INTERACTIVE PROEP IS ALIVE 2019-11-02 16:07:26 +01:00
Łukasz Magiera
3bc4a5dddf More progress on fixing storing garbage data 2019-11-02 00:43:54 +01:00
Łukasz Magiera
1dcebece71 Some smaller fixes 2019-11-01 23:44:55 +01:00
whyrusleeping
a13dfcf96b Add extra check sanity check for timing 2019-11-01 13:27:59 -07:00
whyrusleeping
fc9091cc89 Get interactive porep sector sealing mostly working 2019-10-31 20:57:10 -07:00
whyrusleeping
4e478330a4 more refactoring for interactive porep scheduling 2019-10-31 09:55:35 -07:00
whyrusleeping
759094198c Some more progress on interactive porep 2019-10-30 18:22:50 -07:00
Łukasz Magiera
7fa3e2db7a WIP Interactive PoRep 2019-10-30 19:10:29 +01:00
Łukasz Magiera
a4c0610cc3 actors: Rename some storageminer stuff to match the spec 2019-10-30 16:55:55 +01:00
whyrusleeping
3e5654d575 initial actor changes for interactive porep 2019-10-30 16:05:31 +01:00
Łukasz Magiera
bee0ecf97f deals: Nicer output in client cli 2019-10-29 13:02:13 +01:00
Łukasz Magiera
72af55d067 deals: Price per epoch 2019-10-29 11:01:18 +01:00
Łukasz Magiera
237f8e8018 Set proving params matching the spec more closely 2019-10-28 17:51:45 +01:00
whyrusleeping
874ab1456c WIP: updating to new proofs code 2019-10-25 18:07:34 +02:00
Łukasz Magiera
b8b081faa6
Merge pull request #454 from waynewyang/InitActorState-AddActor
fix method:InitActorState.AddActor
2019-10-25 17:40:12 +02:00
Łukasz Magiera
55f22884ab
Merge pull request #457 from waynewyang/MinerActor-CommitSector
Check if fromaddress equal workaddress when CommitSector
2019-10-25 17:39:28 +02:00
Łukasz Magiera
bbe5afeee4
Merge pull request #379 from filecoin-project/feat/variable-sector-sizes
Allow miners to create differently sized sectors
2019-10-25 17:37:54 +02:00
Łukasz Magiera
cf2bbeb775
Merge pull request #410 from filecoin-project/feat/multisig-lockout
Add linear vesting to multisig
2019-10-25 17:34:41 +02:00
whyrusleeping
4890f577f5 give miners the ability to select different sector sizes 2019-10-25 17:26:15 +02:00
Łukasz Magiera
eeca3d86df
Merge pull request #415 from filecoin-project/feat/deals-on-chain
On-Chain deals
2019-10-25 17:03:25 +02:00
Łukasz Magiera
f2550f9e36 on chain deals: Deal not found is not fatal 2019-10-24 17:56:32 +02:00
Łukasz Magiera
0b1427e487 on chain deals: Fix lint warnings 2019-10-24 17:46:21 +02:00
Łukasz Magiera
9bd086bf7b Use shorter code cids 2019-10-24 17:39:16 +02:00
Łukasz Magiera
e148f33008 on chain deals: Address review comments 2019-10-24 17:14:25 +02:00
Łukasz Magiera
76f1e6e207 on chain deals: Put dealIDs in CommitSector messages 2019-10-24 16:24:31 +02:00
waynewyang
34fcbc0bf2 safeguard for multisig actor 2019-10-24 17:13:38 +08:00
Łukasz Magiera
fabd074165 on chain deals: Deals make it to the chain 2019-10-23 19:39:14 +02:00
Łukasz Magiera
61e14d0f4c on chain deals: Fix some serialization bugs 2019-10-23 14:59:57 +02:00
Łukasz Magiera
213ac77d08 on chain deals: Expose more chain state in pond 2019-10-23 12:44:00 +02:00
Łukasz Magiera
64bfb38834 on chain deals: Get things to actually run! 2019-10-23 12:44:00 +02:00
Łukasz Magiera
47d92d4a11 wip 2019-10-23 12:44:00 +02:00
Łukasz Magiera
bafb7e8cfa on chain deals: deal types cbor-gen 2019-10-23 12:44:00 +02:00
Łukasz Magiera
99ef51a642 on chain deals: Fix build 2019-10-23 12:44:00 +02:00
Łukasz Magiera
46a0333c9c on chain deals: Wip porting deal systems to storagemarket 2019-10-23 12:44:00 +02:00
Łukasz Magiera
7420dd668e on chain deals: use cid bytes for PieceRef 2019-10-23 12:44:00 +02:00
Łukasz Magiera
6bade2eb23 on chain deals: More actor methods 2019-10-23 12:44:00 +02:00
Łukasz Magiera
c41dd4efeb actora: register storagemarket 2019-10-23 12:44:00 +02:00
Łukasz Magiera
8638cd25f5 actors: implement sma.PublishStorageDeals 2019-10-23 12:44:00 +02:00
Łukasz Magiera
fcf928ec76 actors: Initial structure for StorageMarketActor 2019-10-23 12:44:00 +02:00
waynewyang
7b6d67ec1e Check if fromaddress equal workaddress when CommitSector 2019-10-23 11:51:48 +08:00
waynewyang
d265f4a04f fix method:InitActorState.AddActor 2019-10-23 10:47:45 +08:00
waynewyang
db41aed2b8 fix annotation for Initactor.Exec 2019-10-23 10:39:45 +08:00
waynewyang
e25f5c755a fix:IsBuiltinActor 2019-10-21 11:06:59 +08:00
Jakub Sztandera
92b145ec4d
Don't set fields if UnlockDuration is 0
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2019-10-18 16:08:19 +09:00
Jakub Sztandera
737f056c12
Rebuild types
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2019-10-18 16:06:41 +09:00
Jakub Sztandera
274673d9c6
Add linear vesting to multisig
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2019-10-18 14:01:04 +09:00
Jakub Sztandera
1bf713cb0a
Cleanup imports after rename
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2019-10-18 13:47:41 +09:00
whyrusleeping
ab6ef85b6d More tracing! 2019-10-16 19:24:33 +09:00
Łukasz Magiera
fb80d75b07 Almost building weight function 2019-10-15 14:31:34 +02:00
Łukasz Magiera
a576b72364 actors: Sync with the new spec, storage actors 2019-10-15 14:31:34 +02:00
whyrusleeping
7fbd0a5e8e Dont use aerrors.Escalate unless you really mean it 2019-10-15 14:37:43 +09:00
whyrusleeping
961caa237d prevent serialization of empty addresses 2019-10-14 20:53:20 +09:00
whyrusleeping
edcf47ff31 implement commands to list actors and miners 2019-10-12 15:45:48 +09:00
whyrusleeping
f9ac86ab00 the doneset is for dropping sectors 2019-10-04 12:30:30 -06:00
whyrusleeping
1419031f1e switch to parent state roots 2019-10-01 15:21:01 -06:00
whyrusleeping
74ad58881b use new cbor-gen code with better errors 2019-10-01 09:53:39 -06:00
Łukasz Magiera
e0632a93ab Share ProvingPeriodEnd math 2019-09-27 21:47:47 +02:00
Łukasz Magiera
1024812559 storageminer: Update post scheduling 2019-09-26 23:32:47 +02:00
Łukasz Magiera
4305824be7 miner actor: Change PPE logic in submitPost 2019-09-26 23:32:47 +02:00
Łukasz Magiera
23138d9bd0
Merge pull request #230 from filecoin-project/feat/incremental-deals
Incremental deal payments
2019-09-26 03:00:05 +02:00
Łukasz Magiera
2fe4ffdfdc deals: more atomic voucher handling 2019-09-25 14:56:04 +02:00
whyrusleeping
0419945d49 implement AddFaults method 2019-09-23 20:20:55 -07:00
Łukasz Magiera
5ce15bfaf4 types: Less/GreaterThan for bigints 2019-09-23 19:11:44 +02:00
Łukasz Magiera
b79b826805 miner: fix required collateral check 2019-09-23 13:41:26 +02:00
Łukasz Magiera
4202da62cd
Merge pull request #216 from filecoin-project/feat/consensus-slashing
Feat/consensus slashing
2019-09-20 16:58:03 +02:00
Łukasz Magiera
d2fdb058ef miner actor: Skip muldiv if frac == 1 2019-09-20 16:21:00 +02:00
whyrusleeping
3154374132 fix account balances to make tests pass 2019-09-19 22:25:10 -07:00
whyrusleeping
2d5b88ce84 avoid floating point math 2019-09-19 22:25:10 -07:00
whyrusleeping
197a2a3025 slash consensus fault needs to also be a method on the miner 2019-09-19 22:24:23 -07:00
whyrusleeping
fe020d9fd1 implement SlashConsensusFault 2019-09-19 22:23:24 -07:00
whyrusleeping
394edc6317 refactor to use 'randomness' as input to new vm creation 2019-09-19 20:08:44 -07:00
Łukasz Magiera
5fd98b7d27 post: Address review 2019-09-19 22:24:01 +02:00
Łukasz Magiera
72e003ef9e actors: remove debug logging from SubmitPost 2019-09-19 20:42:43 +02:00
Łukasz Magiera
6c48ab3be4 Compute post more than once 2019-09-19 20:38:58 +02:00
Łukasz Magiera
42b8af302f get sector set size from AMT 2019-09-19 20:31:25 +02:00
Łukasz Magiera
18b72b1584 Fix bigint serialization 2019-09-19 20:15:44 +02:00
Łukasz Magiera
839597012d Fix post seed height math 2019-09-19 19:38:56 +02:00
Jakub Sztandera
9d7cdafde4 Add TODO about PoST verification errors
,
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-09-19 15:57:48 +02:00
Jakub Sztandera
a0f80bb4dd Another typo
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-09-19 15:56:44 +02:00
Jakub Sztandera
54e076b6f9 Add randomness
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-09-19 15:32:00 +02:00
whyrusleeping
86fd132cf7 add deleting done sectors 2019-09-18 21:56:40 -07:00
Jakub Sztandera
9c02f7f839 Rought PoST method
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-09-18 17:10:03 +02:00
Jakub Sztandera
f5a2d998bf Add BitField with RLE
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-09-17 11:24:11 -07:00
whyrusleeping
8d2bcc5e3d final chain serialization bits 2019-09-16 18:56:37 -07:00
Łukasz Magiera
6a31ff2f2e deals: Wait for channel messagi in handler 2019-09-13 19:59:10 +02:00
Łukasz Magiera
388e3ffa96 paych: Api to reuse open channels for new payments 2019-09-13 19:59:10 +02:00
whyrusleeping
fe2885382c self review, cleanup 2019-09-10 17:13:46 -07:00
whyrusleeping
a47969c76b finish up making the new serializations work 2019-09-10 16:03:17 -07:00
whyrusleeping
2f019158d0 more switching over to correct cbor marshaling 2019-09-10 12:58:45 -07:00
whyrusleeping
1f1bbc9b8d cbor gen types and cleaning up after 2019-09-09 19:53:18 -07:00
whyrusleeping
b5bd1820d9 WIP: vm perf improvements 2019-09-09 19:53:17 -07:00
Łukasz Magiera
8b29c98919 paych actor: pass verification errors 2019-09-09 15:55:06 +02:00
Łukasz Magiera
83932a7c80 miner actor: Pass correct bytes to VerifyPieceInclusionProof 2019-09-09 15:50:52 +02:00
Łukasz Magiera
a1bcc826ac Fix amt.ErrNotFound handling in actor_miner 2019-09-09 13:22:09 +02:00
Łukasz Magiera
0b87411c7d Use AMT in StorageMinerActor ctor 2019-09-07 00:42:01 +02:00
Łukasz Magiera
4acf6d9d47 Partial payment integration in deals 2019-09-07 00:42:01 +02:00
Łukasz Magiera
67e780825b Merge remote-tracking branch 'origin/master' into feat/retrieval 2019-08-30 13:25:03 +02:00
Łukasz Magiera
6b80b98c64 retrieval: fix actor tests 2019-08-29 21:01:29 +02:00
Łukasz Magiera
711c61cba1 Merge remote-tracking branch 'origin/master' into feat/retrieval 2019-08-29 20:59:03 +02:00
Jakub Sztandera
5c31b81701 Charge per byte of storage
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-08-29 20:34:53 +02:00
Łukasz Magiera
6714240653 SectorSize const 2019-08-29 17:50:19 +02:00
whyrusleeping
2013db604a switch to using AMT for sector set 2019-08-28 17:01:46 -07:00
Jakub Sztandera
8557505cbd Charge per put and get
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-08-27 17:01:17 +02:00
Jakub Sztandera
0c3e8949c1 Introduce gas tracking in harness
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-08-21 23:29:47 +02:00
whyrusleeping
b271e5231a set up lotus-storage-miner to be able to use an existing miner actor 2019-08-16 14:50:00 -07:00
whyrusleeping
d9eaca5527 fix UpdateStorage to write back state 2019-08-16 13:24:37 -07:00
whyrusleeping
f7dc253669 (mostly) proper ticket generation 2019-08-16 12:39:13 -07:00
whyrusleeping
2efab559ec add error wraps and fix tests 2019-08-16 12:39:12 -07:00
Jakub Sztandera
5d7c20c0b1
Merge pull request #142 from filecoin-project/feat/gas
Initial gas charning
2019-08-16 15:29:05 +02:00
Łukasz Magiera
e8faa77d59 init actor: Fix doubling the balance 2019-08-15 23:03:47 +02:00
Łukasz Magiera
760ebc341f storageminer: Split PaymentVerify into 2 methods 2019-08-15 22:57:14 +02:00
Jakub Sztandera
27057ee222 initial gas charning
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-08-15 18:24:06 +02:00
Łukasz Magiera
eb962940bd deals: wire up PaymentVerify 2019-08-15 17:04:40 +02:00
Łukasz Magiera
fc69556817 storageminer: Fix PaymentVerify interface 2019-08-15 16:07:45 +02:00
Łukasz Magiera
1579137236 storageminer: Initial PaymentVerify implementation 2019-08-15 15:52:14 +02:00
whyrusleeping
6979c28e05 Add API interface for payment channels and a few tests 2019-08-12 10:12:51 -07:00
whyrusleeping
27ad2700ec update payment channel actor to match spec 2019-08-08 10:58:21 -07:00
Łukasz Magiera
a664098867 deals: move PaymentInfo to paych actor 2019-08-07 20:20:04 -07:00
whyrusleeping
95e7b230ec cleanup from self review 2019-08-07 18:23:44 -07:00
whyrusleeping
ba0d648546 sealing garbage data into a sector that gets accepted by the chain works! 2019-08-07 18:16:58 -07:00
whyrusleeping
b7c6333fef implement sector commitments and proof verification 2019-08-06 23:35:57 -07:00
whyrusleeping
206894a37f finish fallout of moving miner info into its own struct 2019-08-05 21:17:50 -07:00
whyrusleeping
8a0e233cbd WIP: implement enough of submitPoSt that we can get things moving 2019-08-05 17:01:49 -07:00
Jakub Sztandera
a6bc33af08 Add spec changes
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-08-04 14:11:06 +02:00
Jakub Sztandera
8e4661e6d2 Fix MTransaction
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:59 +02:00
Jakub Sztandera
f19b8c82f4 Wip on tests
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:59 +02:00
Jakub Sztandera
0a37ca0344 Change op order
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:58 +02:00
Jakub Sztandera
f7a8d11f14 Make array prealloc correct size
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:58 +02:00
Jakub Sztandera
b6b4c04cda More save reuse
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:58 +02:00
Jakub Sztandera
c2cb2c4184 Clean lint
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:58 +02:00
Jakub Sztandera
d2edad5d04 Implement rest of the methods
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:58 +02:00
Jakub Sztandera
a48d38d976 Start implementing multisig
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-31 21:57:58 +02:00
whyrusleeping
1254c78c92 implement some additional storage miner methods 2019-07-30 15:05:27 -07:00
whyrusleeping
ee224e5b21 Implement 'storage miner' module, wire up a few bits it needs to start 2019-07-29 17:46:56 -07:00
whyrusleeping
9ccd06b060 start method IDs at 1, to allow 0 for basic transfers 2019-07-26 14:42:38 -07:00
Jakub Sztandera
fd80c1e355 Fix tests
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-26 21:07:19 +02:00
whyrusleeping
78da356752 pull more things apart 2019-07-26 13:49:30 +02:00
whyrusleeping
e09ad3d65c Refactor out more types into types package, and pull genesis block code into gen package 2019-07-25 16:35:47 -07:00
Whyrusleeping
bcdb3ed90c
Update chain/actors/actor_paych.go 2019-07-25 12:17:15 -07:00
whyrusleeping
89bf320134 flesh out the rest of the payment actor methods 2019-07-24 20:32:00 -07:00
whyrusleeping
859471aeaf implement initial payment channel actor 2019-07-24 15:45:12 -07:00
Jakub Sztandera
2e6dd1b862 Wrap and return correct error
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 20:25:17 +02:00
Jakub Sztandera
68cfff17e5 Make invoker error non fatal
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 20:25:17 +02:00
Jakub Sztandera
1ec274671e Make lint even happier
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 15:16:42 +02:00
Jakub Sztandera
fd374fa180 Fix new
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 15:07:36 +02:00
Jakub Sztandera
e513884a5a Cleanup lint
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 15:04:45 +02:00
Jakub Sztandera
537ff23a63 Complete the refactor
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 15:01:52 +02:00
Jakub Sztandera
877ccb3803 make invoker work again
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 14:45:45 +02:00
Jakub Sztandera
020fb6f8a3 Mid rework
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 14:45:44 +02:00
Jakub Sztandera
02dab3eb51 Create actor error type
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-23 14:45:15 +02:00
Jakub Sztandera
9597ed8498 Make PowerLookup work and test it
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-17 18:00:59 +02:00
Jakub Sztandera
81f03a9f68 Add and test IsMiner
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-17 16:31:25 +02:00
Jakub Sztandera
6ee1b6fc84 Add GetPower
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-17 15:48:20 +02:00
whyrusleeping
ef5b54fe7f implement commit sector and some storage market methods 2019-07-16 12:17:56 -07:00
Jakub Sztandera
4f8326f711 Cleanup lint
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:51:44 +02:00
Jakub Sztandera
d373f78326 Adapt to need changes in spec
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:45:10 +02:00
Jakub Sztandera
35575263cb Add more tests
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:45:10 +02:00
Jakub Sztandera
227b9f7e18 Fix test
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:44:48 +02:00
Jakub Sztandera
de18f9c865 pass From to Send
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:44:48 +02:00
Jakub Sztandera
be60e28412 Uncomment rest of test code
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:44:48 +02:00
whyrusleeping
e7110ff68d handle copy over state tree and identity multihashes
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:44:46 +02:00
Jakub Sztandera
9da31fb6ad OMG this is killing me
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:43:34 +02:00
Jakub Sztandera
218e965869 Add actor harness
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-16 18:43:34 +02:00
whyrusleeping
c44eeab51a pull out constant 2019-07-15 10:48:59 -07:00
Jakub Sztandera
1aa3cf3043 Remove UnmarshalCBOR functions
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
2019-07-15 17:51:46 +02:00
whyrusleeping
0ac3545013 move actors to separate package 2019-07-12 16:52:25 -07:00