Bertrand Janin <b@janin.com>

With contributions from:

    Wu Jiang - https://github.com/wujiang
    Pascal Bleser - https://github.com/pbleser
    Franck Labadille - https://github.com/fluxspir
    Vlad Glagolev <stealth@sourcemage.org>
