Готовое решение не оптимально по памяти, грязный код
Merge branch 'Dev' into Test