Commit Graph

1614 Commits

Author SHA1 Message Date
Adeeb Shihadeh 22bfc435a9 jenkins: fix unsafe checkout when changing submodules (#32635)
do it twice
old-commit-hash: 95263340493ed516c9a2f84ce770276560007b89
2024-06-05 14:00:55 -07:00
Adeeb Shihadeh 2c6829ed67 boardd is pandad (#32628)
* boardd is pandad

* rename tests
old-commit-hash: 34e329649d7a388d4cd1f25dac9dda9d5409bf4a
2024-06-04 19:16:55 -07:00
Vivek Aithal cf8885b596 [torqued] Reduce friction for some Hyundai cars (#32578)
* reduce friction coeff for ev6 and ioniq6

* Update ref

---------

Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
old-commit-hash: 8a4bfcf5b4f4adc5cf9f0c91895d621421e994a2
2024-06-04 11:10:04 -07:00
Shane Smiskol 19d9e7ac6b revert marking some files as unexecutable (#32613)
* this is not a test

* these are not tests!
old-commit-hash: c7b3ece37ef4445bcc18403b6a9e0217db4abd96
2024-06-03 17:19:27 -07:00
Adeeb Shihadeh 86b6103657 test_*.py files are no longer executable (#32610)
* test_*.py files are no longer executable

* cleanup empty lines

* update precommit

* fixme

* enable

* build
old-commit-hash: c59887c8109dd8d33ea2e7169995184fbe38cc3a
2024-06-03 15:48:56 -07:00
ZwX1616 a51790da10 dmonitoringd: set invalid if missing dependence(s) (#32569)
* no step but still send

* no this

* update diff
old-commit-hash: a16fbdae3890b0e547f0113497ff8f713bd2b07b
2024-05-29 15:43:55 -07:00
Adeeb Shihadeh 549bc535cd Revert no pyenv (#32547)
* Revert "`ubuntu_setup`: fix `No module apt_pkg` error when setting up (#32526)"

This reverts commit d850f07acb58e4fc6d530241a31c0917c2b6613e.

* Revert "Removal of pyenv (#32512)"

This reverts commit 41f72d5ca75aab9a9beb3181aca9f177e5a003f8.
old-commit-hash: 1eb938b8e81a3321adf1064e8ef348b8c7073d4c
2024-05-26 21:21:50 -07:00
Adeeb Shihadeh cc4f53e6c6 manager: move to system/ (#32538)
* manager: move to system/

* one more
old-commit-hash: accdade4cfe73cdca41f5afa73cf4ad085802930
2024-05-25 12:41:17 -07:00
Adeeb Shihadeh 4356b74cca updated: finish system/ move (#32535)
* updated: finish system/ move

* add those back

* skip that

* skip whole file

* one more time
old-commit-hash: 73b02f2cda858d4ad08bc7fa4116d0d11ff79a02
2024-05-25 12:22:02 -07:00
ZwX1616 bf7724d30b dmonitoringd: simplify main loop (#32517)
* one call does all

* no need

* update etst

* filename

* dbf5b05ff480145a79b5941e360d0698b70979cd
old-commit-hash: 204219695f57f6ba76347df4df99e00a28b51e9f
2024-05-23 20:14:28 -07:00
Kacper Rączy 5e70ea98d2 process_replay: most messages valid check (#32521)
* check_most_messages_valid impl

* Add to both regen and test_processes

* Refactor

* Bring back carOutput

* Use Counter

* Use get(k, 0)
old-commit-hash: e0d20d2cf33a4398426e7ca4886bf6231d1220ad
2024-05-23 15:30:21 -07:00
Mauricio Alvarez Leon e665f05efe Removal of pyenv (#32512)
* initial removal of pyenv

* remove .python-version copy in dockerfile

* successful image build with ppa

* update prompt

* pip install scons

* apt install scons

* finally fix dockerfile to work with venv

* cleanup userflow

* increase memory to 100m

* typos

* wrong variable

* lmao
old-commit-hash: f5752121f8a2029050c63cfa04f2533901ae4f3a
2024-05-23 07:56:18 -07:00
ZwX1616 bd0cabd88d Update process replay refs with updated submaster alive behavior (#32508)
* add cereal

* update cereal

* cereal master

* lol really

* ref com

* ref
old-commit-hash: 749455c91dc27ed876d1b194c1d84bd481eefb00
2024-05-22 15:47:11 -07:00
Shane Smiskol ee03d13529 card: process that abstracts car interface and CAN (#32380)
* format card

* standalone process

* no class member CS, there's no point

also can be confusing; what else could be using this?

* rename CoS

* Update selfdrive/controls/controlsd.py

* never works first time :D

* canRcvTimeout is bool

* hack

* add cpu

* see what testing closet comes up with

* first

* some clean up

* support passable CI, fix test models

* fix startup alert

* process replay changes

* test_fuzzy

* gate carOutput valid on carControl valid

* we should publish after we update carOutput

* controlsd was using actuatorsOutput from 2 frames ago for torque, not the most up to date

* check all checks for carControl in case controlsd dies

* log more timestamps

* more generic latency logger; needs some clean up

latency_logger.py was difficult to understand and modify

* card polls on can and carControl to get latest carControl possible

* temp try to send earlier

* add log

* remove latencylogger

* no mpld3!

* old loop

* detect first event

* normal send

* revert "card polls on can and carControl to get latest carControl possible"

how it was is best

* sheesh! update should be first

* first timestamp

* temp comment ( timestamp is slow :( )

* more final ordering, and make polling on/off test repeatable

* Received can

* new plot timestamps

* clean up

* no poll

* add controllers (draft)

* Revert "add controllers (draft)"

This reverts commit e2c3f01b2fadcff74347bac90c8a5cc1ef4e27b3.

* fix that

* conventions

* just use CS

* consider controlsd state machine in card: not fully done

* hmm it's just becoming controlsd

* rm debugging

* Revert "hmm it's just becoming controlsd"

This reverts commit 534a357ee95bec4ed070667186af55d59421bbc7.

* Revert "just use CS"

This reverts commit 9fa7406f30c86200f20457f7b9ff95e731201bf9.

* add vCruise

* migrate car state

* Revert "migrate car state"

This reverts commit 4ae86ca163c6920070f410f608f7644ab632850b.

* Revert "add vCruise"

This reverts commit af247a8da41c3626ada4231b98042da1a1ae4633.

* simple state machine in card (doesn't work as is)

* Revert "simple state machine in card (doesn't work as is)"

This reverts commit b4af8a9b0a2e17fdfc89d344c64678ef51305c24.

* poll carState without conflate

* bump

* remove state transition

* fix

* update refs

* ignore cumLagMs and don't ignore valid

* fix controls mismatch; controlsd used to set alt exp

* controlsd_config_callback not needed for card

* revert ref temp

* update refs

* no poll

* not builder!

* test fix

* need to migrate initialized

* CC will be a reader

* more as_reader!

* fix None

* init after publish like before - no real difference

* controlsd clean up

* remove redundant check and check passive for init

* stash

* flip

* migrate missing carOutput for controlsd

* Update ref_commit

* bump cereal

* comment

* no class params

* no class

* Revert "no class"

This reverts commit 5499b83c2dcb5462070626f8523e3aec6f4c209d.

* add todo

* regen and update refs

* fix

* update refs

* and fix that

* should be controlsstate

* remove controlsState migration

CoS.initialized isn't needed yet

* fix

* flip!

* bump

* fix that

* update refs

* fix

* if canValid goes false, controlsd would still send

* bump

* rm diff

* need to be very careful with initializing

* update refs
old-commit-hash: 71f5c441fe32184d94a9f26565a36c661e2ccf28
2024-05-21 01:18:10 -07:00
Adeeb Shihadeh 385f3c0041 also tag as latest
old-commit-hash: 5e98d9e2895330264a42c90c81c347b7d5bd1f5c
2024-05-20 23:28:58 -07:00
Shane Smiskol f7e0da0dd9 regen: use existing carParams msg (#32493)
use existing msg
old-commit-hash: ce136317d8e7c9d1c2981dacc77df414859c0e21
2024-05-20 23:26:47 -07:00
Adeeb Shihadeh 14e7c7d260 thermald: move to system/ (#32494)
* thermald: move to system/

* fix path

* revert
old-commit-hash: b2cf9b35f68061587fd6ab7a94a58f7b433b2da2
2024-05-20 22:51:29 -07:00
Adeeb Shihadeh 7a3e454d27 move sentry/stats to system/ (#32490)
* move sentry/stats to system/

* fix
old-commit-hash: da6fd751257bcd3aa087ac4114e9f1529f7d3d12
2024-05-20 22:39:25 -07:00
Adeeb Shihadeh 3358745103 ruff: enable UP
old-commit-hash: b2e4c64cf8fe3256d1e411e8715c29e2eb6f4f00
2024-05-20 17:43:54 -07:00
Shane Smiskol b3fc3f25ce process replay: regen routes (#32464)
* regen

* regen

* update

* undo

* update refs

* fix

* real fix

* test

* test2

* test3

* stash

* Revert "stash"

This reverts commit bf6765f526b48426f49a4b29c4042097f57fc4b0.

* rk.lagging can not be trusted. BODY segment has radarFault while modelV2 is not valid, causing radarState to not be valid

* order

* update refs again

* we never logged carOutput!

* bump

* add back checks
old-commit-hash: 220fcc16753ce87c8997275733f62bc385342a7e
2024-05-19 01:07:12 -07:00
ZwX1616 1f9bc952bf dmonitoringd: don't check for buttonEvents or vCruise change (#32454)
* drop check for carState.buttonEvents

* 100% people not use this

* huge oof

* ref comit

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
old-commit-hash: 8e87655a128f6b2ebcc6fdcf639167d647c99fe0
2024-05-17 21:38:03 -07:00
Adeeb Shihadeh eaa6fe2510 remove old valgrind replay test
old-commit-hash: e1a697fee521eedad2210d8e01d668e2bb020ace
2024-05-17 19:43:47 -07:00
cl0cks4fe 639a634f7c Unittest to pytest (#32366)
* add pytest-asyncio

* switch common

* switch selfdrive

* switch system

* switch tools

* small fixes

* fix setUp and valgrind pytest

* switch to setup

* fix random

* switch mock

* switch test_lateral_limits

* revert test_ui

* fix poetry.lock

* add unittest to banned-api

* add inline ignores to remaining unittest imports

* revert test_models

* revert check_can_parser_performance

* one more skip

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: dd9d5d4528ff0a61c7699abc1b63ba8fd282632f
2024-05-17 11:01:44 -07:00
Shane Smiskol 681f5c6a34 process replay: check missing services (#32452)
* add check to check

* don't forget to raise

* skip this segment
old-commit-hash: ac81467c5c2c7ca0f340ee8d2aff81e330eb803a
2024-05-16 21:11:55 -07:00
ZwX1616 2cb58bbe35 DM: improve e2e predictions (#32431)
* good but need to freeze quant weights

* pass ref

* pg

* update model reply
old-commit-hash: b8171a1e9cb1696377e33657052ee75655f771f9
2024-05-16 13:55:40 -07:00
Shane Smiskol 426ab7d7d8 Fix test_time_to_onroad (#32423)
* this star doesn't make sense

* only docs for now

* flip

* fix spotty test_time_to_onroad.py

* better

fix

fix

fix

fix

* already there -_-

* we can fp again
old-commit-hash: 46eda641773a1e00b54d4b2d58c64bed3480a24a
2024-05-13 18:56:15 -07:00
Shane Smiskol 97dc134a42 card: create pedal pressed event (#32417)
* card: create pedal pressed event (#32393)

* move pedalPressed to card

* rm

* needs to be a builder

* move these

* clean up

* reader later

* Update ref_commit

* moved to card
old-commit-hash: d0d44a51a0ff66c1b2da56b3d9864e10ecc2174d
2024-05-13 16:18:55 -07:00
Shane Smiskol 4c7c4272d0 Revert "card: create pedal pressed event" (#32414)
Revert "card: create pedal pressed event (#32393)"

This reverts commit 05be56def1f1fdddb761291e1a40cce459fc7d36.
old-commit-hash: 9287a6962479b63f1628086a73459b4e7e933d59
2024-05-13 14:25:22 -07:00
Shane Smiskol 48bb3caaac card: create pedal pressed event (#32393)
* move pedalPressed to card

* rm

* needs to be a builder

* move these

* clean up

* reader later

* Update ref_commit
old-commit-hash: d18da895d3b70dc62ee3cd8ebeb75de6cf48e7a9
2024-05-13 14:15:26 -07:00
Shane Smiskol 4a0b3c8b64 CarInterface: move stateless, common car events to car interface (#32394)
* move stateless, common car events to car interface

* try to reduce process replay diff a bit

* Revert "try to reduce process replay diff a bit"

This reverts commit b12798deabea67c5a636d6e70e80a3c21c7225ff.

* update refs
old-commit-hash: 3dfb6d7931711c51ecfe0d8c32f0ff928b17a5c9
2024-05-13 12:50:42 -07:00
Shane Smiskol 4b0149cb14 Events: use sorted container (#32395)
* use SortedList

* Update ref_commit
old-commit-hash: d98ab4ddb1beebdf7079d403a837aabbf7d86918
2024-05-13 12:16:53 -07:00
Jason Young 2b755e330d VW: raise minimum steering speed to fix a fault (#31450)
* VW: Steer to zero, for large values of zero

* ah, the joy of floating point

* comment, style

* actually fix floating point issue

* follow PlatformConfig refactor

* this check is not useful after PlatformConfig

* don't really need that

* work around docs assert

* little better

* one comment

* update refs

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
old-commit-hash: 93fa207c5cafa908a15dd460025c005ee7cf1746
2024-05-08 14:38:08 -07:00
Adeeb Shihadeh f8c730ef4e CPU budget (#32335)
* cpu budget

* comment

* new line
old-commit-hash: bf2e00a23382fede8608d75884ead3ff30ddaa9f
2024-05-02 12:09:34 -07:00
Harald Schäfer 375978d40b North Dakota Model (#32309)
* ND model

* 86d23b15-5c26-464d-9fb5-e857f025462c/700

* Model ref replay commit

* update ref again
old-commit-hash: b9994c7c95658024199ec8f6049c17ca2522bbc3
2024-04-29 17:42:49 -07:00
ZwX1616 f466145f34 image processing refactor and test (#32249)
* it's something

* backup

* 16:10

* cleanup

* this is fine

* close

* remove some junk

* no heck

* disos

* real 10

* for some reason this is flipped

* 20hz

* no return

* ae

* tear

* need curve laster

* correct real gains

* fix time

* cleanup

* why the scam

* disable for now

* 0.7

* hdr

* that doesnt work

* what

* hugeoof

* clean up

* cleanup

* fix regs

* welp cant

* is this corrent

* it is sq

* remove

* back

* stg10bit

* back2ten

* Revert "remove"

This reverts commit 18712ab7e103c12621c929cd0f772ecb9b348247.

* 20hz and swb

* correct height

* 10bit

* ui hack for now

* slight

* perfect

* blk64

* ccm

* fix page faults

* template

* set 4x

* is this fine

* try

* this seems to work

* Revert "this seems to work"

This reverts commit d3c9023d3f14bd9394fed2d6276dba777ed0e606.

* needs to be static

* close

* 64 is optimal

* 2

* take

* not 1

* offset

* whats going on

* i have no idea

* less resistence

* box defs

* no

* reduce blur artifacts

* simplify

* fix

* fake short is too much for bright

* can be subzero

* should not use lsvc

* no wasted bit

* cont no slow

* no less than 10bit

* it is based

* wrong

* right

* quart

* shift

* raise noise floor

* 4.5/4.7

* same ballpark

* int is fine

* shane owes me m4a4

* Revert "shane owes me m4a4"

This reverts commit b4283fee18efebedae628a6cfd926ff1416dcfe5.

* back

* Revert "4.5/4.7"

This reverts commit e38f96e90cb5370bd378f6b66def9e7e3ed0ce5d.

* default

* oof

* clean up

* simpilfy

* from sensorinfo

* no div

* better name

* not the wrong one

* not anymore relevant

* too

* not call it debayer

* cl headers

* arg is 2nd

* gone is is_bggr

* define

* no is hdr

* rgb_tmp

* p1

* clean up

* 4

* cant for

* fix somewhre else

* const

* ap

* rects

* just set staruc

* nnew tmp

* pull it for now

* 12

* common rect

* Revert "not anymore relevant"

This reverts commit 1d574673a16cc31b7a255609e07775c3579eef15.

* Revert "too"

This reverts commit c2d4dcc52a859fe799362f9fcc2ffda99b264e50.

* Revert "Revert "too""

This reverts commit 0abbabe1fde51592f1619058638b4ac6a6dee4b3.

* no tol is fine

* rename

* sensor id

* unsgin

* flag

* some linalg

* cast

* should be h ref

* cap

---------

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 331c7b103a7e4349c75be373589fc68161e69500
2024-04-18 21:45:59 -07:00
Shane Smiskol ad662f6f95 Update ref_commit
old-commit-hash: 2e5f2d208ce521c16343c2a73a2ec136eed75b48
2024-04-17 23:50:42 -07:00
ZwX1616 c741dca04c Toggle to always enable DM (#32205)
* permanent

* param

* correct behavior

* toggle

* need trans

* ref_commit

* translate for chs/t

* disable on P and R

* read
old-commit-hash: 1d05704d27dbe4f73c0eba7e8dad2ae84d4e205e
2024-04-17 12:56:37 -07:00
YassineYousfi 9691393bde WD40 model (#32141)
* 2eedcd90-b7db-46cb-86be-740f48ded7ab/700

* cleanup some constants

* update model replay ref
old-commit-hash: 6c3a33a6d847c946e11f5a6414e270ae3ee5c03d
2024-04-09 11:19:43 -07:00
YassineYousfi 75a69e12b3 disable navigate on openpilot (#32106)
* 2eedcd90-b7db-46cb-86be-740f48ded7ab/700

* noop ciao

* here too

* mapsd too

* update translations

* disable mapsd test from test onroad

* disable mapRenderState test from timings

* lint

* fix exp mode toggle panel

* update tr

* french done

* dont build mapd

* only no nav

* just comment

* deprecate nav fields

* rm not comment

* dont deprecate too much

* remove from services

* merge cereal
old-commit-hash: 754dd45ffa82bf3d7f2d3413c4132eb65551ebd5
2024-04-09 10:40:38 -07:00
Justin Newberry b63b302438 more helpers for e2e testing updated (#32128)
casync test prereq
old-commit-hash: 3c9bf992a5998dde51e626ddd6998611011e44ef
2024-04-08 14:05:18 -07:00
Shane Smiskol 3c1694ec56 VW: check cruise control (#32049)
* VW: check cruise control!

* fix that

* fix that

* Update ref_commit
old-commit-hash: 493c81076b230facec12de3065e877847a671ec7
2024-03-29 20:56:40 -07:00
Cameron Clough 6f9c3f88cd Ford: handle metric cruise speed (v2) (#31463)
* Ford: handle metric cruise speed (v2)

**Description**

I found a signal which appears to match the IPC "Show km/h" setting.
Requires https://github.com/commaai/opendbc/pull/1010.

**Verification**

- [ ] Test in car and confirm that toggling the "Show km/h" setting does
  not result in the cruise speed shown in openpilot being incorrect.
- [ ] Test in a non-English (metric) car.

* not present on Q4

* fix freq

* test

* Revert "test"

This reverts commit 5e3a9f6df126d51685157de1e52bd6695db40fac.

* Update ref_commit

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
old-commit-hash: b59ae50961244de60b7bc426e5566c24278adc85
2024-03-21 16:19:59 -07:00
Justin Newberry b899592b18 cars: platform enums -> prepend brand name (#31927)
* with brand name

* migrate

* Fix

* fixes

* more

* passes

* fix

* fix the doc

* collects

* these too

* more stuff

* body exception :/

* more

* hardcode i guess

* update ref

* toyota

* more toyota

* and here

* final!

* fix notebooks and ccs

* move this here
old-commit-hash: b0eb3ba4f477142797624580eb3fdb6448f068d6
2024-03-19 17:29:50 -07:00
Justin Newberry a5bc36ea9d move git commands to common/git.py (#31921)
move git into common/git.py
old-commit-hash: 4fbc8a389662f82018eeabd03294cc761b87ce75
2024-03-19 12:39:09 -07:00
thenhnn 77d6d1a8f1 PlatformConfig: automatically get platform_str from the enum name (#31868)
* get platform_str from the enum name

* fix tests

* add migration table

* remove impossible todo

* Add link to PR in MIGRATION table

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

* Remove useless brand name comments and rename RAM_1500 to RAM_1500_5TH_GEN

* rename RAM_HD to RAM_HD_5TH_GEN

* rename references to RAM_HD and RAM_1500

* change "mock" to "MOCK" and rename torque data of Nissan Leaf 2018 IC

* remove MOCK from fingerprints.py

* change hard-coded car model in test_can_fingerprint.py/test_timing

* migration

* update ref

* space

* prius

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
Co-authored-by: justin newberry <justin@comma.ai>
Co-authored-by: Justin Newberry <jnewberry0502@gmail.com>
old-commit-hash: 489528dcae3888311f92075ba9e0f68626725121
2024-03-19 11:16:02 -07:00
YassineYousfi 5f3960a3a7 duck amigo model (#31883)
* 026c8008-1728-4549-baf4-ab0436f2927d/700

* update model replay ref

* update again
old-commit-hash: 2aaaa3f1674d5aa2f0d9c685f8257d2466141d5c
2024-03-18 16:37:15 -07:00
Adeeb Shihadeh 3bf3f4bf78 remove pedal (#31903)
* remove pedal

* bump panda

* fix

* update refs
old-commit-hash: fa12a6722868d436f15bea31537df1277bcc4027
2024-03-17 22:42:49 -07:00
Shane Smiskol 7ffcd0d13d Honda Nidec: show distance bars (#31854)
* show lines nidec

* lead

* Update ref_commit
old-commit-hash: 7d0f234398be7cf2dee88a83cc4c12a9f4a06364
2024-03-13 01:53:15 -07:00
Shane Smiskol f3414250a3 Move personality to controlsState (#31855)
* start at param

* start by sending personality

* change to personality

* POC: button changes personality

* what's wrong with this?

* fix

* not really possible but fuzzy test catches this

* there's always a typo

* dang, we're dropping messages

* clean up

* no comment

* bump

* rename

* not all cars yet

* works but at what cost

* clean up

* inside settings

* write param so we save the distance button changes

* setChecked activates buttonToggled and already writes param!

* don't need this, we update from longitudinalPlan on changes

* some clean up

* more

* ui

* allow some time for ui to receive and write param

* plannerd: only track changes in case no ui

* Revert "plannerd: only track changes in case no ui"

This reverts commit 2b081aa6ceb92c67a621b74592b2292756d29871.

* write in plannerd as well, I assume this is atomic?

* don't write when setting checked (only user clicks)

* better nane

* more

* Update selfdrive/controls/lib/longitudinal_planner.py

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>

* doesn't write param now

* ParamWatcher is nice

* no debug

* Update translations

* fix

* odd drain sock proc replay behavior

* vanish

* Revert "odd drain sock proc replay behavior"

This reverts commit 29b70b39413e1852bb512155af6b6a94a5bd9454.

* add GM

* only if OP long

* move personality to controlsState, since eventually it won't be exclusive to long planner

more

bump

* diff without translations

* fix

* put nonblocking

* CS should start at up to date personality always (no ui flicker)

* update toggle on cereal message change

* fix

* fix that

* ubmp

* mypy doesn't know this is an int :(

* update translations

* fix the tests

* revert ui

* not here

* migrate controlsState

* Revert "migrate controlsState" - i see no reason we need to test with
any specific personality

This reverts commit 6063508f2df1a5623f113cda34dcd59a1f4b2ac9.

* Update ref_commit

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
old-commit-hash: 29e55f99a54d95215aa79ecf94a22363f82913a6
2024-03-13 00:57:57 -07:00
Adeeb Shihadeh 5733c516c3 move pigeond to system/ubloxd/ (#31848)
* move pigeond to system/ubloxd/

* update release

* more

* mv test
old-commit-hash: 147ccc7a582518e565755262e36799b540b5ddf7
2024-03-12 17:13:13 -07:00