(cherry picked from commit 22653c99f874e189bda6670c42be38151b58e52b) (cherry picked from commit cce7f1adf2b76c59d8a07f080f23d4b125ed8f15) (cherry picked from commit d2795c98ddf37ab3a74752ecf54ad65af8541c25)
(cherry picked from commit 22653c99f874e189bda6670c42be38151b58e52b) (cherry picked from commit cce7f1adf2b76c59d8a07f080f23d4b125ed8f15) (cherry picked from commit d2795c98ddf37ab3a74752ecf54ad65af8541c25)