Commit Graph

1103 Commits

Author SHA1 Message Date
ZwX1616 426286f24f DM: add use of e2e preds (#26078)
* try ml

* de56

* j914ef75a

* jd1124586

* jd1124586

* d112

* oops

* set

* update ref

* use offset

* bump DM power usage

* new ref
old-commit-hash: d522492ba0b80928adc475c1f37b995834c31a90
2022-10-17 19:40:06 -07:00
Adeeb Shihadeh 60cb813af5 ui: publish draw times + add test (#26119)
* ui: publish draw times + add test

* add some checks

* adjust

* fix linter

* update max

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 15b8c7d1dc3a75d78c0bbaa4f6b866374f6e8672
2022-10-17 17:14:38 -07:00
HaraldSchafer f428c9de30 Refactor model: no klblock (#26035)
* ff138dc0-d097-4818-b40e-dba5ba89d5d6/449 13274b7d-b546-4b91-a587-33b4af7dec6a/700

* b1bb39be-c6ce-4744-8e63-92969fda6bfc/449 f3ebfba1-f686-448f-be9b-b4d5010be91c/700

* model ref

Co-authored-by: Yassine Yousfi <yyousfi1@binghamton.edu>
old-commit-hash: b654ebdd25bb3903e94ca5cc6f55d53a256f5c06
2022-10-15 20:04:35 -07:00
Shane Smiskol 82b6fe1c4c Fix refs
old-commit-hash: c0840e0c33257b7ee86ace2c9a0b985ae61ca71c
2022-10-14 16:50:07 -07:00
Shane Smiskol 87b9f41022 GM: remove brake scaling (#26080)
* Don't add a weird factor to ret.brake

* update refs
old-commit-hash: 5d00e5cc71106c6c4a9b25e3a2873e9e0606544c
2022-10-14 15:53:24 -07:00
Vivek Aithal 7a826259c4 regen: Refactor log migrate functions to avoid needing azure keys (#26049)
* refactor migrate fns to avoid needing to use azure keys on import

* move azure key init behind a function

* resolve comments
old-commit-hash: 5f7d9a519e98b446b14866a8920dd0493b4dce26
2022-10-13 13:21:35 -07:00
Adeeb Shihadeh f6803bc8df Hyundai: share panda flags with CAN-FD platform (#26058)
* Hyundai: share panda flags with CAN-FD platform

* move that

* only set bit

* bump panda

* panda master

* regen + update refs for new param
old-commit-hash: c782380fc1cfcbc7b521f14db37a360aef6b53ec
2022-10-12 21:54:08 -07:00
HaraldSchafer eac9ec1570 locationd: Fix GPS sensor times with fixed offsets (#25920)
* Rewind to qcom time

* Fix test

* Typo

* init unix_time fix

* add gps sensor_time_offsets

* remove all clocks code and add todo

* :emove clocks in unit test

* update refs

* update refs

Co-authored-by: nuwandavek <vivekaithal44@gmail.com>
old-commit-hash: b3324418034fcf09123b614ee2429a4e5bc9d7a5
2022-10-12 17:47:30 -07:00
Adeeb Shihadeh 026668b5f8 EV6 longitudinal (#26023)
* ev6 long

* update refs
old-commit-hash: 3c0904a18f4acb852193de9956965df2520104d1
2022-10-12 14:22:40 -07:00
Shane Smiskol 6a92eb5a7a GM camera ACC: reduce LKAS faults on startup (#26039)
* GM camera ACC: no faults on start up 2.0

And by 2.0 I mean we don't need to wait for blocked msg support to be merged first to merge this without regressing accidental single blocked msg count handling.

* Send the camera counter + 1

* Keep updating the first counter until we get a message on the bus

* Only update right before sending so sent_lka_steering_cmd is updated first

* Update ref_commit
old-commit-hash: 0f94d81b7adffa9da5c4632fb5979b27695bbb53
2022-10-11 22:33:37 -07:00
Shane Smiskol 4df9e825ae Use longActive for car-specific override signals (#26030)
* add override field to cruiseControl

* need to check if long *can* be active

* bump cereal to master

* revert

* better

* fix

* update refs

* rename variable
old-commit-hash: 741867813285672a723b8fc53ead65a5cbe5c6dd
2022-10-11 16:27:46 -07:00
HaraldSchafer f9b65f9189 Low speed lateral like before (#26022)
* Add explicit cost on steering wheel movement

* Laxer low speed control

* Laxer low speed control

* Lower min speed now there is a cost

* 3m/s

* Similar to old master

* Add cost

* Crazy high

* Update ref

* comment
old-commit-hash: 2c9b150761f533a6132fac3639df24bb286386bb
2022-10-11 14:53:43 -07:00
HaraldSchafer a13f2deeeb Increase low speed jerk cost (#26008)
* Increase low speed jerk cost

* Update planner weight

* Update ref_commit

* Update lateral_planner.py

* cleanup and refactor

* Update ref_commit
old-commit-hash: fb074378194db28067dbb77e8cd15db6ab5fd882
2022-10-07 19:15:04 -07:00
YassineYousfi 523ad86756 faster rocket launcher model (#26009)
* cache tokens 1456d261-d232-4654-8885-4d9fde883894/440 e63ab895-2222-4abd-a9a5-af86bb70e260/700

* udpate ref commit

* bump tinygrad to master
old-commit-hash: 6c5693e965b9c63f8678f52b9e9b5abe35f23feb
2022-10-07 17:22:42 -07:00
Shane Smiskol 779ad387bf GM: use ECM brake-pressed threshold (#25970)
* This brake position value disengages stock ACC, use it to avoid controls mismatch. 2016-2017 Volt will hit this threshold and disengage, must install new design of brake pedal retaining clip, TSB 16-NA-147.

* 80 hz

* comment

* bump panda

* update refs

* bump panda

* bump panda

* bump panda

* bump panda to master

Co-authored-by: qadmus <42746943+qadmus@users.noreply.github.com>
old-commit-hash: 6ce511cc605782c25d45c66b55f859caaf7ce516
2022-10-07 16:12:58 -07:00
HaraldSchafer 3488569ac3 Divide by 0 bug fix lateral planner (#25995)
* Divide by speed correctly

* Update

* Update lateral_planner.py

* Update ref_commit
old-commit-hash: 1ecf6f351c35de24affbb1e2cb5675aea1a36f10
2022-10-07 00:16:18 -07:00
Adeeb Shihadeh 3e2f436d4c auto-detect pigeon or quectel (#25991)
* auto-detect pigeon or quectel

* persistent

* fix sim

* fix process replay

* fix locationd unit tests

* fix that

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 01d05f66fe5a189209538650dce319b2f7e192ee
2022-10-06 16:46:15 -07:00
Shane Smiskol 984134be0e FPv2: fixed fingerprint overrides query result (#25990)
* query FW versions if fixed (override after)

* skip here

* also skip here

* and here
old-commit-hash: e7805eb5c54d336a93af730594ef1ccc725dad82
2022-10-06 15:24:52 -07:00
HaraldSchafer a8ec6f4cfd Rocket Launcher Model (#25963)
* 1456d261-d232-4654-8885-4d9fde883894/440 6b7d7cec-ead8-40f3-86cc-86d52c9b03fe/300

* compute only 9 tokens: 1456d261-d232-4654-8885-4d9fde883894/440 6b7d7cec-ead8-40f3-86cc-86d52c9b03fe/300

* tinygrad: cleanup gather

* 1456d261-d232-4654-8885-4d9fde883894/440 6b7d7cec-ead8-40f3-86cc-86d52c9b03fe/700

* empty commit for tests

* bump tinygrad

* dont use tinygrad matmul for now

* bump tinygrad

* 1456d261-d232-4654-8885-4d9fde883894/440 e63ab895-2222-4abd-a9a5-af86bb70e260/700

* float16 1456d261-d232-4654-8885-4d9fde883894/440 e63ab895-2222-4abd-a9a5-af86bb70e260/700

* increase steer rate cost

* Revert "increase steer rate cost"

This reverts commit 74ce9ab9be7ef17ecfec931f96851b12f37f2336.

* fork tinygrad

* empty commit for tests

* basics

* Kinda works

* new lat

* new tuning

* Move LATMPCN so scons compiles

* Update long weights

* Add tinygrad optim

* Update model ref

* update weights

* Update ref

* Try

* Error message for field ignore

* update model regf

* ref commit

* Fix onnx test

Co-authored-by: Yassine Yousfi <yyousfi1@binghamton.edu>
old-commit-hash: cb0b7375b728d1b6e92db68c9ba55f0f54c09a3f
2022-10-05 21:43:38 -07:00
Vivek Aithal 73f0c74b9b regen: add arg for migrating sensorEvents with old timestamps (#25980)
* add event logMonoTime

* add arg for old logtime
old-commit-hash: dc72438be57e8908b1946df2a0ee81202a70469c
2022-10-05 21:16:41 -07:00
Vivek Aithal a03192a8d7 Extend torqued (#25961)
* extend live torque to all hyundai and toyota cars

* update refs
old-commit-hash: ca746b0a18eebc9b0fa7a6810dba0b28a60548c2
2022-10-04 13:34:31 -07:00
Shane Smiskol 8e1e6132c8 GM: raise max brake (#25810)
* -4 didn't make any sense?

* comments

* comments

* update to 400

* bump panda

* remove unused iso limit vars

* update comments

* bump panda

* Update selfdrive/car/gm/values.py

* Update ref_commit
old-commit-hash: 84adb8d9259be92951c604b0780608de8c039f9f
2022-10-04 00:39:19 -07:00
Shane Smiskol ae2f2add1d Longitudinal planner: clip a_desired to cruise limits (#25928)
* Clip a_desired to cruise limits

* Update selfdrive/controls/lib/longitudinal_planner.py

* fix

* update refs

* explicit
old-commit-hash: 4bd146ee7af639f4a49e3d5cdeeab4ed022190ec
2022-09-30 15:43:04 -07:00
Shane Smiskol 220c7ea7c3 process replay: rename second HYUNDAI entry
old-commit-hash: 75735675bddd39abf01fc1e1c8f004394559f51f
2022-09-30 14:49:27 -07:00
Adeeb Shihadeh 1ade0ce47d sensord: test fixups (#25935)
* sensord: test fixups

* fix linter

* check freq

* fp seems reliable

* clean that up

* update refs

Co-authored-by: Comma Device <device@comma.ai>
Co-authored-by: Bruce Wayne <batman@z840-provisioning.internal>
old-commit-hash: 80c40048cb62fff15a8e884cb05fba8ddfb11809
2022-09-30 12:25:11 -07:00
Kurt Nistelberger fb06d2769f Sensor events splitup (#25714)
* PoC of reading sensors via interrupts instead of polling

* add Gyro and draft for magn

* add more functionality to gpio.cc

* change LSM gyro to interrupt

* resolve rebase conflict

* update BMX accel interrupt impl

* add interrupt collector thread to fetch in parallel

* change get_event interface to return true on successful read

* update BMX gyro interrupt impl

* update gpio.h/.cc according to comments

* address comments, rename Edgetype enum

* Edgetype to EdgeType

* update sensor interrupt interface

* add error handling, and read fd on trigger

* avoid sending empty messages

* fix build

* use gpiochip

* less diff

* gpiochip on both edges, but skip falling edge if rising edge is detected

* init last_ts with 0

* update sensord testcases

* update sensord testsweet

* test for pipeline

* readd with_process

* add null check

* move tests update to seperate PR

* sensord: improve test coverage (#25683)

* update sensord-interrupt testsweet

* address review comments

* inc stddev threshold

* fix format string

* add version 0 check again

* relax strictness after c3 with bmx tests

* relax strictness after tests

Co-authored-by: Kurt Nistelberger <kurt.nistelberger@gmail.com>

* address PR comments

* fix typo

* remove 4ms limit, and skip first 0.5sec of data

* revert disable_interuppt change to destructor

* fix and remove timing skip

* make gpiochip generic

* sensord port

* change from sensorEvents to separated events

* fix gyro usage

* add splitted sensor tests

* modify debug script sensor_data_to_hist.py

* refactor get_event interface to remove sensorEvent message type

* update locationd to non sensorEvent usage

* tmp commit

* fix replay

* fix accelerometer type

* fix sensor to hist debug script

* update sensord tests to split events

* remove rebase artifacts

* port test_sensord.py

* small clean up

* change cereal to sensorEvents-splitup branch

* upate sensorEvents in regen

* fix route generation for splitted sensor events

* regen cleanUp from sensorEvents change

* .

* remove light and temp from locationd

* add generic init delay per sensor

* .

* update routes

* move bmx gyro/accel to its own channel

* adopt sensor tests to bmx channel

* remove rebase artifacts

* fix sensord test

* handle bmx not present

* add bmx sockets to regen

* .

* .

* code cleanUp

* .

* address PR comments

* address PR comments

* address PR comments

* lsm clean up

* readd sensorEvents

* rever regen.py

* .

* update replay refs

* move channels

* fix artifact

* bump cereal

* update refs

* fix timing issue

Co-authored-by: Bruce Wayne <batman@workstation-eu-intern2.eu.local>
Co-authored-by: gast04 <kurt.nistelberger@gmail.com>
Co-authored-by: Willem Melching <willem.melching@gmail.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 29d3ed2ce63a65f793dc0ecb553180a0d0fba03e
2022-09-29 14:31:54 -07:00
Adeeb Shihadeh 025098b819 Revert "update replay refs"
This reverts commit ef6d52afc8a2ad10bae6e7e6e32a5ce54ddac70c.

old-commit-hash: 03977a8783726038cdeae16e2115e3b9d1f47ab8
2022-09-28 21:42:58 -07:00
Kurt Nistelberger 4681730213 update replay refs
old-commit-hash: 683096e309e9e88cc0c5af9da3df70ce62279324
2022-09-28 21:38:31 -07:00
Adeeb Shihadeh 33508cd811 updated: clean untracked nested git repos (#25917)
* updated: clean untracked nested git repos

* ff all the cleans
old-commit-hash: 4e32387ce5b916df1a62ddb695c0cd10ba6f4f38
2022-09-28 16:33:42 -07:00
HaraldSchafer 10bc36ae58 Minor ACC fixes (#25911)
* Change cruise accel limits

* Long tuning script looks good

* Cap cruise slowdown aggression in e2e mode

* Revert atau change

* Cleanup

* Update ref

* fix ref
old-commit-hash: 1007df874f284f2c01a48c245f48c209ed806957
2022-09-28 13:27:07 -07:00
Kurt Nistelberger 8a828af454 Sensor events regen (#25903)
old-commit-hash: 96ed5aa5816c692856ed352ef404f040a9615b69
2022-09-27 20:33:45 -07:00
Adeeb Shihadeh 288b5fcdb0 update refs
old-commit-hash: 4693a9d3580db73905ccec525349007a8e3473e7
2022-09-22 10:40:23 -07:00
Vivek Aithal 51d25b2011 Live torque (#25456)
* wip torqued

* add basic logic

* setup in manager

* check sanity and publish msg

* add first order filter to outputs

* wire up controlsd, and update gains

* rename intercept to offset

* add cloudlog, live values are not updated

* fix bugs, do not reset points for now

* fix crashes

* rename to main

* fix bugs, works offline

* fix float in cereal bug

* add latacc filter

* randomly choose points, approx for iid

* add variable decay

* local param to capnp instead of dict

* verify works in replay

* use torqued output in controlsd

* use in controlsd; use points from past routes

* controlsd bugfix

* filter before updating gains, needs to be replaced

* save all points to ensure smooth transition across routes, revert friction factor to 1.5

* add filters to prevent noisy low-speed data points; improve fit sanity

* add engaged buffer

* revert lat_acc thresh

* use paramsd realtime process config

* make latacc-to-torque generic, and overrideable

* move freq to 4Hz, avoid storing in np.array, don't publish points in the message

* float instead of np

* remove constant while storing pts

* rename slope, offset to lat_accet_factor, offset

* resolve issues

* use camelcase in all capnp params

* use camelcase everywhere

* reduce latacc threshold or sanity, add car_sane todo, save points properly

* add and check tag

* write param to disk at end of route

* remove args

* rebase op, cereal

* save on exit

* restore default handler

* cpu usage check

* add to process replay

* handle reset better, reduce unnecessary computation

* always publish raw values - useful for debug

* regen routes

* update refs

* checks on cache restore

* check tuning vals too

* clean that up

* reduce cpu usage

* reduce cpu usage by 75%

* cleanup

* optimize further

* handle reset condition better, don't put points in init, use only in corolla

* bump cereal after rebasing

* update refs

* Update common/params.cc

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* remove unnecessary checks

* Update RELEASES.md

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 4fa62f146426f76c9c1c2867d9729b33ec612b59
2022-09-19 15:19:26 -07:00
Vivek Aithal 3326487104 Torque Refactor (#25822)
* add torque gains refactor

* update refs

* avoid dict, use cereal struct

* bugfix

* no as_builder

* address final comments
old-commit-hash: 85ed5c4cb5d9b0132ab0e3eb5bcb096026f70b22
2022-09-17 00:07:54 -07:00
Willem Melching cc473bf45b Hyundai: match ego speed on dash (#25235)
* hyundai: match speed on dash

* still needs conversion to m/s

* always use CF_Clu_VehicleSpeed2

* clean up, like honda

* experiment

* to the source

* works pretty well on optima (matches exactly on Sonata)

* could be 0.5

* clean up test

* revert test_moedls

revert test_moedls

* woops

* woops.

* .

* fix hyst

* only CF_Clu_VehicleSpeed

* omgomgomg

* add all this mess because it always takes a while

* set vEgoCluster

* fix all rounding errors

* stash

* clean up

* clean up

* fix metric conversion

* only calculate when updated

* try to filter (didn't look great from plots)

* Revert "try to filter (didn't look great from plots)"

This reverts commit 7e9876c237341d07163985b0718fd9c553372e72.

* clean up

* update refs

Co-authored-by: Shane Smiskol <shane@smiskol.com>
old-commit-hash: f73b041d43a1ece437df38e26b1dd30759a79c9f
2022-09-16 17:33:38 -07:00
Shane Smiskol 98b821fb1a GM minSteerSpeed: add some tolerance for Volt (#25809)
* add some tolerance for volts

* add comment

* update refs
old-commit-hash: b7dc1968cd4c61d33f96124b36d8d7a48957748f
2022-09-15 21:21:10 -07:00
Vivek Aithal 5a097b3235 regenerate replay segments for torqued (#25805)
* update segments in test_processes

* bump cereal

* update refs
old-commit-hash: b133a4c9a8e8f3ab8211fe1e7a52bd0bb41c5c47
2022-09-15 20:15:57 -07:00
Adeeb Shihadeh ff42c549da update refs
old-commit-hash: a9f88503fe132401e73531f8213923ba53b2c19f
2022-09-15 13:55:36 -07:00
Shane Smiskol 6f06e047d5 HKG: lower torque rate limits for CAN-FD cars (#25770)
* Change ramp limits to 2/2 for CANFD cars

* Only the high torque CANFD cars

* comment

* Update selfdrive/car/hyundai/values.py

* Better to do 2/3 and for all cars

* bump to master

* update refs
old-commit-hash: d57e07eec0c3848755e856ea8a2cf14559fcc895
2022-09-15 11:28:49 -07:00
Willem Melching 56188f43a5 Honda: match current speed on dash (#25232)
* Honda Bosch: match speed on dash

* present on all cars

* all honda

* more explicit switching

* hyst

* hyst

* clean up

* Update ref_commit

* no bitwise

no bitwise

Co-authored-by: Shane Smiskol <shane@smiskol.com>
old-commit-hash: e699b0994ce418eca68f48557475118d3190dd0e
2022-09-14 15:40:36 -07:00
Shane Smiskol c1b9a202aa controls: enter overriding state for steering override (#25617)
* lateral overriding is overriding

* Update test

* remove

* also could do something like this and only have one OVERRIDE ET

* Revert "also could do something like this and only have one OVERRIDE ET"

This reverts commit 5c381641c08961676a56a9718fbdaa84989ac249.

* full names

* bump cereal

* test every event type

* update refs
old-commit-hash: 992707c1724ab0047ddd6e230b82e47ae51b25ed
2022-09-13 23:20:45 -07:00
Kurt Nistelberger 763cfa8c4e sensord: increase cpu usage in onroad test (#25773)
Co-authored-by: Kurt Nistelberger <kurt.nistelberger@gmail.com>
old-commit-hash: 98c843bfb425bb1dd44f99715f81fa7d327a77e7
2022-09-13 22:28:00 -07:00
Shane Smiskol f8f22fabdf Car docs: CAN-FD cars do not yet have op long (#25707)
* CAN-FD cars do not yet have op long

* update refs

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 973ea7440c1db67d89fd3b77c94ba19b4a77717d
2022-09-08 11:41:29 -07:00
HaraldSchafer 4b6fbd26a5 Improve Hyundai long control, and conform to longcontrol API boundaries (#25696)
* Variety of experimental improvements

* fix start accel

* typo

* No jerk, no go

* Set jerk limit lower

* Update ref
old-commit-hash: da6c7311a38b1206be5443f8447f5424458671a5
2022-09-07 19:09:37 -07:00
Adeeb Shihadeh e4f9781c17 single longitudinal toggle for e2e and disable radar (#25688)
* single longitudinal toggle for e2e and disable radar

* write disable radar param

* rename

* better param name

* clean that up

* update refs

* update translations

* not live for experimental

* write it out

* vanish
old-commit-hash: 655a64b60318ce44ef0271e03de16e8b135b5268
2022-09-07 17:12:49 -07:00
HaraldSchafer 0b87a4ddb1 More conservative lead policy in e2e long mode (#25684)
* Add params for lead and danger

* fix long params

* E2e passes simple maneuver tests

* Make tests run with e2e long mode

* Slightly more error allowed in e2e mode

* FCW back and populate long source field

* Fix planner name

* FCW still doesnt work

* Slightly less aggressive

* Doesn't need to simulate from stop
old-commit-hash: 7899fb79c1b3c56034dea3ceb70955f94fdb5ff4
2022-09-06 21:52:34 -07:00
HaraldSchafer 1c2c840a8a Let planner decide stopping state (#25643)
* Let planner decide stopping

* Refactor stop/start state machine

* Stay stoppe condition

* 1sec from target

* Add starting state

* Add starting state logic

* Undo some changes

* Update ref
old-commit-hash: 210a6163ac9a8ccc425114fd722e864befa77966
2022-09-06 21:30:10 -07:00
Shane Smiskol da41c19937 Toyota: match dash set speed (#25649)
* toyota: match set speed from dash

* Use unit bit

* Use RSA2

* flip this

* Universal unit signal, set vEgoCluster

* remove this and bump opendbc

* detect if car interface sets cluster fields

* revert

* needs to be cp

* UI_SPEED is actually always in kph?

* forgot to actually convert it

* same in onroad

* try conv factor only for imperial

* Seems like UI_SPEED is not the UI speed at all

* the dash might floor it

* same openpilot behavior

* bump

* ego speed factor is dynamic across speeds, handle Lexus exceptions with
diff msg

* remove test, bump opendbc

* secret formula

* secret formula v2

* 1.03 is sufficient

* try short press

* bump opendbc

* surely this can be cleaned up

surely this can be cleaned up

* use filter

* redo factors

* try UI_SPEED again with a factor

try UI_SPEED again with a factor

* dash applies hysteresis to speed. this matches pretty well, but not exactly

* match only set speed

* clean up

* clean up

clean up

* Update ref_commit

* update refs

Co-authored-by: Willem Melching <willem.melching@gmail.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 80533d6c0368b6b2fd797ec0388ed75d74dee80f
2022-09-05 13:57:07 -07:00
HaraldSchafer b8a6a961fe Remove lane planning code (#25651)
* Remove all lane planning logic

* Revert "Update ref"

This reverts commit 8dcb08ebccbb5641443459ac40601a95cf605682.

* bump cereal

* Update ref
old-commit-hash: 2eff6d0ebd20b95b10726f979b04df028f50d303
2022-09-04 13:07:51 -07:00
HaraldSchafer 754fb9306b Faster a_ego filter (#25646)
* Faster a_ego filter

* :x
Update ref

* typo

* update ref
old-commit-hash: 593dfd0aed6f3bbb37b05ef7c331df08781327d9
2022-09-02 16:19:06 -07:00