(cherry picked from commit 9195a6e302028ed3921d1016ac2fa5754f06ebf0) (cherry picked from commit 55142849db02a9191db0dd6f4e1401ff19ec242a) (cherry picked from commit 082a707bae4bb97444a34c00eecd62975807388d)