(cherry picked from commit b59b8b7351c8212a7ea05777fbe0eb7afb53bf62)
(cherry picked from commit e2f640942b722e35490cf146c0268517da5a28b1) (cherry picked from commit 2a956baaabe4a86a63fc181c3a07b2f4c4ee2a75)