(cherry picked from commit ca6063d6790f27ef39fb17c5ec7e917c99d83dce)
(cherry picked from commit bf77add8989f50981ef08fb7dd0ae7dd059be6c8)
(cherry picked from commit 1df1f690219002ee38df1559a173de207b1363a4)