(cherry picked from commit 875062b5bc789158290bf93dadc71b5328ca4fee) (cherry picked from commit 269401dc83699e4de7b99e794eeb7646a7f3fc93)
(cherry picked from commit 3d937457ee60d617d71b36bb6a29344e771670b4) (cherry picked from commit 65822e55fd99511ab0c39f802d3ec58290445f9d)