(cherry picked from commit 679478d0c643defb3759a2ecd3c704315edee124) (cherry picked from commit bf87c523ab5ffd1d5a94e74639be5de7821a6c5b) (cherry picked from commit 031ad740b934d5fe67495bec34237aad3cc83815)
(cherry picked from commit 679478d0c643defb3759a2ecd3c704315edee124) (cherry picked from commit bf87c523ab5ffd1d5a94e74639be5de7821a6c5b) (cherry picked from commit 031ad740b934d5fe67495bec34237aad3cc83815)