AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.112
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/c/o/o/coopiak/plats-individuels/lyon/components/com_community/assets/release/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/c/o/o/coopiak/plats-individuels/lyon/components/com_community/assets/release/js/bundle.js
(function () {
/**
 * @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
 * Available via the MIT or new BSD license.
 * see: http://github.com/jrburke/almond for details
 */
//Going sloppy to avoid 'use strict' string cost, but strict practices should
//be followed.
/*jslint sloppy: true */
/*global setTimeout: false */

var requirejs, require, define;
(function (undef) {
    var main, req, makeMap, handlers,
        defined = {},
        waiting = {},
        config = {},
        defining = {},
        hasOwn = Object.prototype.hasOwnProperty,
        aps = [].slice,
        jsSuffixRegExp = /\.js$/;

    function hasProp(obj, prop) {
        return hasOwn.call(obj, prop);
    }

    /**
     * Given a relative module name, like ./something, normalize it to
     * a real name that can be mapped to a path.
     * @param {String} name the relative name
     * @param {String} baseName a real name that the name arg is relative
     * to.
     * @returns {String} normalized name
     */
    function normalize(name, baseName) {
        var nameParts, nameSegment, mapValue, foundMap, lastIndex,
            foundI, foundStarMap, starI, i, j, part,
            baseParts = baseName && baseName.split("/"),
            map = config.map,
            starMap = (map && map['*']) || {};

        //Adjust any relative paths.
        if (name && name.charAt(0) === ".") {
            //If have a base name, try to normalize against it,
            //otherwise, assume it is a top-level require that will
            //be relative to baseUrl in the end.
            if (baseName) {
                //Convert baseName to array, and lop off the last part,
                //so that . matches that "directory" and not name of the baseName's
                //module. For instance, baseName of "one/two/three", maps to
                //"one/two/three.js", but we want the directory, "one/two" for
                //this normalization.
                baseParts = baseParts.slice(0, baseParts.length - 1);
                name = name.split('/');
                lastIndex = name.length - 1;

                // Node .js allowance:
                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
                }

                name = baseParts.concat(name);

                //start trimDots
                for (i = 0; i < name.length; i += 1) {
                    part = name[i];
                    if (part === ".") {
                        name.splice(i, 1);
                        i -= 1;
                    } else if (part === "..") {
                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {
                            //End of the line. Keep at least one non-dot
                            //path segment at the front so it can be mapped
                            //correctly to disk. Otherwise, there is likely
                            //no path mapping for a path starting with '..'.
                            //This can still fail, but catches the most reasonable
                            //uses of ..
                            break;
                        } else if (i > 0) {
                            name.splice(i - 1, 2);
                            i -= 2;
                        }
                    }
                }
                //end trimDots

                name = name.join("/");
            } else if (name.indexOf('./') === 0) {
                // No baseName, so this is ID is resolved relative
                // to baseUrl, pull off the leading dot.
                name = name.substring(2);
            }
        }

        //Apply map config if available.
        if ((baseParts || starMap) && map) {
            nameParts = name.split('/');

            for (i = nameParts.length; i > 0; i -= 1) {
                nameSegment = nameParts.slice(0, i).join("/");

                if (baseParts) {
                    //Find the longest baseName segment match in the config.
                    //So, do joins on the biggest to smallest lengths of baseParts.
                    for (j = baseParts.length; j > 0; j -= 1) {
                        mapValue = map[baseParts.slice(0, j).join('/')];

                        //baseName segment has  config, find if it has one for
                        //this name.
                        if (mapValue) {
                            mapValue = mapValue[nameSegment];
                            if (mapValue) {
                                //Match, update name to the new value.
                                foundMap = mapValue;
                                foundI = i;
                                break;
                            }
                        }
                    }
                }

                if (foundMap) {
                    break;
                }

                //Check for a star map match, but just hold on to it,
                //if there is a shorter segment match later in a matching
                //config, then favor over this star map.
                if (!foundStarMap && starMap && starMap[nameSegment]) {
                    foundStarMap = starMap[nameSegment];
                    starI = i;
                }
            }

            if (!foundMap && foundStarMap) {
                foundMap = foundStarMap;
                foundI = starI;
            }

            if (foundMap) {
                nameParts.splice(0, foundI, foundMap);
                name = nameParts.join('/');
            }
        }

        return name;
    }

    function makeRequire(relName, forceSync) {
        return function () {
            //A version of a require function that passes a moduleName
            //value for items that may need to
            //look up paths relative to the moduleName
            return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync]));
        };
    }

    function makeNormalize(relName) {
        return function (name) {
            return normalize(name, relName);
        };
    }

    function makeLoad(depName) {
        return function (value) {
            defined[depName] = value;
        };
    }

    function callDep(name) {
        if (hasProp(waiting, name)) {
            var args = waiting[name];
            delete waiting[name];
            defining[name] = true;
            main.apply(undef, args);
        }

        if (!hasProp(defined, name) && !hasProp(defining, name)) {
            throw new Error('No ' + name);
        }
        return defined[name];
    }

    //Turns a plugin!resource to [plugin, resource]
    //with the plugin being undefined if the name
    //did not have a plugin prefix.
    function splitPrefix(name) {
        var prefix,
            index = name ? name.indexOf('!') : -1;
        if (index > -1) {
            prefix = name.substring(0, index);
            name = name.substring(index + 1, name.length);
        }
        return [prefix, name];
    }

    /**
     * Makes a name map, normalizing the name, and using a plugin
     * for normalization if necessary. Grabs a ref to plugin
     * too, as an optimization.
     */
    makeMap = function (name, relName) {
        var plugin,
            parts = splitPrefix(name),
            prefix = parts[0];

        name = parts[1];

        if (prefix) {
            prefix = normalize(prefix, relName);
            plugin = callDep(prefix);
        }

        //Normalize according
        if (prefix) {
            if (plugin && plugin.normalize) {
                name = plugin.normalize(name, makeNormalize(relName));
            } else {
                name = normalize(name, relName);
            }
        } else {
            name = normalize(name, relName);
            parts = splitPrefix(name);
            prefix = parts[0];
            name = parts[1];
            if (prefix) {
                plugin = callDep(prefix);
            }
        }

        //Using ridiculous property names for space reasons
        return {
            f: prefix ? prefix + '!' + name : name, //fullName
            n: name,
            pr: prefix,
            p: plugin
        };
    };

    function makeConfig(name) {
        return function () {
            return (config && config.config && config.config[name]) || {};
        };
    }

    handlers = {
        require: function (name) {
            return makeRequire(name);
        },
        exports: function (name) {
            var e = defined[name];
            if (typeof e !== 'undefined') {
                return e;
            } else {
                return (defined[name] = {});
            }
        },
        module: function (name) {
            return {
                id: name,
                uri: '',
                exports: defined[name],
                config: makeConfig(name)
            };
        }
    };

    main = function (name, deps, callback, relName) {
        var cjsModule, depName, ret, map, i,
            args = [],
            callbackType = typeof callback,
            usingExports;

        //Use name if no relName
        relName = relName || name;

        //Call the callback to define the module, if necessary.
        if (callbackType === 'undefined' || callbackType === 'function') {
            //Pull out the defined dependencies and pass the ordered
            //values to the callback.
            //Default to [require, exports, module] if no deps
            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
            for (i = 0; i < deps.length; i += 1) {
                map = makeMap(deps[i], relName);
                depName = map.f;

                //Fast path CommonJS standard dependencies.
                if (depName === "require") {
                    args[i] = handlers.require(name);
                } else if (depName === "exports") {
                    //CommonJS module spec 1.1
                    args[i] = handlers.exports(name);
                    usingExports = true;
                } else if (depName === "module") {
                    //CommonJS module spec 1.1
                    cjsModule = args[i] = handlers.module(name);
                } else if (hasProp(defined, depName) ||
                           hasProp(waiting, depName) ||
                           hasProp(defining, depName)) {
                    args[i] = callDep(depName);
                } else if (map.p) {
                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
                    args[i] = defined[depName];
                } else {
                    throw new Error(name + ' missing ' + depName);
                }
            }

            ret = callback ? callback.apply(defined[name], args) : undefined;

            if (name) {
                //If setting exports via "module" is in play,
                //favor that over return value and exports. After that,
                //favor a non-undefined return value over exports use.
                if (cjsModule && cjsModule.exports !== undef &&
                        cjsModule.exports !== defined[name]) {
                    defined[name] = cjsModule.exports;
                } else if (ret !== undef || !usingExports) {
                    //Use the return value from the function.
                    defined[name] = ret;
                }
            }
        } else if (name) {
            //May just be an object definition for the module. Only
            //worry about defining if have a module name.
            defined[name] = callback;
        }
    };

    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
        if (typeof deps === "string") {
            if (handlers[deps]) {
                //callback in this case is really relName
                return handlers[deps](callback);
            }
            //Just return the module wanted. In this scenario, the
            //deps arg is the module name, and second arg (if passed)
            //is just the relName.
            //Normalize module name, if it contains . or ..
            return callDep(makeMap(deps, callback).f);
        } else if (!deps.splice) {
            //deps is a config object, not an array.
            config = deps;
            if (config.deps) {
                req(config.deps, config.callback);
            }
            if (!callback) {
                return;
            }

            if (callback.splice) {
                //callback is an array, which means it is a dependency list.
                //Adjust args if there are dependencies
                deps = callback;
                callback = relName;
                relName = null;
            } else {
                deps = undef;
            }
        }

        //Support require(['a'])
        callback = callback || function () {};

        //If relName is a function, it is an errback handler,
        //so remove it.
        if (typeof relName === 'function') {
            relName = forceSync;
            forceSync = alt;
        }

        //Simulate async callback;
        if (forceSync) {
            main(undef, deps, callback, relName);
        } else {
            //Using a non-zero value because of concern for what old browsers
            //do, and latest browsers "upgrade" to 4 if lower value is used:
            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
            //If want a value immediately, use require('id') instead -- something
            //that works in almond on the global level, but not guaranteed and
            //unlikely to work in other AMD implementations.
            setTimeout(function () {
                main(undef, deps, callback, relName);
            }, 4);
        }

        return req;
    };

    /**
     * Just drops the config on the floor, but returns req in case
     * the config return value is used.
     */
    req.config = function (cfg) {
        return req(cfg);
    };

    /**
     * Expose module registry for debugging and tooling
     */
    requirejs._defined = defined;

    define = function (name, deps, callback) {

        //This module may not have dependencies
        if (!deps.splice) {
            //deps is not an array, so probably means
            //an object literal or factory function for
            //the value. Adjust args.
            callback = deps;
            deps = [];
        }

        if (!hasProp(defined, name) && !hasProp(waiting, name)) {
            waiting[name] = [name, deps, callback];
        }
    };

    define.amd = {
        jQuery: true
    };
}());

define("../../vendors/almond", function(){});

;(function( root ) {

/**
 * Relative path for assets loading.
 * @name joms.BASE_URL
 * @const {string}
 */
joms.BASE_URL = root.joms_base_url;
delete root.joms_base_url;

// Fix www/non-www redirection.
var reDomain = /https?:\/\/[^/]+/;
var baseDomain = joms.BASE_URL.match( reDomain );
var realDomain = (location.href).match( reDomain );
if ( baseDomain && realDomain && baseDomain[0] !== realDomain[0] ) {
    joms.BASE_URL.replace( reDomain, realDomain[0] );
}

/**
 * Relative path for assets loading.
 * @name joms.ASSETS_URL
 * @const {string}
 */
joms.ASSETS_URL = root.joms_assets_url;
delete root.joms_assets_url;

/**
 * Detect mobile browser.
 * @name joms.mobile
 * @const {boolean}
 */
joms.mobile = (function() {
    var mobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i;
    return mobile.test( navigator.userAgent );
})();

/**
 * Detect mobile safari (iOS) browser.
 * @name joms.ios
 * @const {boolean}
 */
joms.ios = (function() {
    var ios = /iphone|ipad|ipod/i;
    return ios.test( navigator.userAgent );
})();

/**
 * Detect screen size based on it's width and css breakpoint rule.
 * Breakpoints: 0 - 480 | 481 - 991 | 992 - ~
 * @function joms.screenSize
 */
joms.screenSize = function() {
    var width = window.innerWidth;
    if ( width <= 480 ) return 'small';
    if ( width <= 991 ) return 'medium';
    return 'large';
};

/**
 * jQuery.ajax wrapper to perform ajax request
 * @function joms.ajax
 * @param {object} options - Ajax call options
 */
joms.ajax = function( options ) {
    var url   = root.jax_live_site || '',
        token = root.jax_token_var || '_no_token_found_',
        data  = {};

    options || (options = {});

    // Match jax.call parameters.
    data[token]  = 1;
    data.task    = 'azrul_ajax';
    data.option  = options.option || 'community';
    data.func    = options.func;
    data.no_html = 1;

    delete options.option;
    delete options.func;

    // Build arguments.
    if ( options.data && options.data.length ) {
        for ( var i = 0, arg; i < options.data.length; i++ ) {
            arg = options.data[ i ];
            if ( typeof arg === 'string' )
                arg = arg.replace( /"/g, '&quot;' );
            if ( !joms._.isArray( arg ) )
                arg = [ '_d_', encodeURIComponent( arg ) ];
            data[ 'arg' + ( i + 2 ) ] = JSON.stringify( arg );
        }
    }

    var response;

    // Override options.
    options.url      = url;
    options.type     = 'post';
    options.dataType = 'json';
    options.data     = data;

    options.success = function( json ) {
        if ( json ) response = json;
    };

    options.complete = function() {
        response || (response = { error: 'Undefined error.' });

        if ( response.noLogin ) {
            joms.api && joms.api.login( response );
            joms.view.misc.fixSVG();
            return;
        }

        // Execute additional callbacks (if any).
        var stop;
        if ( joms._onAjaxReponseQueue &&
             joms._onAjaxReponseQueue[ data.func ] &&
             joms._onAjaxReponseQueue[ data.func ].length ) {
            for ( var i = 0; i < joms._onAjaxReponseQueue[ data.func ].length; i++ )  {
                if ( typeof joms._onAjaxReponseQueue[ data.func ][i] === 'function' ) {
                    if ( joms._onAjaxReponseQueue[ data.func ][i]( response ) === false ) {
                        stop = true;
                    }
                }
            }
        }

        if ( typeof options.callback === 'function' && ( !stop ) ) {
            options.callback( response );
        }

        joms.view.misc.fixSVG();
    };

    // Perform ajax request.
    return joms.jQuery.ajax( options );
};

/**
 * Hide non-jomsocial contents.
 * @function joms.____
 */
joms.____ = function() {
    var node = joms.jQuery('#community-wrap');
    while ( node.length && node[0].tagName.toLowerCase() !== 'body' ) {
        node.siblings().hide();
        node = node.parent();
        node.css({
            border: '0 none',
            padding: 0,
            marginTop: 0,
            marginBottom: 0,
            width: 'auto'
        });
    }
};

/**
 * Prints SVG icons into document.body for testing purpose.
 * @function joms._printSVGIcons
 */
joms._printSVGIcons = function() {
    var icons = [ 'home', 'newspaper', 'pencil', 'image', 'images', 'camera', 'play', 'film', 'camera2', 'bullhorn', 'library', 'profile', 'support', 'envelope', 'location', 'clock', 'bell', 'calendar', 'box-add', 'box-remove', 'bubble', 'bubbles', 'user', 'users', 'spinner', 'search', 'key', 'lock', 'wrench', 'cog', 'gift', 'remove', 'briefcase', 'switch', 'signup', 'list', 'menu', 'earth', 'link', 'eye', 'star', 'star2', 'star3', 'thumbs-up', 'happy', 'smiley', 'tongue', 'sad', 'wink', 'grin', 'cool', 'angry', 'evil', 'shocked', 'confused', 'neutral', 'wondering', 'warning', 'info', 'blocked', 'spam', 'close', 'checkmark', 'plus', 'arrow-right', 'arrow-left', 'tab', 'filter', 'console', 'share', 'facebook', 'libreoffice', 'file-zip', 'arrow-down', 'redo', 'tag', 'search-user' ];
    var $ct = joms.jQuery('<div>');

    for ( var i = 0; i < icons.length; i++ ) {
        $ct.append(
            '<svg viewBox="0 0 30 30" class="joms-icon" style="width:30px;height:30px">' +
            '<use xlink:href="#joms-icon-' + icons[i] +  '"></use>' +
            '</svg>'
        );
    }

    $ct.appendTo( document.body );
};

// AMD-style output.
if ( typeof define === 'function' ) define('core',[],function () {
	return root.joms;
});

})( this );

(function( root, $, IS_DESKTOP, factory ) {

    joms.util || (joms.util = {});
    joms.util.crop = factory( root, $, IS_DESKTOP );

})( window, joms.jQuery, !joms.mobile, function( window, $, IS_DESKTOP ) {

var cropper, wrapper, hammertime, measurements, resizeDirection;

function Cropper( elem ) {
    return Cropper.attach( elem );
}

Cropper.init = function() {
    wrapper || ( wrapper = $('<div class="joms-cropper__wrapper" />') );
    cropper || ( cropper = $('<div class="joms-cropper__box" />') );
};

Cropper.attach = function( elem ) {
    Cropper.init();
    Cropper.detach();
    reset();

    $( elem ).wrap( wrapper );

    // todo (rudy) change this hack
    wrapper = $( elem ).parent();

    cropper.insertAfter( elem );

    if ( !hammertime ) {
        hammertime = new joms.Hammer( cropper[0] );
        hammertime.on( 'touch drag release', function( e ) {
            e.stopPropagation();
            e.preventDefault();
            e.gesture.stopPropagation();
            e.gesture.preventDefault();

            if ( e.type === 'touch' ) {
                disableDesktopEvents();
                onTouch( e.gesture );
            } else if ( e.type !== 'release' ) {
                onDragOrResize( e.gesture );
            } else {
                onRelease( e.gesture );
                enableDesktopEvents();
            }
        });
    }

    enableDesktopEvents();

    return elem;
};

Cropper.detach = function() {
    Cropper.init();
    cropper.detach();
    wrapper.children().unwrap();
    wrapper.detach();
};

Cropper.getSelection = function() {
    var mea = measurements;

    return {
        x: mea.cropperLeft,
        y: mea.cropperTop,
        width: mea.cropperWidth,
        height: mea.cropperHeight
    };
};

function reset() {
    cropper.css({
        top: '',
        left: '',
        right: '',
        bottom: '',
        width: '',
        height: '',
        webkitTransform: '',
        mozTransform: '',
        transform: ''
    });
}

function measure() {
    var wrp = wrapper[0],
        img = wrapper.children('img'),
        pos = cropper.position();

    measurements = {
        imageWidth     : img.width(),
        imageHeight    : img.height(),
        wrapperTop     : wrp.scrollTop,
        wrapperLeft    : wrp.scrollLeft,
        wrapperWidth   : wrapper.width(),
        wrapperHeight  : wrapper.height(),
        cropperTop     : pos.top + wrp.scrollTop,
        cropperLeft    : pos.left + wrp.scrollLeft,
        cropperWidth   : cropper.outerWidth(),
        cropperHeight  : cropper.outerHeight()
    };
}

function onTouch( gesture ) {
    measure();
    resizeDirection = getResizeDirection( gesture );
}

var onDragOrResize = joms._.throttle(function( gesture ) {
    resizeDirection ? onResize( gesture ) : onDrag( gesture );
}, IS_DESKTOP ? 10 : 100 );

function onDrag( gesture ) {
    var mea = measurements,
        top = gesture.deltaY,
        left = gesture.deltaX,
        value;

    // Respect horizontal boundaries.
    left = Math.min( left, mea.imageWidth - mea.cropperWidth - mea.cropperLeft );
    left = Math.max( left, 0 - mea.cropperLeft );

    // Respect vertical boundaries.
    top = Math.min( top, mea.imageHeight - mea.cropperHeight - mea.cropperTop );
    top = Math.max( top, 0 - mea.cropperTop );

    value = 'translate3d(' + left + 'px, ' + top + 'px, 0)';

    cropper.css({
        webkitTransform: value,
        mozTransform: value,
        transform: value
    });
}

function onResize( gesture ) {
    var dir = resizeDirection,
        mea = measurements,
        css = {};

    if ( dir.match( /n/ ) ) {
        css.top    = 'auto';
        css.bottom = mea.wrapperHeight - mea.cropperTop - mea.cropperHeight;
        css.height = mea.cropperHeight - gesture.deltaY;
    } else if ( dir.match( /s/ ) ) {
        css.bottom = 'auto';
        css.top    = mea.cropperTop;
        css.height = mea.cropperHeight + gesture.deltaY;
    }

    if ( dir.match( /e/ ) ) {
        css.right = 'auto';
        css.left  = mea.cropperLeft;
        css.width = mea.cropperWidth + gesture.deltaX;
    } else if ( dir.match( /w/ ) ) {
        css.left  = 'auto';
        css.right = mea.wrapperWidth - mea.cropperLeft - mea.cropperWidth;
        css.width = mea.cropperWidth - gesture.deltaX;
    }

    // Restrict cropper box to 1:1 ratio.
    css.width = css.height = Math.max( css.width || 0, css.height || 0, 64 );

    // Respect vertical boundaries.
    if ( dir.match( /n/ ) ) {
        css.height = Math.min( css.height, mea.wrapperHeight - css.bottom );
    } else if ( dir.match( /s/ ) ) {
        css.height = Math.min( css.height, mea.imageHeight - css.top );
    } else if ( cropper[0].style.top !== 'auto' ) {
        css.height = Math.min( css.height, mea.imageHeight - parseInt( cropper.css('top') ) );
    } else {
        css.height = Math.min( css.height, mea.wrapperHeight - parseInt( cropper.css('bottom') ) );
    }

    // Respect horizontal boundaries.
    if ( dir.match( /e/ ) ) {
        css.width = Math.min( css.width, mea.imageWidth - css.left );
    } else if ( dir.match( /w/ ) ) {
        css.width = Math.min( css.width, mea.wrapperWidth - css.right );
    } else if ( cropper[0].style.left !== 'auto' ) {
        css.width = Math.min( css.width, mea.imageWidth - parseInt( cropper.css('left') ) );
    } else {
        css.width = Math.min( css.width, mea.wrapperWidth - parseInt( cropper.css('right') ) );
    }

    // Restrict cropper box to 1:1 ratio.
    css.width = css.height = Math.min( css.width, css.height );

    cropper.css( css );
}

function onRelease() {
    var pos = cropper.position(),
        mea = measurements;

    cropper.css({
        top: Math.max( pos.top + mea.wrapperTop, 0 ),
        left: Math.max( pos.left + mea.wrapperLeft, 0 ),
        right: '',
        bottom: '',
        webkitTransform: '',
        mozTransform: '',
        transform: ''
    });

    measure();
}

function getPointerPosition( pageX, pageY ) {
    var offset = cropper.offset();

    return {
        top  : pageY - offset.top,
        left : pageX - offset.left
    };
}

function getResizeDirection( gesture ) {
    var treshhold = IS_DESKTOP ? 15 : 20,
        pos = getPointerPosition( gesture.center.pageX, gesture.center.pageY ),
        mea = measurements,
        dir = '';

    if ( pos.top < treshhold ) {
        dir += 'n';
    } else if ( pos.top > mea.cropperHeight - treshhold ) {
        dir += 's';
    }

    if ( pos.left < treshhold ) {
        dir += 'w';
    } else if ( pos.left > mea.cropperWidth - treshhold ) {
        dir += 'e';
    }

    return dir;
}

function enableDesktopEvents() {
    if ( IS_DESKTOP ) {
        cropper.on( 'mousemove.joms-cropper', onMouseMove );
    }
}

function disableDesktopEvents() {
    if ( IS_DESKTOP ) {
        cropper.off( 'mousemove.joms-cropper' );
    }
}

function onMouseMove( e ) {
    var parentOffset = $( e.target ).parent().offset(),
        relX = e.pageX - parentOffset.left,
        relY = e.pageY - parentOffset.top,
        treshhold = 15,
        cursor = '',
        m;

    measure();
    m = measurements;

    if ( relY < m.cropperTop - m.wrapperTop + treshhold ) cursor += 'n';
    else if ( relY > m.cropperTop - m.wrapperTop + m.cropperHeight - treshhold ) cursor += 's';

    if ( relX < m.cropperLeft - m.wrapperLeft + treshhold ) cursor += 'w';
    else if ( relX > m.cropperLeft - m.wrapperLeft + m.cropperWidth - treshhold ) cursor += 'e';

    cropper.css({ cursor: cursor ? cursor + '-resize' : '' });
}

return Cropper;

});

define("utils/crop", function(){});

define('utils/map',[ 'core' ], function() {

var API_KEY = window.joms_gmap_key,
    $ = jQuery,
    instance;

function GoogleMaps() {
    if ( ! instance ) {
        instance = this;
    }
}

GoogleMaps.prototype = {

    search: function( keyword ) {
        var that = this;

        return $.Deferred(function( defer ) {
            that.autocompleteService().then(function( service ) {
                service.getPlacePredictions({ input: keyword }, function( results, status ) {
                    if ( status === 'OK' ) {
                        defer.resolve( that.mapResult( results ) );
                    } else {
                        defer.reject( status );
                    }
                });
            });
        });
    },

    mapResult: function( results ) {
        var data = [];

        if ( _.isArray( results ) ) {
            _.each( results, function( item ) {
                var id = item.place_id,
                    nameParts = item.description.split( /,\s(.+)?/ ),
                    name = nameParts[0],
                    description = nameParts[1] || '';

                data.push({ id: id, name: name, description: description });
            });
        }

        return data;
    },

    render: function( elem, place ) {
        var $elem = $( elem ).show(),
            map = $elem.data( 'joms-map' ),
            marker = $elem.data( 'joms-map-marker' ),
            name = place.formatted_address || '',
            location, viewport;

        if ( place.geometry ) {
            location = place.geometry.location;
            viewport = place.geometry.viewport;
        } else {
            location = new google.maps.LatLng( place.latitude, place.longitude );
        }

        if ( ! map ) {
            $elem.data( 'joms-map', map = new google.maps.Map( elem, {
                center: location,
                zoom: 15,
                draggable: false,
                scrollwheel: false,
                disableDefaultUI: true
            }) );
        }

        if ( ! marker ) {
            $elem.data( 'joms-map-marker', marker = new google.maps.Marker({
                map: map,
                position: location,
                title: name
            }) );
        }

        map.setCenter( location );
        marker.setPosition( location );
        if ( viewport ) {
            map.fitBounds( viewport );
        } else {
            map.setZoom( 15 );
        }
    },

     loadAPI: function() {
        if(joms_maps_api == "openstreetmap"){
           return this.loadAPI_OPENSTREET();
        }else{
           return this.loadAPI_GOOGLE();
        }
    },

    loadAPI_OPENSTREET: function() {
        this.callback = false;
        var that = this;

        return $.Deferred(function( defer ) {
            var script, callback,script2,r;
            
            r = false;
            if(typeof openstreetmap == "undefined"){
                script2 = document.createElement( 'script' );
                script2.type = 'text/javascript';
                script2.src = joms.ASSETS_URL+'source/js/utils/openstreet.js';
            
                document.body.appendChild( script2 );
            }
            if ( window.L && window.L.map ) {
                if(that.callback !== false){
                    that.callback();
                }
               
                defer.resolve();
                return;
            }

            if ( that.loaded ) {
                 if(that.callback !== false){
                    that.callback();
                }
                 
                defer.resolve();
                return;
            }

            that.queue = that.queue || [];
            that.queue.push( defer );

            if ( that.loading ) {
                return;
            }
            
            
            that.loading = true;

            

            script = document.createElement( 'script' );
            script.type = 'text/javascript';
            script.src = 'https://unpkg.com/leaflet@1.3.4/dist/leaflet.js'

            script.onload = script.onreadystatechange = function() {
            
                if (!r && (!this.readyState || this.readyState == 'complete')) {
                    r = true;
                    that.callback();
                }
            };
            jQuery("<link>")
                .appendTo("head")
                .attr({
                    type: "text/css",
                    rel: "stylesheet",
                            href: "https://unpkg.com/leaflet@1.3.4/dist/leaflet.css"
            });
            that.callback = function() { 
                that.loaded = true;
              
                that.loading = false;
                while ( that.queue.length ) {
                    ( that.queue.shift() ).resolve();
                }
                that.callback = false;
            };

            
            document.body.appendChild( script );


        });
    },

    loadAPI_GOOGLE: function() {
        var that = this;

        return $.Deferred(function( defer ) {
            var script, callback;

            if ( window.google && window.google.maps && window.google.maps.places ) {
                defer.resolve();
                return;
            }

            if ( that.loaded ) {
                defer.resolve();
                return;
            }

            that.queue = that.queue || [];
            that.queue.push( defer );

            if ( that.loading ) {
                return;
            }

            that.loading = true;

            callback = _.uniqueId( 'jomsCallback' );

            script = document.createElement( 'script' );
            script.type = 'text/javascript';
            script.src = 'https://maps.googleapis.com/maps/api/js?libraries=places' +
                ( API_KEY ? ( '&key=' + API_KEY ) : '' ) + '&callback=' + callback;

            window[ callback ] = function() {
                that.loaded = true;
                that.loading = false;
                while ( that.queue.length ) {
                    ( that.queue.shift() ).resolve();
                }
                delete window[ callback ];
            };

            document.body.appendChild( script );
        });
    },

    autocompleteService: function() {
        var that = this;

        return $.Deferred(function( defer ) {
            that.loadAPI().then(function() {
                var cache = '_cacheAutocompleteService';

                that[ cache ] = that[ cache ] || new google.maps.places.AutocompleteService();
                defer.resolve( that[ cache ] );
            });
        });
    },

    placeService: function() {
        var that = this;

        return $.Deferred(function( defer ) {
            that.loadAPI().then(function() {
                var cache = '_cachePlaceService',
                    div = document.createElement( 'div' );

                document.body.appendChild( div );
                that[ cache ] = that[ cache ] || new google.maps.places.PlacesService( div );
                defer.resolve( that[ cache ] );
            });
        });
    },

    placeDetail: function( id ) {
        var that = this;

        return $.Deferred(function( defer ) {
            that.placeService().then(function( service ) {
                var cache = '_cachePlaceDetail';

                that[ cache ] = that[ cache ] || {};

                if ( that[ cache ][ id ] ) {
                    defer.resolve( that[ cache ][ id ] );
                } else {
                    service.getDetails({ placeId: id }, function( place, status ) {
                        if ( status === 'OK' ) {
                            that[ cache ][ id ] = place;
                            defer.resolve( place );
                        } else {
                            defer.reject( status );
                        }
                    });
                }
            });
        });
    }

};

// Export as `joms.util.map`.
joms.util || (joms.util = {});
joms.util.map = function( callback ) {
    var gmap;

    if ( typeof callback !== 'function' ) {
        return;
    }

    gmap = new GoogleMaps();
    gmap.loadAPI().done(function() {
        callback();
    });
};

joms.util.map.search = function( keyword ) {
    return $.Deferred(function( defer ) {
        var gmap = new GoogleMaps();
        gmap.search( keyword ).done(function( results ) {
            defer.resolve( results );
        });
    });
};

joms.util.map.detail = function( id ) {
    return $.Deferred(function( defer ) {
        var gmap = new GoogleMaps();
        gmap.placeDetail( id ).done(function( place ) {
            defer.resolve( place );
        });
    });
};

});

define('utils/popup',[ 'core', 'utils/map' ], function() {

function Popup() {}

Popup.prototype.prepare = function( callback ) {
    var mfp, that;

    if ( joms.jQuery.magnificPopup ) {
        mfp = this.showPopup();
        callback( mfp );
        return;
    }

    that = this;
    this.loadlib(function() {
        if ( joms.jQuery.magnificPopup ) {
            mfp = that.showPopup();
            callback( mfp );
        }
    });
};

Popup.prototype.showPopup = function() {
    joms.jQuery.magnificPopup.open({
        type: 'inline',
        items: { src: [] },
        tClose: window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON,
        tLoading: window.joms_lang.COM_COMMUNITY_POPUP_LOADING,
        callbacks: {
            beforeOpen: function() {
                joms.jQuery('html').css('overflow', 'hidden');
            },

            afterClose: function() {
                joms.jQuery('html').css('overflow', '');
            }
        }
    });

    var mfp = joms.jQuery.magnificPopup.instance,
        className = 'joms-popup__wrapper';

    if ( joms.mobile ) {
        className += ' joms-popup__mobile';
    }

    mfp.container.addClass( className );
    mfp.updateStatus('loading');

    mfp.container
        .off('click.joms-closepopup', '.joms-js--button-close')
        .on('click.joms-closepopup', '.joms-js--button-close', function() {
            mfp.close();
        });

    return mfp;
};

Popup.prototype.loadlib = function( callback ) {
    callback();
};

// Factory.
joms.util || (joms.util = {});
joms.util.popup = new Popup();

});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.dropdown = factory( root, $ );

    define('utils/dropdown',[ 'utils/popup' ], function() {
        return joms.util.dropdown;
    });

})( window, joms.jQuery, function( window, $, undefined ) {

var

// Event list.
evtClick = 'click.dropdown',
evtHide = 'collapse.dropdown',

// Selectors.
slrButton = '[data-ui-object=joms-dropdown-button]',
slrDropdown = '.joms-dropdown,.joms-popover',

// Element cache.
lastbtn,
lastdd,
popup,
elem,
doc;

function hide() {
    lastdd && lastdd.hide();
    lastbtn && btnRemoveClass( lastbtn );
}

function toggle( e ) {
    var btn, dd, $elm, type, size;

    e.stopPropagation();
    e.preventDefault();

    $elm = $(e.currentTarget);
    type = $elm.attr('data-type');

    btn = $( e.currentTarget );
    dd = btn.siblings( slrDropdown );

    if ( !dd.length ) {
        return;
    }

    if ( dd.is(':visible') ) {
        dd.hide();
        btnRemoveClass( btn );
        return;
    }

    size = joms.screenSize();
    
    if (size !== 'large') {
        $elm.siblings('.joms-dropdown').css('right', 0);
    }

    if ( size === 'large' || type === 'no-popup' ) {

        hide();
        dd.show();
        btnAddClass( btn );
        lastbtn = btn;
        lastdd = dd;
        executeAdditionalFn( dd );
        return;
    }

    joms.util.popup.prepare(function( mfp ) {
        popup = mfp;
        popup.items[0] = {
            type: 'inline',
            src: buildHtml( dd )
        };

        popup.updateItemHTML();
        executeAdditionalFn( dd );

        elem = popup.contentContainer;
        elem.on( 'click', 'li > a', function() {
            popup.close();
        });
    });
}

function btnAddClass( btn ) {
    var par = btn.parent();
    if ( par.hasClass('.joms-focus__button--options--desktop') ) {
        par.addClass('active');
    } else {
        btn.addClass('active');
    }
}

function btnRemoveClass( btn ) {
    var par = btn.parent();
    if ( par.hasClass('.joms-focus__button--options--desktop') ) {
        par.removeClass('active');
    } else {
        btn.removeClass('active');
    }
}

function buildHtml( dd ) {
    return '<div class="joms-popup joms-popup--dropdown">' + dd[0].outerHTML + '</div>';
}

function executeAdditionalFn( dd ) {
    var className = dd.attr('class') || '',
        offset;

    // fix popup goes out of browser's window
    dd.css('left', '');
    offset = dd.offset();
    if ( offset.left < 0 ) {
        dd.css('left', -25 );
    }

    if ( className.match('joms-popover--toolbar-general') ) {
        joms.api.notificationGeneral();
        return;
    }
    if ( className.match('joms-popover--toolbar-friendrequest') ) {
        joms.api.notificationFriend();
        return;
    }
    if ( className.match('joms-popover--toolbar-pm') ) {
        joms.api.notificationPm();
        return;
    }
}

// Change privacy dropdown.
var selectPrivacy = joms._.debounce(function( e ) {
    var className = e.currentTarget.className || '',
        ul, li, btn, hidden, span, svg;

    if ( className.indexOf('joms-dropdown--privacy') < 0 ) {
        return;
    }

    ul  = $( e.currentTarget );
    li  = $( e.target ).closest('li');

    if ( li.length ) {
        btn    = $('.joms-button--privacy').filter('[data-name="' + ul.data('name') + '"]');
        hidden = btn.children('[data-ui-object=joms-dropdown-value]');
        span   = btn.children('span');
        svg    = btn.find('use');

        hidden.val( li.data('value') );
        span.html( li.children('span').html() );
        svg.attr( 'xlink:href', window.location.href.replace(/#.*$/, '') + '#' + li.data('classname') );
    }

    hide();
    popup && popup.close();

}, 100 );

function initialize() {
    uninitialize();

    doc || (doc = $( document.body ));
    doc.on( evtClick, hide );
    doc.on( evtClick, slrButton, toggle );
    doc.on( evtHide, slrButton, hide );
    doc.on( evtClick, slrDropdown, function( e ) {
        var shouldPropagate = $( e.target ).data( 'propagate' ) || $( e.currentTarget ).data( 'propagate' );
        if ( ! shouldPropagate ) {
            e.stopPropagation();
        }
        selectPrivacy( e );
        
        var $elm = $(e.currentTarget);
        if(!$elm.hasClass("joms-popover--toolbar-search")){
            $elm.hide();
        }
        
    });
}

function uninitialize() {
    if ( doc ) {
        doc.off( evtClick );
        doc.off( evtClick, slrButton );
        doc.off( evtHide, slrButton );
        doc.off( evtClick, slrDropdown );
    }
}

// Exports.
return {
    start: initialize,
    stop: uninitialize
};

});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.hovercard = factory( root, $ );

})( window, joms.jQuery, function( window, $ ) {

var card, 
    showTimer = 0, 
    hideTimer = 0, 
    animateTimer = 0, 
    cache = {}, 
    mouseOver = false,
    current = 0;

var MOUSEOVER_EVENT = 'mouseover.joms-hcard',
    MOUSEOUT_EVENT = 'mouseout.joms-hcard',
    IMG_SELECTOR = 'img[data-author]';

function initialize() {
    // Only enable on desktop browser.
    if ( joms.mobile ) {
        return;
    }

    createCard();

    // Attach handler.
    $( document.body )
        .off( MOUSEOVER_EVENT ).off( MOUSEOUT_EVENT )
        .on( MOUSEOVER_EVENT, IMG_SELECTOR, onMouseOver )
        .on( MOUSEOUT_EVENT, IMG_SELECTOR, onMouseOut );
}

function onMouseOver( e ) {
    var img = $( e.target ),
        id = img.data('author');

    // Remove title attribute to avoid redundancy.
    img.removeAttr('title');

    resetCard();
    
    mouseOver = true;
    
    current = id;

    clearTimeout( hideTimer );

    if ( cache[id] ) {
        clearTimeout( showTimer );
        showTimer = setTimeout(function() {
            mouseOver && updateCard( cache[id], img );
        }, 100 );
        return;
    }

    joms.ajax({
        func: 'profile,ajaxFetchCard',
        data: [ id ],
        callback: function( json ) {
            if ( json.html ) {
                cache[id] = json.html;
                clearTimeout( showTimer );
                mouseOver && current == id && updateCard( json.html, img );
            }
        }
    });
}

function onMouseOut() {
    mouseOver = false;
    clearTimeout( showTimer );
    hideTimer = setTimeout(function() {
        card && resetCard();
    }, 100 );
}

function createCard() {
    card = $('<div>Loading...</div>');
    card.css({ 
        position: 'absolute', 
        zIndex: 2000, 
        display: 'none', 
        opacity:0, 
        transition: 'opacity 300ms, top 300ms' 
    });

    card.appendTo( document.body );

    card.on( MOUSEOVER_EVENT, function() { clearTimeout( hideTimer ); });
    card.on( MOUSEOUT_EVENT, onMouseOut );
}

function resetCard() {
    clearTimeout( animateTimer );
    card && card.css({
        display: 'none',
        opacity: 0
    });
}

function updateCard( html, img ) {
    var doc = $( document ),
        offset = img.offset(),
        width = img.width(),
        height = img.height(),
        maxWidth = window.innerWidth,
        maxHeight = window.innerHeight + doc.scrollTop(),
        cardHeight = 140,
        alignLeft = offset.left + 320 < maxWidth,
        top = offset.top + height + 10;

    card.html( html );

    cardHeight = card.height();

    if ( top + cardHeight > maxHeight ) {
        top = offset.top - cardHeight - 4;
    }

    card.css({
       top: top - 10,
       left: alignLeft ? offset.left : '',
       right: alignLeft ? '' : maxWidth - offset.left - width,
       display: 'block',
       opacity: 0
    });

    animateTimer = setTimeout(function() {
        card.css({
            top: top,
            opacity: 1
        })
    }, 300)
}

// Exports.
return {
    initialize: initialize
};

});

define("utils/hovercard", function(){});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.reaction = factory( root, $ );

})( window, joms.jQuery, function( window, $ ) {

var $card;
var showTimer = 0; 
var hideTimer = 0; 
var animateTimer = 0; 
var current = 0;
var holdTimer = 0;
    

var MOUSEOVER_EVENT = 'mouseover.joms-button--reaction';
var MOUSEOUT_EVENT = 'mouseout.joms-button--reaction';
var MOUSEDOWN_EVENT = 'mousedown.joms-button--reaction';
var MOUSEUP_EVENT = 'mouseup.joms-button--reaction';
var TOUCH_START = 'touchstart.joms-button--reaction';
var TOUCH_END = 'touchend.joms-button--reaction';
var TOUCH_MOVE = 'touchmove.joms-button--reaction';
var CONTEXTMENU = 'contextmenu.joms-button--reaction';
var REACT_BTN = 'a.joms-button--reaction';
var CARD = '.joms-reactions';

function initialize() {
    if (!joms.getData('enablereaction')) {
        return;
    }

    createCard();

    // Attach handler.
    if (joms.mobile) {
        $( document.body )
            .off( TOUCH_START ).off( TOUCH_END )
            .off( CONTEXTMENU ).off( TOUCH_MOVE )
            .on( TOUCH_START, REACT_BTN, onTouchStart )
            .on( TOUCH_END, REACT_BTN, onTouchEnd )
            .on( TOUCH_MOVE, onTouchMove )
            .on( CONTEXTMENU, REACT_BTN, onContextMenu );
    } else {
        $( document.body )
            .off( MOUSEOVER_EVENT ).off( MOUSEOUT_EVENT )
            .off( MOUSEDOWN_EVENT ).off( MOUSEUP_EVENT )
            .on( MOUSEOVER_EVENT, REACT_BTN, onMouseOver )
            .on( MOUSEOUT_EVENT, REACT_BTN, onMouseOut )
            .on( MOUSEDOWN_EVENT, REACT_BTN, onMouseDown )
            .on( MOUSEUP_EVENT, REACT_BTN, onMouseUp );

        $( document.body )
            .on( MOUSEOVER_EVENT, CARD, function() { clearTimeout( hideTimer ) })
            .on( MOUSEOUT_EVENT, CARD, onMouseOut );

    }
}

var isTapped = true;
var clickTimer;
var touchMoving = false;

function onTouchStart( e ) {
    clearTimeout( clickTimer );
    clearTimeout( holdTimer );

    var $btn = $(e.target);
    touchMoving = false;
    isTapped = true;
    $btn.attr('onclick', '');
    hideCard();

    $(document).off('click.hide-reaction-bar');
    holdTimer = setTimeout( function() {
        onHold( e );
        isTapped = false;
    }, 300);
}


function onTouchEnd( e ) {
    clearTimeout( holdTimer );
    clearTimeout( clickTimer );

    clickTimer = setTimeout(function() {
        $(document)
            .off('click.hide-reaction-bar')
            .one('click.hide-reaction-bar', hideCard);
    }, 300);

    if (isTapped) {
        onTap( e );
    }

    touchMoving = false;
    isTapped = true;
}

function onTouchMove( e ) {
    clearTimeout( holdTimer );
    clearTimeout( clickTimer );
    clearTimeout( hideTimer );

    isTapped = false;
    touchMoving = true;
    hideTimer = setTimeout( function() {
        hideCard();
    }, 300);
}

function onHold( e ) {
    if (!touchMoving) {
        updateCard( e );
    }
}

function onTap( e ) {
    var $elm = $(e.target),
        type = $elm.attr('data-type'),
        uid = $elm.attr('data-uid'),
        reactId = $elm.attr('data-reactid'),
        action = $elm.attr('data-action');

    if (type === 'stream') {
        if (action === 'react') {
            joms.view.stream.react( uid, reactId );
        } else {
            joms.view.stream.unreact( uid, reactId );
        }
    }

    if (type === 'comment') {
        if (action === 'react') {
            joms.view.comment.react( uid, reactId );
        } else {
            joms.view.comment.unreact( uid, reactId );
        }
    }

    if (type === 'page') {
        if (action === 'react') {
            joms.view.page.react( uid, reactId );
        } else {
            joms.view.page.unreact( uid, reactId );
        }
    }
}

function onContextMenu( e ) {
    e.preventDefault();
    e.stopPropagation();
    return false;
}

function onMouseOver( e ) {
    clearTimeout(hideTimer);
    clearTimeout(animateTimer);
    
    hideCard();
    
    showTimer = setTimeout( function() {
        updateCard( e );
    }, 500)
}

function onMouseOut(e) {
    clearTimeout(showTimer);

    hideTimer = setTimeout( function() {
        hideCard();
    }, 1000)
}

function onMouseDown(e) {
    if (e.which === 1) {
        clearTimeout(showTimer);
    }
}

function onMouseUp(e) {
    if (e.which === 1) {
        clearTimeout(showTimer);
        $card.hide();
    }
}

function hideCard() {
    clearTimeout( animateTimer );

    if ($card.is(':visible')) {
        $card.css({
            display: 'none',
            opacity: 0
        })
    }
}

function updateCard( e ) {
    clearTimeout( animateTimer );

    var $elm = $(e.target);
    var uid = $elm.attr('data-uid');
    var type = $elm.attr('data-type');

    $card.find('.joms-reactions__item').each( function(idx, item ) {
        var $item = $(item),
            reactId = $item.attr('data-react-id'),
            text = $item.attr('data-text'),
            attr = '';

        if (type === 'stream') {
            attr = 'joms.view.stream.react('+uid+', '+reactId+', \'onBar\')';
        }

        if (type === 'comment') {
            attr = 'joms.view.comment.react('+uid+', '+reactId+', \'onBar\')';
        }

        if (type === 'page') {
            attr = 'joms.view.page.react('+uid+', '+reactId+', \'onBar\')';
        }

        $item.attr('onclick', attr);

        $item.off('click.react').one('click.react', function() {
            hideCard();
        });
    })

    var screenWidth = $(document).width();
    var cardWidth = $card.outerWidth();
    var offset = $elm.offset();
    var height = $card.height();
    var top = offset.top - height - 10;
    var isRTL = $('html').attr('dir') === 'rtl';

    if (isRTL) {
        var left = offset.left - cardWidth + $elm.outerWidth() + 10;

        left = left < 0 ? 0 : left;
    } else {
        var left = offset.left - 10;
        var offsetRight = screenWidth - left;

        if (offsetRight < cardWidth) {
            left = left - (cardWidth - offsetRight);
            if ( left < 0 ) {
                left = $(document).width();
            }
        }
    }

    $card.css({
        display: 'block',
        top: top,
        left: left
    });

    animateTimer = setTimeout( function() {
        $card.css({
            opacity: 1,
            top: top - 5
        })

    }, 300);
}

function createCard() {
    $card = $(joms.getLayout('stream.reaction').trim());
    $card.hide().appendTo( document.body );
}

// Exports.
return {
    initialize: initialize
};

});

define("utils/reaction", function(){});

(function( root, factory ) {

    joms.util || (joms.util = {});
    joms.util.loadLib = factory( root );

})( window, function( window ) {

// @todo: Google Map library loader.
function loadGmap( fn ) {
    return fn();
}

// MediaElement.js library loader.
function loadMediaElement( fn ) {
    if ( window.MediaElement ) {
        return fn();
    }

    joms.$LAB.script( joms.ASSETS_URL + 'vendors/mediaelement/mediaelement-and-player.min.js' ).wait(function () {
        fn();
    });
}

// Flowplayer library loader.
function loadFlowplayer( fn ) {
    if ( window.flowplayer ) {
        return fn();
    }

    joms.$LAB.script( joms.ASSETS_URL + 'flowplayer/flowplayer-3.2.6.min.js' ).wait(function () {
        fn();
    });
}

// Plupload library loader.
function loadPlupload( fn ) {
    if ( window.plupload ) {
        return fn();
    }

    joms.$LAB.script( joms.ASSETS_URL + 'vendors/plupload.min.js' ).wait(function() {
        fn();
    });
}

// Trumbowyg rich editor loader.
function loadTrumbowyg( fn ) {
    if ( !joms.jQuery ) {
        return false;
    }

    if ( joms.jQuery.trumbowyg ) {
        return fn();
    }

    joms.loadCSS( joms.ASSETS_URL + 'vendors/trumbowyg/ui/trumbowyg.min.css' );
    joms.$LAB.script( joms.ASSETS_URL + 'vendors/trumbowyg/trumbowyg.min.js' ).wait()
        .script( joms.ASSETS_URL + 'vendors/trumbowyg/plugins/base64/trumbowyg.base64.min.js' ).wait()
        .script( joms.ASSETS_URL + 'vendors/trumbowyg/plugins/upload/trumbowyg.upload.js' ).wait(function() {
            fn();
    });
}

// Load dragsort library.
function loadDragsort( fn ) {
    if ( window.Sortable ) {
        return fn();
    }

    joms.$LAB.script( joms.ASSETS_URL + 'dragsort/jquery.dragsort-0.5.1.min.js' ).wait(function() {
        fn();
    });
}

function load( lib, fn ) {
    if ( lib === 'gmap' ) {
        return loadGmap( fn );
    }

    if ( lib === 'mediaelement' ) {
        return loadMediaElement( fn );
    }

    if ( lib === 'flowplayer' ) {
        return loadFlowplayer( fn );
    }

    if ( lib === 'plupload' ) {
        return loadPlupload( fn );
    }

    if ( lib === 'trumbowyg' ) {
        return loadTrumbowyg( fn );
    }

    if ( lib === 'dragsort' ) {
        return loadDragsort( fn );
    }

    fn();
}

// Exports.
return load;

});

define("utils/loadlib", function(){});

(function( root, $, _, factory ) {

    var LocationAutocomplete = factory( root, $, _ );

    define('utils/location-autocomplete',[ 'utils/map' ], function() {
        return LocationAutocomplete;
    });

    // make jQuery plugin
    $.fn.locationAutocomplete = function() {
        return this.each(function() {
            var key = 'location-autocomplete',
                $el = $( this );
            if ( ! $el.data( key ) ) {
                $el.data( key, new LocationAutocomplete( this ));
            }
        });
    };

    // detect input on page load
    $(function() {
        $('.joms-input--location').locationAutocomplete();
    });

})( window, joms.jQuery, window._, function( window, $, _ ) {

function LocationAutocomplete( el ) {
    this.$input = $( el );

    this.$wrapper = this.$input.parent('.joms-location__wrapper');
    this.$inputDesc = this.$input.siblings('.js-desc');
    this.$inputLat = this.$input.siblings('.js-lat');
    this.$inputLng = this.$input.siblings('.js-lng');
    this.$description = this.$input.siblings('.joms-location__description');
    this.$dropdown = this.$input.siblings('.joms-location__dropdown');
    this.$loading = this.$dropdown.find('.joms-location__loading');
    this.$result = this.$dropdown.find('.joms-location__result');
    this.$header = this.$dropdown.find('.joms-location__header');
    this.$map = this.$dropdown.find('.joms-location__map');
    this.$list = this.$dropdown.find('.joms-location__list');

    this.$input.on('focus.joms-location', $.proxy( this.focus, this ));
    this.$input.on('blur.joms-location', $.proxy( this.hide, this ));
    this.$input.on('input.joms-location', $.proxy( this.search, this ));
    this.$dropdown.on('mousedown', '.joms-location__list a', $.proxy( this.select, this ));
    this.$dropdown.on('click', '.joms-location__close', $.proxy( this.hide, this ));
    this._location_cache = {};
}

LocationAutocomplete.prototype.show = function() {
    this.$dropdown.show();
};

LocationAutocomplete.prototype.hide = function() {
    this.$dropdown && this.$dropdown.hide();
};

LocationAutocomplete.prototype.focus = function() {
    this._search_success && this.show();
};

LocationAutocomplete.prototype.search = function() {
    var query = $.trim( this.$input.val() );
    this.$wrapper.css('display', 'inline-block');
    this.$description.html( this.$description.data('tips') );
    if ( query ) {
        this.$result.hide();
        this.$loading.show();
        this.$dropdown.show();
        this._search( query );
    }
    setTimeout( $.proxy(function() {
        this.$wrapper.css('display', '');
    }, this ), 0 );
};

LocationAutocomplete.prototype._search = _.debounce(function( query ) {
    this._get_autocomplete_service().done(function( service ) {
        service.getPlacePredictions({ input: query }, $.proxy(function( results, status ) {
            this.$loading.hide();
            this.$result.show();
            if ( status === 'OK' ) {
                this._format_result( results ).done( $.proxy(function( html ) {
                    this.$list.html( html );
                    this._search_success = true;
                }, this ));
            }
        }, this ));
    });
}, 1000 );

LocationAutocomplete.prototype.select = function( e ) {
    var $item = $( e.currentTarget ),
        name = $item.find('.js-name').text(),
        desc = $item.find('.js-desc').text(),
        placeId = $item.data('place-id');

    e.preventDefault();
    e.stopPropagation();

    if ( placeId ) {
        this.$input.val( name );
        this.$inputDesc.val( desc );
        this.$description.html( desc );
        this._get_location_detail( placeId ).done(function( place ) {
            var loc = place.geometry.location;
            this.$inputLat.val( loc.lat() );
            this.$inputLng.val( loc.lng() );
            this._render_map( this.$map[0], place );
        });
    }
};

LocationAutocomplete.prototype._load_library = function() {
    return $.Deferred( $.proxy(function( defer ) {
        joms.util.map( $.proxy(function() {
            defer.resolveWith( this, [ window.google ]);
        }, this ));
    }, this ));
};

LocationAutocomplete.prototype._get_autocomplete_service = function() {
    return $.Deferred( $.proxy(function( defer ) {
        if ( this._autocomplete_service ) {
            defer.resolveWith( this, [ this._autocomplete_service ]);
        } else {
            this._load_library().done(function( google ) {
                this._autocomplete_service = new google.maps.places.AutocompleteService();
                defer.resolveWith( this, [ this._autocomplete_service ]);
            });
        }
    }, this ));
};

LocationAutocomplete.prototype._get_location_service = function() {
    return $.Deferred( $.proxy(function( defer ) {
        if ( this._location_service ) {
            defer.resolveWith( this, [ this._location_service ]);
        } else {
            this._load_library().done(function( google ) {
                var div = document.createElement('div');
                document.body.appendChild( div );
                this._location_service = new google.maps.places.PlacesService( div );
                defer.resolveWith( this, [ this._location_service ]);
            });
        }
    }, this ));
};

LocationAutocomplete.prototype._get_location_detail = function( id ) { 
    return $.Deferred( $.proxy(function( defer ) { 
        if ( this._location_cache && this._location_cache[ id ] ) {
            defer.resolveWith( this, [ this._location_cache[ id ] ]);
        } else {
            this._get_location_service().done(function( service ) {
                service.getDetails({ placeId: id }, $.proxy(function( place, status ) { 
                    if ( status === 'OK' ) {
                      //  this._location_cache || (this._location_cache = {});
                        this._location_cache[ id ] = place;
                        
                        defer.resolveWith( this, [ place ]);
                    } else {
                        defer.rejectWith( this, [ status ]);
                    }
                }, this ));
            });
        }
    }, this ));
};

LocationAutocomplete.prototype._render_map = function( div, place ) {
    var location = place.geometry.location,
        viewport = place.geometry.viewport,
        map, marker;

    div = $( div ).show();
    map = div.data('joms-map');
    marker = div.data('joms-map-marker');

    if ( !map ) {
        map = new window.google.maps.Map( div[0], {
            center: location,
            zoom: 15,
            draggable: false,
            scrollwheel: false,
            disableDefaultUI: true
        });
        div.data('joms-map', map );
    }

    if ( !marker ) {
        marker = new window.google.maps.Marker({
            position: location,
            map: map,
            title: 'You are here (more or less)'
        });
        div.data('joms-map-marker', marker );
    }

    map.setCenter( location );
    marker.setPosition( location );
    if ( viewport ) {
        map.fitBounds( viewport );
    } else {
        map.setZoom( 15 );
    }
};

LocationAutocomplete.prototype._format_result = function( results ) { 
    return $.Deferred( $.proxy(function( defer ) {
        var html = [],
            defers = [],
            template;

        template = [
            '<a href="javascript:" data-place-id="{place_id}">',
            '<span class="joms-location__name js-name">{name}</span>',
            '<span class="joms-location__desc js-desc">{description}</span>',
            '</a>'
        ].join('');

        _.each( results, function( item ) {  
           // defers.push( item);
          
            defers.push( this._get_location_detail( item.place_id ) );
        }, this );
        
        $.when.apply( $, defers ).then( $.proxy(function() {
            var html = _.map( arguments, function( place ) { 
                return template
                    .replace('{place_id}', place.place_id )
                    .replace('{name}', place.name )
                    .replace('{description}', place.formatted_address || '&nbsp;' );
            });

            defer.resolveWith( this, [ html.join('') ]);
        }, this ));
    }, this ));
};

return LocationAutocomplete;

});

(function( root, factory ) {

    joms.util || (joms.util = {});
    joms.util.tab = factory( root );

})( window, function() {

function start() {
    startTab();
    startLegacyTab();
}

function startTab() {
    var cssTabBar  = '.joms-tab__bar',
        cssTabItem = '.joms-tab__content',
        doc;

    function toggle( e ) {
        var el = joms.jQuery( e.currentTarget ),
            par = el.parent( cssTabBar ),
            target = el.attr('href'),
            selected, url, clicked;

        if ( el.find('.joms-tab__bar--button').length ) {
            clicked = joms.jQuery( e.target );
            if ( clicked.hasClass('add') || clicked[0].tagName.match(/use|svg/i) ) {
                e.preventDefault();
                e.stopPropagation();
                return false;
            }
        }

        if ( target.indexOf('#') !== 0 ) {
            return;
        }

        selected = el.closest( cssTabBar ).siblings( target );
        selected.show().siblings( cssTabItem ).hide();
        el.addClass('active').siblings('a').removeClass('active');

        url = par.data('id');
        if ( url ) {
            url = '#tab:' + url + '/' + el.data('id');
            window.location = url;
        }

        jQuery(window).trigger('tab:change');

        return false;
    }

    function initialize() {
        uninitialize();
        doc || (doc = joms.jQuery( document.body ));
        doc.on( 'click.joms-tab', cssTabBar + ' a', toggle );
    }

    function uninitialize() {
        doc && doc.off('click.joms-tab');
    }

    initialize();
}

function startLegacyTab() {
    joms.jQuery('.cTabsBar').on( 'click', 'li', function( e ) {
        var li = joms.jQuery( e.currentTarget ),
            wrapper = li.closest('.cTabsBar').siblings('.cTabsContentWrap'),
            index, tab;

        if ( !wrapper.length )
            return;

        index = li.prevAll().length;
        tab = wrapper.children('.cTabsContent').eq( index );

        if ( !tab.length )
            return;

        li.addClass('cTabCurrent').siblings('.cTabCurrent').removeClass('cTabCurrent');
        tab.siblings('.cTabsContent').hide();
        tab.show();
    });
}

// Exports.
return {
    start: start
};

});

define("utils/tab", function(){});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.tagging = factory( root, $ );

    // Also register as jQuery plugin.
    $.fn.jomsTagging = function( extraFetch ) {
        return this.each(function() {
            joms.util.tagging( this, extraFetch );
        });
    };

})( window, joms.jQuery, function( window, $ ) {

var

// Virtual keys.
VK_ENTER   = 13,
VK_ESC     = 27,
VK_KEYUP   = 38,
VK_KEYDOWN = 40,

// Namespace.
namespace = 'joms-tagging',

// CSS selectors.
cssTextareaS           = '.joms-textarea',
cssWrapper            = cssTextareaS + '__wrapper',
cssBeautifier         = cssTextareaS + '__beautifier',
cssHidden             = cssTextareaS + '__hidden',
cssDropdown           = cssTextareaS + '__tag-ct',
cssDropdownItem       = cssTextareaS + '__tag-item',
cssDropdownItemActive = cssDropdownItem + '--active',

// Regular expressions.
rTags           = /@\[\[(\d+):contact:([^\]]+)\]\]/g,
rTag            = /@\[\[(\d+):contact:([^\]]+)\]\]/,
rHashTag        = /(^|#|\s)(#[^#\s]+)/g,
rHashTagReplace = '$1<b>$2</b>',
rEol            = /\n/g,
rEolReplace     ='<br>';
var cssTextarea           = '.input.joms-textarea';
function Tagging( textarea, extraFetch ) {
    this.textarea = textarea;
    this.fetcher = extraFetch || false;
    this.$textarea = $( textarea );
    this.$textarea.data( 'initialValue', textarea.value );
    this.$textarea.data( namespace, this );
    this.$textarea.on( 'focus.' + namespace, $.proxy( this.initialize, this ) );
    this.contenteditable =  false ;
    this.contenteditable = this.$textarea.attr('contenteditable') == "true" ? true:false;
    return this;
}

Tagging.prototype.getValue = function() {

    var value = ''; 

   // value = this.textarea.value ;

   // return value;
    
    if (this.contenteditable) { 
        this.$textarea.children().each(function (idx, item) {

            //item = joms.util.emoji.replaceEmojiElementsToText($(item).clone(true));

            let text = item.textContent;
            if (value) {
                
                value += '\n' + text;
            } else {
                value = text
            }
        });
        if (this.$textarea.children().length == 0) {
            return this.$textarea.text();
        }

        if (!value) {
            value = $('.input.input-status.joms-textarea').text();
        } 

        return value;
    } else {
        value = this.textarea.value ;
        return value;
    }

}

Tagging.prototype.setValue = function(value) {
    
    if(this.contenteditable){ 
        //this.textarea.value =  value ;
        let html = "" ;
       
        var tags = this.tagsAdded  ;
        let linevalue  = "" ;
      
        if (tags.length ) {
           
            rMatch = '^';
            rReplace = '';
            start = 0;
    
            for ( i = 0; i < tags.length; i++ ) {
                tag = tags[i];
                rMatch += '([\\s\\S]{' + ( tag.start - start ) + '})([\\s\\S]{' + tag.length + '})';
                rReplace += '$' + ( i * 2 + 1 ) + '<span contenteditable="false">' + tag.name + '</span>';

                //rReplace += '$' + ( i * 2 + 1 ) + ' '.repeat(tag.length );
                start = tag.start + tag.length;
            }
    
            rMatch = new RegExp( rMatch );
          
            value = value.replace( rMatch, rReplace );
          
          
        }
        let lines = value.split("\n");
        for ( j = 0; j < lines.length; j++ ) { // ignore emojis here 
            linevalue =  lines[j] ;
            
           
          
            html += '<div>'+linevalue+'</div>';
        }
        if(html == "<div><br></div>"){
            retrun ;
        }
        if(html ==""){
            html = "<div><br></div>";
        }
       
        var re = /(?:\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffb|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb\udffc]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udffd]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5\udeeb\udeec\udef4-\udefa\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd71\udd73-\udd76\udd7a-\udda2\udda5-\uddaa\uddae-\uddb4\uddb7\uddba\uddbc-\uddca\uddd0\uddde-\uddff\ude70-\ude73\ude78-\ude7a\ude80-\ude82\ude90-\ude95]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g;
        // ignore emojis here fix colorful html too .

        var re = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g;
       
        html = html.replace(re,(matched, index, original ) => {
           return joms.util.emoji.getIconByUni(matched);
             
        });
        this.$textarea.html(html);
       
        
    }else{
        this.textarea.value = value;
    }

}

Tagging.prototype.setSelectionRange = function(start, end){  

    if(this.contenteditable){
        // move caret in div.
        //this.textarea.setSelectionRange(tag.start + tmp.length, tag.start + tmp.length);
        range = document.createRange();
        range.selectNodeContents(this.textarea);
        var selection = window.getSelection();
        
      //  if (range) {
            range.collapse(false);
            selection.removeAllRanges();
            selection.addRange(range);
      //  }
    }else{

        this.textarea.setSelectionRange(start,end);
    }
}

Tagging.prototype.initialize = function() {
    var value, tags, match, start, i;

    this.dropdownIsOpened     = false;
    this.dropdownIsClicked    = false;
    this.dropdownSelectedItem = false;

    this.domPrepare();
    // this.inputPrepare();

    this.tagsAdded = [];
    value = '';

    if ( this.$textarea.data('initialValue') ) {
        value = this.getValue();
        tags = value.match( rTags );
        this.setValue(value.replace( rTags, '$2' ));
        //this.textarea.value = value.replace( rTags, '$2' );
        if ( tags && tags.length ) {
            for ( i = 0; i < tags.length; i++ ) {
                match = tags[i].match( rTag );
                start = value.indexOf( tags[i] );
                value = value.replace( tags[i], match[2] );
                this.tagsAdded.push({
                    id     : match[1],
                    name   : match[2],
                    start  : start,
                    length : match[2].length
                });
            }
        }
    }

    this.beautifierUpdate( value, this.tagsAdded );
    this.hiddenUpdate( value, this.tagsAdded );
    this.inputAutogrow();

    this.$textarea
        .off( 'focus.'   + namespace ).on( 'focus.'   + namespace, $.proxy( this.inputOnKeydown, this ) )
        .off( 'click.'   + namespace ).on( 'click.'   + namespace, $.proxy( this.inputOnKeydown, this ) )
        .off( 'keydown.' + namespace ).on( 'keydown.' + namespace, $.proxy( this.inputOnKeydown, this ) )
        .off( 'keyup.'   + namespace ).on( 'keyup.'   + namespace, $.proxy( this.inputOnKeyup, this ) )
        .off( 'input.'   + namespace ).on( 'input.'   + namespace, $.proxy( this.inputOnInput, this ) )
        .off( 'blur.'    + namespace ).on( 'blur.'    + namespace, $.proxy( this.inputOnBlur, this ) );

    this.$dropdown
        .off(  'mouseenter.' + namespace ).on( 'mouseenter.' + namespace, cssDropdownItem, $.proxy( this.dropdownOnMouseEnter, this ) )
        .off(  'mousedown.'  + namespace ).on( 'mousedown.'  + namespace, cssDropdownItem, $.proxy( this.dropdownOnMouseDown, this ) )
        .off(  'mouseup.'    + namespace ).on( 'mouseup.'    + namespace, cssDropdownItem, $.proxy( this.dropdownOnMouseUp, this ) );

    this.textarea.joms_beautifier = this.$beautifier;
    this.textarea.joms_hidden = this.$hidden;


    var that = this;
    this.textarea.joms_reset = function() {
        that.inputReset();
    };

};

Tagging.prototype.domPrepare = function() {
    this.$wrapper = this.$textarea.parent( cssWrapper );
    if ( !this.$wrapper.length ) {
        this.$textarea.wrap( '<div class="' + cssWrapper.substr(1) + '"></div>' );
        this.$wrapper = this.$textarea.parent();
    }

    this.$beautifier = this.$wrapper.children( cssBeautifier );
    if ( !this.$beautifier.length ) {
        //let cssTextarea = ".joms-textarea";
        this.$beautifier = $( '<div class="' + ".joms-textarea".substr(1).replace("."," ") + ' ' + cssBeautifier.substr(1) + '"></div>' );
        this.$beautifier.prependTo( this.$wrapper );
    }

    this.$hidden = this.$wrapper.children( cssHidden );
    if ( !this.$hidden.length ) {
        this.$hidden = $( '<input type="hidden" class="' + cssHidden.substr(1) + '">' );
        this.$hidden.appendTo( this.$wrapper );
    }

    this.$dropdown = this.$wrapper.children( cssDropdown );
    if ( !this.$dropdown.length ) {
        this.$dropdown = $( '<div class="' + cssDropdown.substr(1) + '"></div>' );
        this.$dropdown.appendTo( this.$wrapper );
    }
};

Tagging.prototype.inputPrepare = function() {

};

// @todo
Tagging.prototype.inputReset = function() {
    if ( this.tagsAdded ) {
        this.tagsAdded = [];
    }

    // console.log('inputReset');
    // this.tagsAdded = [];
    // this.$hidden.val();
    // this.$textarea.val();
    // this.$beautifier.html( text );
    // this.$textarea.trigger( 'reset.' + namespace );
};

Tagging.prototype.inputAutogrow = function() {
    var prevHeight = +this.$textarea.data( namespace + '-prevHeight' ),
        height;

    this.$wrapper.css({ height: prevHeight });
    this.$textarea.css({ height: '' });

    height = this.textarea.scrollHeight + 2;
    this.$textarea.css({ height: height });
    if ( height !== +prevHeight ) {
        this.$textarea.data( namespace + '-prevHeight', height );
    }

    this.$wrapper.css({ height: '' });
};

Tagging.prototype.inputOnKeydown = function( e ) { 
    // Catch dropdown navigation buttons.
    if ( this.dropdownIsOpened ) {
        if ([ VK_ENTER, VK_ESC, VK_KEYUP, VK_KEYDOWN ].indexOf( e.keyCode ) >= 0 ) {
            return false;
        }
    }

    // Reset input to initial state if Esc button is pressed.
    if ( e.keyCode === VK_ESC ) {
        this.inputReset();
        return false;
    }

    this.prevSelStart = this.textarea.selectionStart;
    this.prevSelEnd = this.textarea.selectionEnd;
};

Tagging.prototype.inputOnKeyup = function( e ) {
    if ( this.dropdownIsOpened ) {
        if ( e.keyCode === VK_KEYUP || e.keyCode === VK_KEYDOWN ) {
            this.dropdownChangeItem( e.keyCode );
            return false;
        }

        if ( e.keyCode === VK_ENTER ) {
            this.dropdownSelectItem();
            return false;
        }

        if ( e.keyCode === VK_ESC ) {
            this.dropdownHide();
            return false;
        }
    }
};

Tagging.prototype.inputOnInput = function() { 
    var value = this.getValue(),
        delta, tag, length, name, tmp, index, rMatch, rReplace, shift, i, j;

       
    // Shift tags position.
    if ( this.tagsAdded ) {

        // if text is selected (selectionStart !== selectionEnd)
        if ( this.prevSelStart !== this.prevSelEnd ) {
            for ( i = 0; i < this.tagsAdded.length; i++ ) {
                tag = this.tagsAdded[i];
                length = tag.start + tag.length;
                if (
                    // Intersection.
                    ( this.prevSelStart > tag.start && this.prevSelStart < length ) ||
                    ( this.prevSelEnd > tag.start && this.prevSelEnd < length ) ||
                    // Enclose.
                    ( tag.start >= this.prevSelStart && length <= this.prevSelEnd )
                ) {
                    this.tagsAdded.splice( i--, 1 );
                }
            }
        }

        delta = this.textarea.selectionStart - this.prevSelStart - ( this.prevSelEnd - this.prevSelStart );
        
        for ( i = 0; i < this.tagsAdded.length; i++ ) {
            tag = this.tagsAdded[i];

            // Tag's start is in right of or exactly at cursor position.
            if ( tag.start >= this.prevSelStart ) {
                tag.start += delta;
            } else {
                length = tag.start + tag.length;

                // Tag's end is in left of cursor position.
                if ( length < this.prevSelStart ) {
                    // do nothing

                // Cursor position is inside a tag.
                } else if ( length > this.prevSelStart ) {
                    // Not backspace.
                    if ( delta > 0 ) {
                        this.tagsAdded.splice( i--, 1 );
                    // Backspace.
                    } else if ( delta < 0 ) {
                        name = value.substring( tag.start, this.prevSelStart + delta );
                        index = name.split(' ').length - 1;
                        name = tag.name.split(' ');
                        name.splice( index, 1 );
                        name = name.join(' ');

                        tmp = tag.name.split(' ');
                        tmp = tmp.slice( 0, index );
                        tmp = tmp.join(' ');

                        rMatch = new RegExp( '^([\\s\\S]{' + tag.start + '})([\\s\\S]{' + ( tag.length + delta ) + '})' );
                        rReplace = '$1' + name;
                       // this.textarea.value = this.textarea.value.replace( rMatch, rReplace );
                        this.setValue (this.getValue().replace( rMatch, rReplace ));
                       
                        
                       
                        //value = this.textarea.value;
                        value = this.getValue();
                        shift = tag.length - name.length;
                        tag.name = name;
                        tag.length = name.length;

                        for ( j = i + 1; j < this.tagsAdded.length; j++ ) {
                            this.tagsAdded[j].start -= shift;
                        }

                        if ( !name.length ) {
                            this.tagsAdded.splice( i--, 1 );
                        }

                        i = this.tagsAdded.length;

                        this.setValue (value);
                        this.setSelectionRange(tag.start + tmp.length, tag.start + tmp.length);

                    }

                // Tag's end is exactly at cursor position... and a backspace is pressed.
                } else if ( delta < 0 ) {
                    name = tag.name.split(' ');
                    name.pop();
                    name = name.join(' ');
                    
                    tmp = tag.name.split(' ');
                    tmp = tmp.slice( 0, index );
                    tmp = tmp.join(' ');

                    rMatch = new RegExp( '^([\\s\\S]{' + tag.start + '})([\\s\\S]{' + ( tag.length + delta ) + '})' );
                    rReplace = '$1' + name;
                    //this.textarea.value = this.textarea.value.replace( rMatch, rReplace );
                    this.setValue (this.getValue().replace( rMatch, rReplace ));


                    
                    
                    
                   // value = this.textarea.value;
                   value = this.getValue();
                    shift = tag.length - name.length;
                    tag.name = name;
                    tag.length = name.length;

                    for ( j = i + 1; j < this.tagsAdded.length; j++ ) {
                        this.tagsAdded[j].start -= shift;
                    }

                    if ( !name.length ) {
                        this.tagsAdded.splice( i--, 1 );
                    }

                    i = this.tagsAdded.length;
                    this.setValue(this.getValue());
                    this.setSelectionRange(tag.start + tmp.length, tag.start + tmp.length);
                    //this.setSelectionRange(tag.start + name.length, tag.start + name.length);
                }
            }
        }
    }

    this.inputAutogrow();
   // if(!this.contenteditable){
        this.beautifierUpdate( value, this.tagsAdded );
    //}
    
    this.hiddenUpdate( value, this.tagsAdded || [] );
    this.dropdownToggle();
};

Tagging.prototype.inputOnBlur = function() {
    this.dropdownIsClicked || this.dropdownHide();
};

Tagging.prototype.beautifierUpdate = joms._.debounce(function( value, tags ) {
    var rMatch, rReplace, start, tag, i;

    if ( tags.length ) {
        rMatch = '^';
        rReplace = '';
        start = 0;

        for ( i = 0; i < tags.length; i++ ) {
            tag = tags[i];
            rMatch += '([\\s\\S]{' + ( tag.start - start ) + '})([\\s\\S]{' + tag.length + '})';
            rReplace += '$' + ( i * 2 + 1 ) + '[b]' + tag.name + '[/b]&nbsp;&nbsp;';
            start = tag.start + tag.length;
        }

        rMatch = new RegExp( rMatch );
        value = value.replace( rMatch, rReplace );
    }

    value = value.replace( /</g, '&lt;' ).replace( />/g, '&gt;' );
    value = value.replace( /\[(\/?b)\]/g, '<$1>' );
    value = value.replace( rHashTag, rHashTagReplace );
    value = value.replace( rEol, rEolReplace );

    this.$beautifier.html( value );

}, joms.mobile ? 100 : 1 );

Tagging.prototype.hiddenUpdate = joms._.debounce(function( value, tags ) {
    var rMatch, rReplace, start, tag, i;

    if ( tags.length ) {
        rMatch = '^';
        rReplace = '';
        start = 0;

        for ( i = 0; i < tags.length; i++ ) {
            tag = tags[i];
            rMatch += '([\\s\\S]{' + ( tag.start - start ) + '})([\\s\\S]{' + tag.length + '})';
            rReplace += '$' + ( i * 2 + 1 ) + '@[[' + tag.id + ':contact:' + tag.name + ']]';
            start = tag.start + tag.length;
        }

        rMatch = new RegExp( rMatch );
        value = value.replace( rMatch, rReplace );
    }

    this.$hidden.val( value );

}, joms.mobile ? 500 : 50 );

Tagging.prototype.dropdownToggle = joms._.debounce(function() {
    var cpos   = this.textarea.selectionStart,
        substr = this.getValue().substr( 0, cpos ),
        index  = substr.lastIndexOf('@');
    
    if ( index < 0 || ++index >= cpos ) {
        this.dropdownHide();
        return;
    }

    substr = substr.substring( index, cpos );

    this.dropdownFetch( substr, joms._.bind( this.dropdownUpdate, this ) );

}, joms.mobile ? 1000 : 200 );

Tagging.prototype.dropdownFetch = function( keyword, callback, friends ) {
    var source  = ( window.joms_friends || [] ).concat( friends || [] ),
        added   = this.tagsAdded || [],
        matches = [],
        uniques = [],
        item, name, isAdded, that, i, j;

    // Map data-source.
    if ( source && source.length ) {
        keyword = keyword.toLowerCase();
        for ( i = 0; (i < source.length) && (matches.length < 20); i++ ) {
            item = source[i];
            name = ( item.name || '' ).toLowerCase();
            if ( name.indexOf( keyword ) >= 0 ) {
                isAdded = false;
                for ( j = 0; j < added.length; j++ ) {
                    if ( +item.id === +added[j].id ) {
                        isAdded = true;
                        break;
                    }
                }

                if ( !isAdded && uniques.indexOf( +item.id ) < 0 ) {
                    uniques.push( +item.id );
                    matches.push({
                        id: item.id,
                        name: item.name,
                        img: item.avatar
                    });
                }
            }
        }
    }

    matches.sort(function( a, b ) {
        if ( a.name < b.name ) return -1;
        if ( a.name > b.name ) return 1;
        return 0;
    });

    callback( matches );

    if ( typeof this.fetcher === 'function' && !friends ) {
        that = this;
        this.fetcher(function( friends ) {
            friends || (friends = []);
            that.dropdownFetch( keyword, joms._.bind( that.dropdownUpdate, that ), friends );
        });
    }
};

Tagging.prototype.dropdownUpdate = function( matches ) {
    var html, item, cname, i, length;

    if ( !( matches && matches.length ) ) {
        this.dropdownHide();
        return;
    }

    html = '';
    cname = cssDropdownItem.substr(1);
    length = Math.min( 10, matches.length );
    for ( i = 0; i < length; i++ ) {
        item = matches[ i ];
        html += '<a href="javascript:" class=' + cname + ' data-id="' + item.id +  '" data-name="' + item.name + '">';
        html += '<img src="' + item.img + '">' + item.name + '</a>';
    }

    this.dropdownShow( html );
};

Tagging.prototype.dropdownShow = function( html ) {
    this.$dropdown.html( html ).show();
    this.dropdownIsOpened = true;
    this.dropdownSelectedItem = false;
};

Tagging.prototype.dropdownHide = function() {
    this.$dropdown.hide();
    this.dropdownIsOpened = false;
};

Tagging.prototype.dropdownOnMouseEnter = function( e ) {
    this.dropdownChangeItem( e );
};

Tagging.prototype.dropdownOnMouseDown = function() {
    this.dropdownIsClicked = true;
};

Tagging.prototype.dropdownOnMouseUp = function( e ) {
    this.dropdownSelectItem( e );
    this.dropdownIsClicked = false;
    this.dropdownHide();
};

Tagging.prototype.dropdownChangeItem = function( e ) {
    var className = cssDropdownItemActive.substr(1),
        elem, sibs, next;

    if ( typeof e !== 'number' ) {
        elem = this.dropdownSelectedItem = $( e.target );
        sibs = elem.siblings( cssDropdownItemActive );
        elem.addClass( className );
        sibs.removeClass( className );
        return;
    }

    elem = this.$dropdown.children( cssDropdownItemActive );
    if ( !elem.length ) {
        elem = this.dropdownSelectedItem = this.$dropdown.children()[ e === VK_KEYUP ? 'last' : 'first' ]();
        elem.addClass( className );
        return;
    }

    next = elem[ e === VK_KEYUP ? 'prev' : 'next' ]();
    elem.removeClass( className );
    if ( next.length ) {
        this.dropdownSelectedItem = next;
        next.addClass( className );
    } else {
        this.dropdownSelectedItem = false;
    }
};

Tagging.prototype.dropdownSelectItem = function( e ) {
    var el       = e ? $( e.currentTarget ) : this.dropdownSelectedItem,
        id       = el.data('id'),
        name     = el.data('name'),
        cpos     = this.textarea.selectionStart,
        substr   = this.getValue().substr( 0, cpos ),
        index    = substr.lastIndexOf('@'),
        re, value;

    this.tagsAdded || (this.tagsAdded = []);
    this.tagsAdded.push({
        id     : id,
        name   : name,
        start  : index,
        length : name.length
    });

    re = new RegExp( '^([\\s\\S]{' + index + '})[\\s\\S]{' + ( cpos - index ) + '}' );
    value = this.getValue().replace( re, '$1' + name );

    this.setValue(value);
    
    this.inputAutogrow();
    //if(!this.contenteditable){
        this.beautifierUpdate( value, this.tagsAdded );
    //}
    
    this.hiddenUpdate( value, this.tagsAdded );
    this.dropdownHide();
    if(this.contenteditable){
        // move caret in div.
        //this.textarea.setSelectionRange(tag.start + tmp.length, tag.start + tmp.length);
        range = document.createRange();
        range.selectNodeContents(this.$textarea.children(":last").get(0));
        var selection = window.getSelection();
        
      //  if (range) {
            range.collapse(false);
            selection.removeAllRanges();
            selection.addRange(range);
      //  }
    }
};

// Public.
Tagging.prototype.clear = function() {
    this.tagsAdded = [];
    this.$textarea && this.$textarea.val('');
    this.$hidden && this.$hidden.val('');
    this.$beautifier && this.$beautifier.empty();
};

// Exports.
return function( textarea, extraFetch ) {
    var instance = $( textarea ).data( namespace );

    if ( instance ) {
        return instance;
    } else {
        return new Tagging( textarea, extraFetch );
    }
};

});

define("utils/tagging", function(){});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.validation = factory( root, $ );

})( window, joms.jQuery, function( window, $ ) {

var STATUS_VALID = 'valid',
    STATUS_INVALID = 'invalid';

function getErrorContainer( el ) {
    var wrapper, error;

    el = $( el );
    wrapper = el.parents('.joms-select--wrapper, .joms-textarea__wrapper, .joms-location__wrapper, .joms-checkbox--wrapper, .joms-radio--wrapper');
    error = wrapper.length ? wrapper.next('p.joms-help') : el.next('p.joms-help');

    if ( !error.length ) {
        error = $('<p class="joms-help" style="color:red">');
        error.hide().insertAfter( wrapper.length ? wrapper : el );
    }

    return error;
}

function addRequiredSign() {
    $('.joms-form__group').find('[required]')
        .add( $('.joms-form__group').find('[data-required]') )
        .each(function() {
            var el = $( this ),
                par = el.closest('.joms-form__group'),
                label = par.children().first();

            if ( !label.find('.joms-required').length ) {
                label.append(' <span class="joms-required">*</span>');
            }
        });
}

function addTextareaMaxChars() {
    var textarea = $('.joms-form__group').find('textarea[data-maxchars]');

    textarea.css('display', 'inline');
    textarea.wrap('<div style="position:relative"></div>');
    textarea.parent().append('<div class="joms-js--textarea-counter" style="position:absolute;bottom:2px;right:5px"></div>');
    textarea.each(function() {
        var $el = $( this );
        $el.siblings('.joms-js--textarea-counter').html( $el.data('maxchars') );
    });

    textarea.off('input').on( 'input', function() {
        var $el = $( this ),
            $counter = $el.siblings('.joms-js--textarea-counter'),
            maxChars = $el.data('maxchars') || 0,
            val;

        if ( maxChars ) {
            val = $el.val();
            if ( val.length > maxChars ) {
                val = val.substr( 0, maxChars );
                $el.val( val );
            }
            $counter.html( maxChars - val.length );
        }
    });
}

function addTextareaCharChecker() {
    var textarea = $('.joms-textarea__wrapper').find('.joms-textarea--limit'),
        errClass = 'joms-textarea--error',
        evtName = 'input.joms-textarea-limit';

    textarea.off( evtName ).on( evtName, function() {
        var $el = $( this ),
            $wrapper = $el.parent('.joms-textarea__wrapper'),
            $counter = $wrapper.find('.joms-textarea__limit > span > span'),
            minChars = $el.data('min-char'),
            maxChars = $el.data('max-char'),
            val = $el.val(),
            len = val.length;

        if ( !$wrapper.length ) {
            $wrapper = $el;
        }

        // normalize min/max characters bound
        minChars = isNaN( minChars ) ? 0 : Math.max( 0, +minChars );
        maxChars = isNaN( maxChars ) ? false : Math.max( minChars, +maxChars );

        if ( len < minChars ) {
            if ( !$wrapper.hasClass( errClass )) {
                $wrapper.addClass( errClass );
            }
        } else {
            if ( $wrapper.hasClass( errClass )) {
                $wrapper.removeClass( errClass );
            }
            if ( maxChars !== false && len > maxChars ) {
                val = val.substr( 0, maxChars );
                $el.val( val );
            }
        }

        $wrapper.css('display', 'inline-block');
        $counter.html( val.length );
        setTimeout(function() {
            $wrapper.css('display', '');
        }, 0 );
    });
}

function addValidationTrigger() {
    var evtSuffix = 'joms-validation',
        evtFocus = 'focus.' + evtSuffix,
        evtBlur = 'blur.' + evtSuffix,
        evtChange = 'change.' +evtSuffix,
        evtValidate = 'validate.' + evtSuffix,
        $form = $( '.joms-form__group' ),
        $fields = $form.find( '[required]' ).add( $form.find( '[data-required]' ) );

    $fields
        .off( evtChange ).on( evtChange, function( e, callback) {
            var $el = $(this);
            if ($el.attr('type') === 'checkbox' || $el.attr('type') === 'radio') {
                $el.trigger( evtValidate, callback );
            }
        })
        .off( evtFocus ).on( evtFocus, function() {
            var $el = $( this );
            $el.data( 'currentValue', $el.val() );
        })
        .off( evtBlur ).on( evtBlur, function( e, callback ) {
            var $el = $( this ),
                currentValue = $el.data( 'currentValue' );

            if ( typeof currentValue !== 'undefined' && $el.val() !== currentValue ) {
                $el.trigger( evtValidate, callback );
            }
        })
        .off( evtValidate ).on( evtValidate, function( e, callback ) {
            var $el = $( this ),
                $error = getErrorContainer( $el ),
                $label = $el.closest( '.joms-form__group' ).children().first(),
                name = $el.attr( 'name' ),
                type = ( $el.attr( 'type' ) || '' ).toLowerCase(),
                tagName = $el.prop( 'tagName' ).toLowerCase(),
                label = $.trim( $label.text().replace( /\*/g, '' ) ),
                val = $.trim( $el.val() ),
                validation;

            if ( typeof callback !== 'function' ) {
                callback = function() {
                    var verify = $el.data( 'verify' ),
                        $verify;

                    // Trigger validation if confirmation field is not empty.
                    if ( verify ) {
                        $verify = $( verify );
                        if ( $verify.length && $.trim( $verify.val() ) ) {
                            $verify.trigger( evtValidate );
                        }
                    }
                };
            }
            
            if ( type.match( /^(text|password)$/ ) || tagName.match( /^(select|textarea)$/ ) ) {
                if ( ! val ) {
                    setMessage( $el, [ name, label, 'COM_COMMUNITY_REGISTER_INVALID_VALUE' ] );
                    callback( STATUS_INVALID );
                } else {
                    validation = $el.data( 'validation' ) || '';
                    if ( validation === 'username' ) {
                        validateUsername( $el, val, callback, $el.data( 'current' ) || '' );
                    } else if ( validation === 'email' ) {
                        validateEmail( $el, val, callback );
                    } else if ( validation.match( /^email:/ ) ) {
                        validateEmailConfirmation( $el, val, callback );
                    } else if ( validation === 'password' ) {
                        validatePassword( $el, val, callback );
                     } else if ( validation.match( /^password:/ ) ) {
                        validatePasswordConfirmation( $el, val, callback );
                    } else {
                        $error.fadeOut();
                        callback( STATUS_VALID );
                    }
                }
            } else if (type.match( /^(radio|checkbox)$/ )) {
                var checked = $('[name="'+name+'"]:checked').length;
                if (!checked) {
                    setMessage( $el, [ name, label, 'COM_COMMUNITY_REGISTER_INVALID_VALUE' ] );
                    callback( STATUS_INVALID );
                } else {
                    $error.fadeOut();
                    callback( STATUS_VALID );
                }
                 
            }
        });
}

function validateUsername( el, username, callback, current ) {
    joms.ajax({
        func: 'register,ajaxCheckUserName',
        data: [ username, current ],
        callback: function( json ) {
            var error = getErrorContainer( el );
            if ( json.error ) {
                error.html( json.error );
                error.show();
                callback( STATUS_INVALID );
            } else {
                error.fadeOut();
                callback( STATUS_VALID );
            }
        }
    });
}

function validateEmail( el, email, callback ) {
    var reEmail = /^([*+!.&#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,10})$/i;

    if ( !reEmail.test( email ) ) {
        setMessage( el, [ '', '', 'COM_COMMUNITY_INVALID_EMAIL' ]);
        callback( STATUS_INVALID );
        return;
    }

    joms.ajax({
        func: 'register,ajaxCheckEmail',
        data: [ email ],
        callback: function( json ) {
            var error = getErrorContainer( el );
            if ( json.error ) {
                error.html( json.error );
                error.show();
                callback( STATUS_INVALID );
            } else {
                error.fadeOut();
                callback( STATUS_VALID );
            }
        }
    });
}

function validateEmailConfirmation( el, value, callback ) {
    var data, ref, error;

    data  = el.data('validation').split(':');
    ref   = $( data[1] );
    error = getErrorContainer( el );

    if ( !ref.length ) {
        error.fadeOut();
        callback( STATUS_VALID );
        return;
    }

    if ( value !== ref.val() ) {
        setMessage( el, [ '', '', 'COM_COMMUNITY_REGISTER_EMAIL_NOT_SAME' ]);
        callback( STATUS_INVALID );
        return;
    }

    error.fadeOut();
    callback( STATUS_VALID );
}

function validatePassword( el, value, callback ) {
    joms.ajax({
        func: 'register,ajaxCheckPass',
        data: [ value ],
        callback: function( json ) {
            var error = getErrorContainer( el );
            if ( json.error ) {
                error.html( json.error.replace(/\n/g, '<br/>') );
                error.show();
                callback( STATUS_INVALID );
            } else {
                error.fadeOut();
                callback( STATUS_VALID );
            }
        }
    });
}

function validatePasswordConfirmation( el, value, callback ) {
    var data, ref, error;

    data  = el.data('validation').split(':');
    ref   = $( data[1] );
    error = getErrorContainer( el );

    if ( !ref.length ) {
        error.fadeOut();
        callback( STATUS_VALID );
        return;
    }

    if ( value !== ref.val() ) {
        setMessage( el, [ '', '', 'COM_COMMUNITY_REGISTER_PASSWORD_NOT_SAME' ]);
        callback( STATUS_INVALID );
        return;
    }

    error.fadeOut();
    callback( STATUS_VALID );
}

function validate( $form, callback ) {
    var errors = 0,
        counter = 0,
        form, fields, fieldsCount, checkbox, radio;

    form = $( $form );
    fields = form.find('[required]').add( form.find('[data-required]') );
    fieldsCount = fields.length;

    if ( !fields.length ) {
        callback( errors );
    }

    fields.each(function() {
        var $el = $( this );
        $el.trigger( 'validate.joms-validation', function( result ) {
            if ( result === STATUS_INVALID ) {
                errors++;
            }
            if ( ++counter >= fieldsCount ) {
                callback( errors );
            }
        });
    });

    return false;
}

function setMessage( el, data ) {
    joms.ajax({
        func: 'register,ajaxSetMessage',
        data: data,
        callback: function( json ) {
            var error = getErrorContainer( el );
            error.html( json.message );
            error.show();
        }
    });
}

function start() {
    addRequiredSign();
    addTextareaMaxChars();
    addTextareaCharChecker();
    addValidationTrigger();
}

function stop() {

}

// Exports.
return {
    start: start,
    stop: stop,
    validate: validate
};

});

define("utils/validation", function(){});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.video = factory( root, $ );

    define('utils/video',[ 'utils/loadlib' ], function() {
        return joms.util.video;
    });

})( window, joms.jQuery, function( window, $ ) {

var player = {};

player._initMediaElement = function( id, type, data ) {
    if ( type === 'file' && data.fileType === 'flv' ) {
        joms.util.loadLib( 'flowplayer', function () {
            window.flowplayer( id, {
                    src: joms.ASSETS_URL + 'flowplayer/flowplayer-3.2.7.swf',
                    wmode: 'opaque'
                }, {
                    streamingServer: 'lighttpd',
                    playlist: [{
                        url: data.filePath,
                        autoPlay: false,
                        autoBuffering: true,
                        provider: 'lighttpd',
                        scaling: 'scale'
                    }],
                    plugins: {
                        lighttpd: {
                            url: joms.ASSETS_URL + 'flowplayer/flowplayer.pseudostreaming-3.2.7.swf',
                            queryString: window.escape('?target=${start}')
                        },
                        controls: {
                            url: joms.ASSETS_URL + 'flowplayer/flowplayer.controls-3.2.5.swf'
                        }
                    }

                }
            );
        });

    } else {
        joms.util.loadLib( 'mediaelement', function () {
            var $elem = $( '#' + id ).css({ visibility: '' });

            var options = {
                iPadUseNativeControls: type === 'file' ? true : false,
                iPhoneUseNativeControls: type === 'file' ? true : false,
                success: function( me, el, pl ) {
                    setTimeout(function() {
                        pl.disableControls();
                        pl.enableControls();
                    }, 1 );

                    if ( me.pluginType === 'flash' ) {
                        me.addEventListener( 'canplay', function() {
                            me.play();
                        }, false );
                    } else if ( joms.mobile && ( ( me.pluginType === 'youtube' ) || ( me.pluginType === 'vimeo' ) ) ) {
                        // do nothing
                    } else {
                        me.play();
                    }
                }
            };

            // #638 Play video on firefox is not as good as on chrome.
            if ( type === 'youtube' ) {
                options.defaultVideoWidth = $elem.width();
                options.defaultVideoHeight = $elem.height();
            }

            $elem.mediaelementplayer( options );
        });
    }
}

player.responsivePlayer = function( $ct, data) {
    var $media = $ct.find('.joms-media__thumbnail'),
        $player = $('<div class="joms-media__responsive-player"></div>'),
        maxHeight = 500,
        ctWidth,
        height, width, ratio;

    ctWidth = $ct.width();

    ratio = ( data.width / data.height ) || 16/9;

    height = ctWidth / ratio;

    if (height > maxHeight) {
        height = maxHeight;
        width = height * ratio;
    } else {
        width = ctWidth;
    }

    $player.css({
        width: width,
        height: height,
        margin: '0 auto'
    });

    $ct.addClass('being-played');
    $player.html('<iframe src="'+ data.src +'" width="'+width+'" height="'+height+'" '+ data.options +'"></iframe>');
    
    $media.html($player);
}

player._play_file = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        $video, id, fileType;

    id = joms._.uniqueId('joms-js--video-');
    fileType = data.path.match(/\.flv$/) ? 'flv' : 'mp4';

    if ( fileType === 'flv' ) {
        $video = $(
            '<div class="flowplayer" id="' + id + '" style="width:100%;height:281px;"></div>');
    } else {
        $video = $(
            '<video id="' + id + '" width="480" height="360" preload="metadata" autoplay="autoplay">' +
            '<source src="' + data.path + '" type="video/mp4" />' +
            '</video>'
        );
    }

    $ct.addClass('being-played');
    $player.html( $video );
    player._initMediaElement( id, data.type, {
        fileType: fileType,
        filePath: data.path
    });
}

player._play_youtube = function( $ct, data ) {
    window.joms_videoplayer_native ?  player._play_YoutubeNativePlayer( $ct, data ) : player._play_YoutubeJomsPlayer( $ct, data );
}

player._play_YoutubeJomsPlayer = function( $ct, data ) {
    var id, path, $video, $player;

    id = joms._.uniqueId('joms-js--video-');

    path = data.path;
    if (joms.ios) {
        path = path.replace(/#.*$/, '');
        path = path.replace(/&t=\d+/, '');
    }

    $video = $(
        '<video id="' + id + '" controls="control" preload="none">' +
        '<source src="' + path + '" type="video/youtube" />' +
        '</video>'
    );

    $video.css({ visibility: 'hidden' });

    $player = $ct.find('.joms-media__thumbnail');
    if ( ! $player.length ) {
        $player = $ct;
    }

    $ct.addClass('being-played');
    $player.html( $video );
    player._initMediaElement( id, data.type );
}

player._play_YoutubeNativePlayer = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail');
    if ( ! $player.length ) {
        $player = $ct;
    }

    $ct.addClass('being-played joms-media--video-native');
    $player.html(
        '<iframe src="//www.youtube.com/embed/' + data.id +
        '?autoplay=1&rel=0" width="500" height="281" frameborder="0" allowfullscreen allow="autoplay; encrypted-media"></iframe>'
    );
}

player._play_vimeo = function( $ct, data ) {
    data.src = '//player.vimeo.com/video/' + data.id + '?autoplay=1';
    data.options = 'frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen';
    
    player.responsivePlayer( $ct, data );
}

player._play_myspace = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'https://media.myspace.com/play/video/'+data.id;
    
    $ct.addClass('being-played');
    $player.html('<iframe src="'+path+'" frameborder="0" width="500" height="281" AllowFullScreen></iframe>');
}

player._play_blip = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = '//blip.tv/play/' + data.id;

    $ct.addClass('being-played');
    $player.html( '<iframe src="' + path + '" width="500" height="281" frameborder="0" allowfullscreen></iframe>' );
}

player._play_dailymotion = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail');

    $ct.addClass('being-played');
    $player.html( '<iframe frameborder="0" width="500" height="270" src="//www.dailymotion.com/embed/video/'+data.id+'?autoPlay=1" allowfullscreen="" allow="autoplay"></iframe>' );
}


player._play_liveleak = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = '//www.liveleak.com/ll_embed?i=' + data.id;

    $ct.addClass('being-played');
    $player.html( '<iframe src="' + path + '" width="500" height="281" frameborder="0" allowfullscreen></iframe>' );
}

player._play_yahoo = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = data.path;

    path = path.replace('www.yahoo.com/movies/v', 'movies.yahoo.com/video');
    path = path + '?format=embed&player_autoplay=true';

    $ct.addClass('being-played');
    $player.html( '<iframe src="' + path + '" width="500" height="281" frameborder="0" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" allowtransparency="true"></iframe>' );
}

player._play_metacafe = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'http://www.metacafe.com/embed/' + data.id + '/';

    $ct.addClass('being-played');
    $player.html( '<iframe src="' + path + '" width="500" height="281" frameborder="0" allowfullscreen></iframe>' );
}

player._play_funnyordie = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = '//www.funnyordie.com/embed/' + data.id + '/';

    $ct.addClass('being-played');
    $player.html( '<iframe src="'+path+'" width="500" height="300" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>' );
}

player._play_collegehumor = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'http://www.collegehumor.com/e/' + data.id;

    $ct.addClass('being-played');
    $player.html( '<iframe src="'+path+'" width="500" height="281" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>' );
    
}

player._play_flickr = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'https://www.flickr.com/photos/'+data.id;

    $ct.addClass('being-played');
    $player.html('<a data-flickr-embed="true" href="'+path+'" ><img src="https://farm2.staticflickr.com/1729/42437754852_936a2d5e9f_b.jpg" width="1024" height="576" alt="flickr"></a><script async src="https://embedr.flickr.com/assets/client-code.js" charset="utf-8"></script>');
}

player._play_dotsub = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'https://dotsub.com/media/'+data.id+'/embed/';
    
    $ct.addClass('being-played');
    $player.html('<iframe src="'+path+'" frameborder="0" width="500" height="281" AllowFullScreen></iframe>');
}

player._play_gloria = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'https://gloria.tv/video/'+data.id+'/embed/';
    
    $ct.addClass('being-played');
    $player.html('<iframe src="'+path+'" frameborder="0" width="500" height="265" AllowFullScreen></iframe>');
}

player._play_sapo = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'http://rd.videos.sapo.pt/playhtml?file=http://rd.videos.sapo.pt/'+data.id+'/mov/1';
    
    $ct.addClass('being-played');
    $player.html('<iframe src="'+path+'" frameborder="0" width="500" height="265" AllowFullScreen></iframe>');
}

player._play_facebook = function( $ct, data ) {
    console.log(data);
    data.src = 'https://www.facebook.com/plugins/video.php?href='+encodeURIComponent('https://www.facebook.com/watch/?v='+data.id) +'&show_text=false';
    data.options = 'style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"';
    
    player.responsivePlayer( $ct, data );
}

player._play_soundcloud = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = 'https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/'+data.id+'&color=%23ff5500&auto_play=true&hide_related=false&show_comments=false&show_user=false&show_reposts=false&show_teaser=true&visual=true';

    $ct.addClass('being-played');
    $player.html('<iframe src="'+path+'" width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" ></iframe>');
}

player._play_godtube = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        splitted = data.id.split('|'),
        videoID = splitted[0],
        type = splitted[1],
        embedID = splitted[2];

    if (type === 'godtube') {
        $ct.addClass('being-played');
        var path = 'https://www.godtube.com/embed/watch/'+splitted[0].toLowerCase()+'/?w=728&h=408&ap=true&sl=true&title=true&dp=true';
        $player.html('<iframe width="500" height="250" aspectratio="16:9" frameborder="0" scrolling="no" src="'+path+'"></iframe>"');
    } 
    else if (type === 'youtube') {
        $ct.addClass('being-played');
        var xdata = {
            id: embedID,
            path: 'https://www.youtube.com/watch?v='+embedID,
            type: type
        }
        player._play_youtube( $ct, xdata );
    }
    else {
        player._play_other( $ct, data );
    }

}

player._play_rutube = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path = '//rutube.ru/play/embed/'+data.id;

    $ct.addClass('being-played');
    $player.html('<iframe src="'+path+'" frameborder="0" width="500" height="265" AllowFullScreen></iframe>');
}

player._play_ku6 = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail');

    $ct.addClass('being-played');
    $player.html('<iframe src="'+data.id+'" frameborder="0" width="500" height="265" AllowFullScreen></iframe>');
}

player._play_twitch = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        videoid = data.id.split('|')[0],
        type = data.id.split('|')[1],
        path;
    
    $ct.addClass('being-played');
    if (type === 'clip') {
        path ='https://clips.twitch.tv/embed?autoplay=true&clip=' + videoid + '&parent=' + location.hostname;
    } else {
        path ='https://player.twitch.tv/?autoplay=true&video=' + videoid + '&parent=' + location.hostname;
    }
    
    $player.html('<iframe src="'+path+'" frameborder="0" allowfullscreen="true" scrolling="no" height="265" width="500"></iframe>');
}

player._play_flic = function( $ct, data ) {
    player._play_flickr( $ct, data );
}

player._play_vbox7 = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail'),
        path ='https://www.vbox7.com/emb/external.php?vid=' + data.id + '&autoplay=1';

    $ct.addClass('being-played');
    $player.html('<iframe src="'+path+'" frameborder="0" allowtransparency="true" webkitallowfullscreen mozallowfullscreen allowfullscreen height="265" width="500"></iframe>');
}

player._play_veoh = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail');
    $ct.addClass('being-played');
    $player.html([
        '<object width="500" height="280">',
			'<embed src="http://www.veoh.com/swf/webplayer/WebPlayer.swf?version=AFrontend.5.7.0.1509&permalinkId=' + data.id + '&player=videodetailsembedded&videoAutoPlay=1&id=anonymous"',
				'type="application/x-shockwave-flash"',
				'allowscriptaccess="always"',
				'allowfullscreen="true"',
				'width="500"',
				'height="280"',
				'>',
			'</embed>',
		'</object>'
    ].join(''));
}

player._play_videa = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail');
    $ct.addClass('being-played');
    $player.html('<iframe width="500" height="280" src="//videa.hu/player?v='+data.id+'&autoplay=1" allowfullscreen="allowfullscreen" webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" frameborder="0"></iframe>');
}

player._play_youku = function( $ct, data ) {
    var $player = $ct.find('.joms-media__thumbnail');
    $ct.addClass('being-played');
    $player.html('<iframe height=280 width=500 src="http://player.youku.com/embed/' + data.id + '" frameborder=0 allowfullscreen></iframe>');
}

player._play_other = function( $ct, data ) {
    window.open( data.path );
}
    
var play = function ( $ct, data ) {
    var fn = '_play_' + data.type;
    if ( typeof player[fn] === 'function') {
        player[fn]( $ct, data);
    } else {
        player._play_other( $ct, data );
    }
}

// Exports.
return {
    play: play
};

});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.wysiwyg = factory( root, $ );

    define('utils/wysiwyg',[ 'utils/loadlib' ], function() {
        return joms.util.wysiwyg;
    });

})( window, joms.jQuery, function( window, $ ) {

function start() {
    var editor = $('textarea').filter('[data-wysiwyg=trumbowyg]');

    if ( !editor.length ) {
        return;
    }

    joms.util.loadLib( 'trumbowyg', function() {
        trumbowygTranslate();

        // Check RTL.
        var isRTL = false;
        if ( $('html').attr('dir') === 'rtl' ) {
            isRTL = true;
        }

        // TODO: Set upload path.
        $.extend( jQuery.trumbowyg, {
            upload: {
                serverPath: joms.BASE_URL + 'index.php?option=com_community&view=photos&task=ajaxPreviewComment&isEditor=1'
            }
        });

        editor.each(function() {
            var btns, config, instance;

            btns = $( this ).data( 'btns' );
            btns = btns || 'viewHTML,|,bold,italic,underline,|,unorderedList,orderedList,|,link,image';
            btns = btns.split(',');

            config = {
                btnsDef: {
                    image: {
                        dropdown: [ 'insertImage', 'upload' ],
                        ico: 'insertImage'
                    }
                },
                btns: btns,
                fullscreenable: false,
                mobile: false,
                tablet: false,
                removeformatPasted: true,
                autogrow: true
            };

            if ( isRTL ) {
                config.dir = 'rtl';
            }

            instance = $( this ).trumbowyg( config )
                .on('tbwblur', function() {
                    var t = $( this ).data('trumbowyg');
                    t.syncCode();
                })
                .data('trumbowyg');

            // Override modal button render.
            instance.buildModalBtn = trumbowygBuildModalBtn;

            // Override modal input.
            instance._openModalInsert = instance.openModalInsert;
            instance.openModalInsert = function( title, fields, cmd ) {
                var modBox = instance._openModalInsert( title, fields, cmd );

                modBox.find('label').each(function() {
                    var label = $( this ),
                        input = label.find('input'),
                        name = input.attr('name'),
                        type = input.attr('type'),
                        html;

                    if ([ 'url', 'file', 'title', 'text', 'target', 'alt' ].indexOf( name ) >= 0 ) {
                        html  = '<div class="joms-form__group" style="text-align:left">';
                        html += '<span style="width:90px;text-align:center">' + label.find('.trumbowyg-input-infos').text() + '</span>';
                        if ( type === 'file' ) {
                            html += '<input name="' + name + '" class="joms-input" value="' + ( input.val() || '' ) + '" type="file"';
                            html += ' accept="image/png,image/jpeg,image/gif,image/bmp">';
                        } else {
                            html += '<input name="' + name + '" class="joms-input" value="' + ( input.val() || '' ) + '" type="' + ( type || 'text' ) + '">';
                        }
                        html += '</div>';
                        label.replaceWith( $(html) );
                    }
                });

                return modBox;
            };
        });
    });
}

function trumbowygBuildModalBtn( name, modal ) {
    return $('<button/>', {
        'class': 'joms-button--full-small joms-button--' + ( name === 'submit' ? 'primary' : 'neutral' ),
        'type': name,
        'text': this.lang[name] || name
    }).appendTo( modal.find('form') );
}

function trumbowygTranslate() {
    $.extend( jQuery.trumbowyg.langs.en, window.joms_lang.wysiwyg || {});
}

// Exports.
return {
    start: start
};

});

define('utils/dialog',[ 'core' ], function() {
	var getScrollbarWidth = function getScrollbarWidth() {
		var outer = document.createElement("div");

		outer.style.visibility = "hidden";
		outer.style.width = "100px";
		outer.style.msOverflowStyle = "scrollbar";

		document.body.appendChild(outer);

		var widthNoScroll = outer.offsetWidth;

		outer.style.overflow = "scroll";

		var inner = document.createElement("div");

		inner.style.width = "100%";
		outer.appendChild(inner);        

		var widthWithScroll = inner.offsetWidth;

		outer.parentNode.removeChild(outer);

		return widthNoScroll - widthWithScroll;
	}

	var $ = joms.jQuery;
	var $body = $(document.body);
	var cachedStyle = '';
	var scrollbarWidth = getScrollbarWidth();
	var Dialog = function Dialog() {};

	Dialog.prototype.prepare = function prepare( callback ) {
		var modal = this.show();
		callback = callback || function() {};
		callback( modal )
	}

	Dialog.prototype.show = function show() {
		var modal = new window.tingle.modal({
			closeMethods: ['overlay', 'button', 'escape'],
			closeLabel: window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON,
			cssClass: ['joms-dialog'],
			onClose: function() {
				var $content = joms.jQuery(modal.getContent());
				var $container = $content.parents('.tingle-modal');
				
				$container.remove();
			},

			beforeClose: function() {
				$body.attr('style', cachedStyle ? cachedStyle : '');
				return true;
			},

			beforeOpen: function() {
				cachedStyle = $body.attr('style');
				var paddingRight = parseInt($body.css('paddingRight'));
				$body.css('padding-right', scrollbarWidth + paddingRight);
			}
		});

		var loader = '<div style="width: 100%; text-align: center;"><img src="' + joms.BASE_URL + 'components/com_community/assets/ajax-loader.gif" /></div>';
		modal.setContent(loader);

		modal.open();

		return modal;
	}

	
	joms.util || (joms.util = {});
	joms.util.dialog = new Dialog();
});
define('utils/emoji',[ 'core' ], function() {
	
	var $ = joms.jQuery;
	
    var JomsEmoji = function JomsEmoji() {  this.renderBoard() };
   
  
        var image = document.createElement('img');
        image.src = joms.ASSETS_URL+"emoticons/jomsoical-emoji.png"; 

        image.onerror = function(){ //debugger;
        sheet.insertRule(".joms-emo2 { color: #ffffff !important;}", 0);
    }

  
    

	JomsEmoji.prototype.showBoard = function showBoard( elm ) {
       
		this.$editor = {};
        
        if ($(elm).parent().parent().data('editor') != "") {
            this.$editor = $(elm).parent().parent().data('editor')
        }
       // $('#joms-emoticon-js__board').remove();
        var $body = $('body'),
            $board = $('#joms-emoticon-js__board'),
            $icon = $(elm).parents('.joms-icon--emoticon'),
            offset = $(elm).offset(),
            offsetTop = 0,
            emoticons = joms.getData('joms_emo'),
            isRTL = $('html').attr('dir') === 'rtl';

        if (!$board.length) {
            html = this.renderBoard();
           
            $body.append(html);
            
           
            $board = $('#joms-emoticon-js__board');
           // $board.hide();
            
        }
        this.$board =  $board;
        let that = this;
        $board.on('input', 'input', function (e) { that.filterEmoji(this); });

        $board.on('click', '.joms-board-emoji-anchor', function (e) {
            e.stopImmediatePropagation();
            e.stopPropagation();
            e.preventDefault();
             let category = $(this).attr("data-category");
           
            let categoryPostition = $("#" + category).parent().get(0).offsetTop;

            let scroll = $board.find("#joms-emoji-js__scroll");

            let scrollPosition = scroll.get(0).offsetTop;
            scroll.get(0).scrollTop = categoryPostition - 113;
            
          

            return false;

        });

        var spacer = isRTL ? 15 : ($board.outerWidth() - 30);
        var above = {
            display: 'block',
            top: (offset.top - $board.outerHeight()) + 'px',
            left: (offset.left - spacer) + 'px',
            position: 'absolute'
        }

        var animate_above = {
            opacity: '1',
            top: (offset.top - $board.outerHeight() - 10) + 'px'
        }

        var below = {
            display: 'block',
            top: (offset.top + 20) + 'px',
            left: (offset.left - spacer) + 'px',
            position: 'absolute'
        }

        var animate_below = {
            opacity: '1',
            top: (offset.top + 24) + 'px'
        }

        offsetTop = offset.top - $(window).scrollTop();
        var pos, ani, positionClass;

        if (offsetTop > ($board.outerHeight() + 30)) {
            pos = above;
            ani = animate_above;
            positionClass = 'joms-board--above'
        } else {
            pos = below;
            ani = animate_below;
            positionClass = 'joms-board--below';
        }
        
        $board.is(':hidden') && setTimeout(function () {
            $('.joms-icon--active').removeClass('joms-icon--active');
            $icon.addClass('joms-icon--active');
            $board.css(pos);
            $board.addClass(positionClass)
            setTimeout(function () {
                $board.css(ani);
            }, 100);

            $(document).on('click', function (e) {
                if($(e.target).hasClass("joms-emoji-search")){
                    e.stopImmediatePropagation();
                    e.preventDefault();
                    e.stopPropagation();
                    return false;
                }
                $board.css({
                    display: 'none',
                    opacity: '0'
                });

                $board.removeClass('joms-board--above joms-board--below');
            });
        }, 100);
	}

	JomsEmoji.prototype.renderBoard = function renderBoard() {
		  let board = $('<div id="joms-emoticon-js__board" class=" joms-emoticon__board joms-emoticon-js__board joms-emoji-js__board"></div>');
        board.width("240px").css('Zindex',"1103").css('background','#ffffff none repeat scroll 0% 0%');
        let bar = $('<div class="joms-emoji-js__bar"></div>');
        board.append(bar);
        _.each(emoji_categories_SVGs, function (svg, name) {
            let span = $('<span class="joms-board-emoji-anchor" data-category ="' + name + '" ></span>');
            span.append(svg);
            span.css("cursor","pointer");
            bar.append(span);
        });



        let search = $('<div class="joms-emoji-js__search"><input class="joms-emoji-search"  type="text" placeholder="'+window.joms_lang.COM_COMMUNITY_EMOJI_SEARCH+'"></div>');



        board.append(search);

        let scroll = $('<div id="joms-emoji-js__scroll" class="joms-emoji-js__scroll"></div>');

        scroll.height(300).css('overflow', "hidden");//.css('overflowY', 'scroll');

        let filterpanel = $('<div class="joms-emoji-js_category" id="joms-emoji-js_filter" ></div>');
        let label = $('<div class="joms-emoji-js_category-label" id="filter" ><span >'+window.joms_lang.COM_COMMUNITY_EMOJI_SEARCH_RESULTS+'</span></div>');

        filterpanel.append(label);

        filterpanel.hide();
        scroll.append(filterpanel);

        let recentPanel = $('<div class="joms-emoji-js_category clearfix" id="joms-emoji-js_recent" ></div>');

        label = $('<div class="joms-emoji-js_category-label" id="recent" ><span >'+window.joms_lang.COM_COMMUNITY_EMOJI_RECENTLY_USED+'</span></div>');

        recentPanel.append(label);
        recentPanel.width("250px");
        recentPanel.height("auto");
        let recentUsed = this.getRecentused();

        if (recentUsed != null && Array.isArray(recentUsed))   {

            _.each(recentUsed, function (emojiId) {

                let code = "";
                if (emoji_json.emojis[emojiId]["b"].includes("-")) {

                    let res = "";
                    if(typeof emoji_json.emojis[emojiId]["c"] !== "undefined"){
                        res = emoji_json.emojis[emojiId]["c"].split("-");
                   }else{
                       res = emoji_json.emojis[emojiId]["b"].split("-");
                   }
                    _.each(res, function (c) {

                        code += "&#x" + c + ";";

                    })


                } else {
                    code = "&#x" + emoji_json.emojis[emojiId]["b"] + ";"
                }
                let recentEmoji = $('<span  onclick="joms.util.emoji.insert(this)" data-shortCode="'+emojiId+'" data-code=":' + emojiId + ':" data-uniCode="' + code + '" title="' + emoji_json.emojis[emojiId]["b"] + '"  class="joms-emoji-js_emoji  joms-content1-emo2 joms-emo2 joms-emo2-'+emojiId+'">' + code + '</span>');



                recentPanel.append(recentEmoji);

            })

        }

        scroll.append(recentPanel);

        board.append(scroll);

        let emojis = emoji_json.categories;

        _.each(emojis, function (emoji_detail) {

            let category = $('<div class="joms-emoji-js_category clearfix"></div>');
            let label = $('<div class="joms-emoji-js_category-label" id="' + emoji_detail.id + '" ><span >' + window.joms_lang[emoji_detail.name] + '</span></div>');
            category.append(label);
            category.width("250px");
            category.height("auto");
            _.each(emoji_detail.emojis, function (emojiId) {
                let code = "";
                if (emoji_json.emojis[emojiId]["b"].includes("-")) {

                    let res = "";
                    if(typeof emoji_json.emojis[emojiId]["c"] !== "undefined"){
                        res = emoji_json.emojis[emojiId]["c"].split("-");
                   }else{
                       res = emoji_json.emojis[emojiId]["b"].split("-");
                   }
                    _.each(res, function (c) {

                        code += "&#x" + c + ";";

                    })


                } else {
                    code = "&#x" + emoji_json.emojis[emojiId]["b"] + ";"
                }
                let emoji = $('<span  onclick="joms.util.emoji.insert(this)" data-shortCode="'+emojiId+'" data-code=":' + emojiId + ':" data-uniCode="' + code + '" title="' + emoji_json.emojis[emojiId]["b"] + '"  class="joms-emoji-js_emoji  joms-content1-emo2 joms-emo2 joms-emo2-'+emojiId+'">' + code + '</span>');

                emoji_json.emojis[emojiId].element = emoji;
                category.append(emoji);

            })
            scroll.append(category);
        })

        return board.get(0).outerHTML;

	}

	JomsEmoji.prototype.getRecentused = function getRecentused() {
		let emojis = localStorage.getItem("joms.emojis");
        if(emojis == null || typeof emojis == "undefined" ){
            return false;
        }
       return JSON.parse(emojis);
		
	}
	
	JomsEmoji.prototype.addToRecent = function addToRecent(code) {
		let emojis = this.getRecentused();

        if (!Array.isArray(emojis)) {
            emojis = [];
        }
        let found = emojis.filter(emoji => emoji == code);
        if(found.length == 00){
            emojis.push(code);
        }
        
        
        localStorage.setItem("joms.emojis", JSON.stringify(emojis));
		
	}
	
	JomsEmoji.prototype.insert = function insert(elm) {
		let code = $(elm).attr('data-unicode'); 
        let shortCode = $(elm).attr('data-shortCode');
        

        this.addToRecent(shortCode);

        this.$editor.smileyCallback(code);
    }
    
    JomsEmoji.prototype.filterEmoji = function filterEmoji(input) {
        if (input.value != "") {
            let emojis_found = {};
            _.each(emoji_json.emojis, function (emoji,emojikey) { 
                if(typeof emoji["j"] != "undefined" && Object.values(emoji["j"]).filter(tag => tag.includes(input.value)).length){
                    emojis_found[emojikey] = emoji;
                }
            })
            
            $(".joms-emoji-js_category").hide();


            $("#joms-emoji-js_filter").show();

            let filterpanel = $("#joms-emoji-js_filter");
            filterpanel.children('span').remove();

            _.each(emojis_found, function (emoji,emojikey) {

                let code = "";
                if (emoji["b"].includes("-")) {

                   
                    let res = "";
                    if(typeof emoji["c"] !== "undefined"){
                        res =  emoji["c"].split("-");
                   }else{
                       res = emoji["b"].split("-");
                   }

                    _.each(res, function (c) {

                        code += "&#x" + c + ";";

                    })


                } else {
                    code = "&#x" + emoji["b"] + ";"
                }
                let emojiSpan = '<span  onclick="joms.util.emoji.insert(this)" data-shortCode="'+emojikey+'" data-code=":' + emojikey + ':" data-uniCode="' + code + '" title="' + emoji["b"] + '"  class="joms-emoji-js_emoji joms-content1-emo2 joms-emo2 joms-emo2-'+emojikey+'">' + code + '</span>';

              


                filterpanel.append(emojiSpan);

            })



        } else {
            $(".joms-emoji-js_category").show();
            $("#joms-emoji-js_filter").hide();

        }
    }
    
    JomsEmoji.prototype.length = function(code){
        code = code.substring(1,code.length-1);
        let emojiId = code; 
        let unicode = ""
        if (emoji_json.emojis[emojiId]["b"].includes("-")) {

            let res = "";
            if(typeof emoji_json.emojis[emojiId]["c"] !== "undefined"){
                res = emoji_json.emojis[emojiId]["c"].split("-");
           }else{
               res = emoji_json.emojis[emojiId]["b"].split("-");
           }
            _.each(res, function (c) {

                unicode += "&#x" + c + ";";

            })


        } else {
            unicode = "&#x" + emoji_json.emojis[emojiId]["b"] + ";"
        }

        return $('<i>'+unicode +'</i>').text().length ;

      
    }

    JomsEmoji.prototype.getUnicode = function(code){
        code = code.substring(1,code.length-1);
        let emojiId = code; 
        let unicode = ""
        if (emoji_json.emojis[emojiId]["b"].includes("-")) {

            let res = "";
            if(typeof emoji_json.emojis[emojiId]["c"] !== "undefined"){
                res = emoji_json.emojis[emojiId]["c"].split("-");
           }else{
               res = emoji_json.emojis[emojiId]["b"].split("-");
           }
            _.each(res, function (c) {

                unicode += "&#x" + c + ";";

            })


        } else {
            unicode = "&#x" + emoji_json.emojis[emojiId]["b"] + ";"
        }

        return unicode;

      
    }

    

    JomsEmoji.prototype.toCodePoint =   function (unicodeSurrogates, sep) {
        var
          r = [],
          c = 0,
          p = 0,
          i = 0;
        while (i < unicodeSurrogates.length) {
          c = unicodeSurrogates.charCodeAt(i++);
          if (p) {
            r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));
            p = 0;
          } else if (0xD800 <= c && c <= 0xDBFF) {
            p = c;
          } else {
            r.push(c.toString(16));
          }
        }
        return r.join(sep || '-');
      }

      JomsEmoji.prototype.stringFromCodePoint = function () {
        var MAX_SIZE = 0x4000
        var codeUnits = []
        var highSurrogate
        var lowSurrogate
        var index = -1
        var length = arguments.length
        if (!length) {
          return ''
        }
        var result = ''
        while (++index < length) {
          var codePoint = Number(arguments[index])
          if (
            !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
            codePoint < 0 || // not a valid Unicode code point
            codePoint > 0x10ffff || // not a valid Unicode code point
            Math.floor(codePoint) != codePoint // not an integer
          ) {
            throw RangeError('Invalid code point: ' + codePoint)
          }
          if (codePoint <= 0xffff) {
            // BMP code point
            codeUnits.push(codePoint)
          } else {
            // Astral code point; split in surrogate halves
            // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
            codePoint -= 0x10000
            highSurrogate = (codePoint >> 10) + 0xd800
            lowSurrogate = codePoint % 0x400 + 0xdc00
            codeUnits.push(highSurrogate, lowSurrogate)
          }
          if (index + 1 === length || codeUnits.length > MAX_SIZE) {
            result += String.fromCharCode.apply(null, codeUnits)
            codeUnits.length = 0
          }
        }
        return result
      }
    

    JomsEmoji.prototype.getIcon = function(code){
        code = code.substring(1,code.length-1);
        let emojiId = code; 
        let emojicode = "";
        if (emoji_json.emojis[emojiId]["b"].includes("-")) {
            let res ;
            if(typeof emoji_json.emojis[emojiId]["c"] !== "undefined"){
                 res = emoji_json.emojis[emojiId]["c"].split("-");
            }else{
                res = emoji_json.emojis[emojiId]["b"].split("-");
            }
           
            _.each(res, function (c) {

                emojicode += "&#x" + c + ";";

            })


        } else {
            emojicode = "&#x" + emoji_json.emojis[emojiId]["b"] + ";"
        }
        return '<i contenteditable="false" shortCode="'+emojiId+'" class="joms-content1-emo2 joms-emo2 joms-emo2-'+emojiId+'">'+emojicode +'</i>'
       

      
    }

    JomsEmoji.prototype.getIconByUni = function(unicode){

        let codepoint = this.toCodePoint(unicode).toUpperCase();
        let codes =emoji_json.emojis ;
        let found = false ;
        
        $.each(codes,function(idx,code){
             if(code["b"]== codepoint){
                found = idx ;
                return false;
             }
             if(code["c"]== codepoint){
                found = idx ;
                return false;
             }
        });
        if(found !== false){
           return this.getIcon(":"+found+":");
        }
       
       return false;
    }

    JomsEmoji.prototype.getCodeByUni = function(unicode){

        let codepoint = this.toCodePoint(unicode).toUpperCase();
        let codes =emoji_json.emojis ;
        let found = false ;
        
        $.each(codes,function(idx,code){
             if(code["b"]== codepoint){
                found = idx ;
                return false;
             }
             if(code["c"]== codepoint){
                found = idx ;
                return false;
             }
        });
        if(found !== false){
           return ":"+found+":";
        }
       
       return false;
    }

    JomsEmoji.prototype.replaceEmojiElementsToText = function( element ) {

        let icons = element.find("i");

        if(icons.length){

            _.each(icons,function(icon){
                let code = $(icon).attr('shortCode');
                icon.replaceWith(":"+code+":");

            });

        }

       
        return element ;
        

    },
    
    JomsEmoji.prototype.getEmoticon = function( str ) {
        var emoticons = joms.getData('joms_emo'),
            codes = [],
            names = [];

        _.each( emoticons, function(emo, name) {
            codes.unshift(emo);
            names.unshift(name);
        }) 

        _.each( codes, function( code, idx ) {
            _.each( code, function(c) {
                let code = "";
                let emojiId =  names[idx] ;
                if (emoji_json.emojis[emojiId]["b"].includes("-")) {

                    
                    let res = "";
                    if(typeof emoji_json.emojis[emojiId]["c"] !== "undefined"){
                        res = emoji_json.emojis[emojiId]["c"].split("-");
                   }else{
                       res = emoji_json.emojis[emojiId]["b"].split("-");
                   }
                    _.each(res, function (c) {

                        code += "&#x" + c + ";";

                    })


                } else {
                    code = "&#x" + emoji_json.emojis[emojiId]["b"] + ";"
                }
                str = str.replace(c, '<i contenteditable="false" class="joms-content1-emo2 joms-emo2 joms-emo2-'+names[idx]+'">'+code +'</i><br>'  );
            });
        });

        return str;
    }
	
	joms.util || (joms.util = {});
	joms.util.emoji = new JomsEmoji();
});


var sheet = (function() {
    // Create the <style> tag
    var style = document.createElement("style");

    // Add a media (and/or media query) here if you'd like!
    // style.setAttribute("media", "screen")
    // style.setAttribute("media", "only screen and (max-width : 1024px)")

    // WebKit hack :(
    style.appendChild(document.createTextNode(""));

    // Add the <style> element to the page
    document.head.appendChild(style);

    return style.sheet;
})();





var emoji_categories_SVGs = {

    recent: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"/><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/></svg>",
   
    people: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/><path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"/></svg>",
    
    nature: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"/><path d=\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"/></svg>",

    foods: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"/></svg>",

    activity: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"/></svg>",
    
    places: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"/><path d=\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"/></svg>",

    objects: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"/><path d=\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"/></svg>",

    symbols: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"/></svg>",
    
    flags:"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"></path></svg>"

    /*custom: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><g transform=\"translate(2.000000, 1.000000)\"><rect id=\"Rectangle\" x=\"8\" y=\"0\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect></g></svg>"*/
  
      
    
    
  
   
    
  };
var emoji_json = 
{
    "compressed": true,
    "categories": [
        {
            "id": "people",
            "name": "COM_COMMUNITY_EMOJI_SMILEYS_AND_PEOPLE",
            "emojis": [
                "grinning",
                "grin",
                "joy",
                "rolling_on_the_floor_laughing",
                "smiley",
                "smile",
                "sweat_smile",
                "laughing",
                "wink",
                "blush",
                "yum",
                "sunglasses",
                "heart_eyes",
                "kissing_heart",
                "kissing",
                "kissing_smiling_eyes",
                "kissing_closed_eyes",
                "relaxed",
                "slightly_smiling_face",
                "hugging_face",
                "star-struck",
                "thinking_face",
                "face_with_raised_eyebrow",
                "neutral_face",
                "expressionless",
                "no_mouth",
                "face_with_rolling_eyes",
                "smirk",
                "persevere",
                "disappointed_relieved",
                "open_mouth",
                "zipper_mouth_face",
                "hushed",
                "sleepy",
                "tired_face",
                "sleeping",
                "relieved",
                "stuck_out_tongue",
                "stuck_out_tongue_winking_eye",
                "stuck_out_tongue_closed_eyes",
                "drooling_face",
                "unamused",
                "sweat",
                "pensive",
                "confused",
                "upside_down_face",
                "money_mouth_face",
                "astonished",
                "white_frowning_face",
                "slightly_frowning_face",
                "confounded",
                "disappointed",
                "worried",
                "triumph",
                "cry",
                "sob",
                "frowning",
                "anguished",
                "fearful",
                "weary",
                "exploding_head",
                "grimacing",
                "cold_sweat",
                "scream",
                "flushed",
                "zany_face",
                "dizzy_face",
                "rage",
                "angry",
                "face_with_symbols_on_mouth",
                "mask",
                "face_with_thermometer",
                "face_with_head_bandage",
                "nauseated_face",
                "face_vomiting",
                "sneezing_face",
                "innocent",
                "face_with_cowboy_hat",
                "clown_face",
                "lying_face",
                "shushing_face",
                "face_with_hand_over_mouth",
                "face_with_monocle",
                "nerd_face",
                "smiling_imp",
                "imp",
                "japanese_ogre",
                "japanese_goblin",
                "skull",
                "skull_and_crossbones",
                "ghost",
                "alien",
                "space_invader",
                "robot_face",
                "hankey",
                "smiley_cat",
                "smile_cat",
                "joy_cat",
                "heart_eyes_cat",
                "smirk_cat",
                "kissing_cat",
                "scream_cat",
                "crying_cat_face",
                "pouting_cat",
                "see_no_evil",
                "hear_no_evil",
                "speak_no_evil",
                "baby",
                "child",
                "boy",
                "girl",
                "adult",
                "man",
                "woman",
                "older_adult",
                "older_man",
                "older_woman",
                "male-doctor",
                "female-doctor",
                "male-student",
                "female-student",
                "male-teacher",
                "female-teacher",
                "male-judge",
                "female-judge",
                "male-farmer",
                "female-farmer",
                "male-cook",
                "female-cook",
                "male-mechanic",
                "female-mechanic",
                "male-factory-worker",
                "female-factory-worker",
                "male-office-worker",
                "female-office-worker",
                "male-scientist",
                "female-scientist",
                "male-technologist",
                "female-technologist",
                "male-singer",
                "female-singer",
                "male-artist",
                "female-artist",
                "male-pilot",
                "female-pilot",
                "male-astronaut",
                "female-astronaut",
                "male-firefighter",
                "female-firefighter",
                "cop",
                "male-police-officer",
                "female-police-officer",
                "sleuth_or_spy",
                "male-detective",
                "female-detective",
                "guardsman",
                "male-guard",
                "female-guard",
                "construction_worker",
                "male-construction-worker",
                "female-construction-worker",
                "prince",
                "princess",
                "man_with_turban",
                "man-wearing-turban",
                "woman-wearing-turban",
                "man_with_gua_pi_mao",
                "person_with_headscarf",
                "bearded_person",
                "person_with_blond_hair",
                "blond-haired-man",
                "blond-haired-woman",
                "man_in_tuxedo",
                "bride_with_veil",
                "pregnant_woman",
                "breast-feeding",
                "angel",
                "santa",
                "mrs_claus",
                "mage",
                "female_mage",
                "male_mage",
                "fairy",
                "female_fairy",
                "male_fairy",
                "vampire",
                "female_vampire",
                "male_vampire",
                "merperson",
                "mermaid",
                "merman",
                "elf",
                "female_elf",
                "male_elf",
                "genie",
                "female_genie",
                "male_genie",
                "zombie",
                "female_zombie",
                "male_zombie",
                "person_frowning",
                "man-frowning",
                "woman-frowning",
                "person_with_pouting_face",
                "man-pouting",
                "woman-pouting",
                "no_good",
                "man-gesturing-no",
                "woman-gesturing-no",
                "ok_woman",
                "man-gesturing-ok",
                "woman-gesturing-ok",
                "information_desk_person",
                "man-tipping-hand",
                "woman-tipping-hand",
                "raising_hand",
                "man-raising-hand",
                "woman-raising-hand",
                "bow",
                "man-bowing",
                "woman-bowing",
                "face_palm",
                "man-facepalming",
                "woman-facepalming",
                "shrug",
                "man-shrugging",
                "woman-shrugging",
                "massage",
                "man-getting-massage",
                "woman-getting-massage",
                "haircut",
                "man-getting-haircut",
                "woman-getting-haircut",
                "walking",
                "man-walking",
                "woman-walking",
                "runner",
                "man-running",
                "woman-running",
                "dancer",
                "man_dancing",
                "dancers",
                "man-with-bunny-ears-partying",
                "woman-with-bunny-ears-partying",
                "person_in_steamy_room",
                "woman_in_steamy_room",
                "man_in_steamy_room",
                "person_climbing",
                "woman_climbing",
                "man_climbing",
                "person_in_lotus_position",
                "woman_in_lotus_position",
                "man_in_lotus_position",
                "bath",
                "sleeping_accommodation",
                "man_in_business_suit_levitating",
                "speaking_head_in_silhouette",
                "bust_in_silhouette",
                "busts_in_silhouette",
                "fencer",
                "horse_racing",
                "skier",
                "snowboarder",
                "golfer",
                "man-golfing",
                "woman-golfing",
                "surfer",
                "man-surfing",
                "woman-surfing",
                "rowboat",
                "man-rowing-boat",
                "woman-rowing-boat",
                "swimmer",
                "man-swimming",
                "woman-swimming",
                "person_with_ball",
                "man-bouncing-ball",
                "woman-bouncing-ball",
                "weight_lifter",
                "man-lifting-weights",
                "woman-lifting-weights",
                "bicyclist",
                "man-biking",
                "woman-biking",
                "mountain_bicyclist",
                "man-mountain-biking",
                "woman-mountain-biking",
                "racing_car",
                "racing_motorcycle",
                "person_doing_cartwheel",
                "man-cartwheeling",
                "woman-cartwheeling",
                "wrestlers",
                "man-wrestling",
                "woman-wrestling",
                "water_polo",
                "man-playing-water-polo",
                "woman-playing-water-polo",
                "handball",
                "man-playing-handball",
                "woman-playing-handball",
                "juggling",
                "man-juggling",
                "woman-juggling",
                "couple",
                "two_men_holding_hands",
                "two_women_holding_hands",
                "couplekiss",
                "woman-kiss-man",
                "man-kiss-man",
                "woman-kiss-woman",
                "couple_with_heart",
                "woman-heart-man",
                "man-heart-man",
                "woman-heart-woman",
                "family",
                "man-woman-boy",
                "man-woman-girl",
                "man-woman-girl-boy",
                "man-woman-boy-boy",
                "man-woman-girl-girl",
                "man-man-boy",
                "man-man-girl",
                "man-man-girl-boy",
                "man-man-boy-boy",
                "man-man-girl-girl",
                "woman-woman-boy",
                "woman-woman-girl",
                "woman-woman-girl-boy",
                "woman-woman-boy-boy",
                "woman-woman-girl-girl",
                "man-boy",
                "man-boy-boy",
                "man-girl",
                "man-girl-boy",
                "man-girl-girl",
                "woman-boy",
                "woman-boy-boy",
                "woman-girl",
                "woman-girl-boy",
                "woman-girl-girl",
                "selfie",
                "muscle",
                "point_left",
                "point_right",
                "point_up",
                "point_up_2",
                "middle_finger",
                "point_down",
                "v",
                "crossed_fingers",
                "spock-hand",
                "the_horns",
                "call_me_hand",
                "raised_hand_with_fingers_splayed",
                "hand",
                "ok_hand",
                "plus1",
                "-1",
                "fist",
                "facepunch",
                "left-facing_fist",
                "right-facing_fist",
                "raised_back_of_hand",
                "wave",
                "i_love_you_hand_sign",
                "writing_hand",
                "clap",
                "open_hands",
                "raised_hands",
                "palms_up_together",
                "pray",
                "handshake",
                "nail_care",
                "ear",
                "nose",
                "footprints",
                "eyes",
                "eye",
                "brain",
                "tongue",
                "lips",
                "kiss",
                "cupid",
                "heart",
                "heartbeat",
                "broken_heart",
                "two_hearts",
                "sparkling_heart",
                "heartpulse",
                "blue_heart",
                "green_heart",
                "yellow_heart",
                "orange_heart",
                "purple_heart",
                "black_heart",
                "gift_heart",
                "revolving_hearts",
                "heart_decoration",
                "heavy_heart_exclamation_mark_ornament",
                "love_letter",
                "zzz",
                "anger",
                "bomb",
                "boom",
                "sweat_drops",
                "dash",
                "dizzy",
                "speech_balloon",
                "left_speech_bubble",
                "right_anger_bubble",
                "thought_balloon",
                "hole",
                "eyeglasses",
                "dark_sunglasses",
                "necktie",
                "shirt",
                "jeans",
                "scarf",
                "gloves",
                "coat",
                "socks",
                "dress",
                "kimono",
                "bikini",
                "womans_clothes",
                "purse",
                "handbag",
                "pouch",
                "shopping_bags",
                "school_satchel",
                "mans_shoe",
                "athletic_shoe",
                "high_heel",
                "sandal",
                "boot",
                "crown",
                "womans_hat",
                "tophat",
                "mortar_board",
                "billed_cap",
                "helmet_with_white_cross",
                "prayer_beads",
                "lipstick",
                "ring",
                "gem",
                "cold"
            ]
        },
        {
            "id": "nature",
            "name": "COM_COMMUNITY_EMOJI_ANIMALS_AND_NATURE",
            "emojis": [
                "monkey_face",
                "monkey",
                "gorilla",
                "dog",
                "dog2",
                "poodle",
                "wolf",
                "fox_face",
                "cat",
                "cat2",
                "lion_face",
                "tiger",
                "tiger2",
                "leopard",
                "horse",
                "racehorse",
                "unicorn_face",
                "zebra_face",
                "deer",
                "cow",
                "ox",
                "water_buffalo",
                "cow2",
                "pig",
                "pig2",
                "boar",
                "pig_nose",
                "ram",
                "sheep",
                "goat",
                "dromedary_camel",
                "camel",
                "giraffe_face",
                "elephant",
                "rhinoceros",
                "mouse",
                "mouse2",
                "rat",
                "hamster",
                "rabbit",
                "rabbit2",
                "chipmunk",
                "hedgehog",
                "bat",
                "bear",
                "koala",
                "panda_face",
                "feet",
                "turkey",
                "chicken",
                "rooster",
                "hatching_chick",
                "baby_chick",
                "hatched_chick",
                "bird",
                "penguin",
                "dove_of_peace",
                "eagle",
                "duck",
                "owl",
                "frog",
                "crocodile",
                "turtle",
                "lizard",
                "snake",
                "dragon_face",
                "dragon",
                "sauropod",
                "t-rex",
                "whale",
                "whale2",
                "dolphin",
                "fish",
                "tropical_fish",
                "blowfish",
                "shark",
                "octopus",
                "shell",
                "crab",
                "shrimp",
                "squid",
                "snail",
                "butterfly",
                "bug",
                "ant",
                "bee",
                "beetle",
                "cricket",
                "spider",
                "spider_web",
                "scorpion",
                "bouquet",
                "cherry_blossom",
                "white_flower",
                "rosette",
                "rose",
                "wilted_flower",
                "hibiscus",
                "sunflower",
                "blossom",
                "tulip",
                "seedling",
                "evergreen_tree",
                "deciduous_tree",
                "palm_tree",
                "cactus",
                "ear_of_rice",
                "herb",
                "shamrock",
                "four_leaf_clover",
                "maple_leaf",
                "fallen_leaf",
                "leaves"
            ]
        },
        {
            "id": "foods",
            "name": "COM_COMMUNITY_EMOJI_FOOD_AND_DRINK",
            "emojis": [
                "grapes",
                "melon",
                "watermelon",
                "tangerine",
                "lemon",
                "banana",
                "pineapple",
                "apple",
                "green_apple",
                "pear",
                "peach",
                "cherries",
                "strawberry",
                "kiwifruit",
                "tomato",
                "coconut",
                "avocado",
                "eggplant",
                "potato",
                "carrot",
                "corn",
                "hot_pepper",
                "cucumber",
                "broccoli",
                "mushroom",
                "peanuts",
                "chestnut",
                "bread",
                "croissant",
                "baguette_bread",
                "pretzel",
                "pancakes",
                "cheese_wedge",
                "meat_on_bone",
                "poultry_leg",
                "cut_of_meat",
                "bacon",
                "hamburger",
                "fries",
                "pizza",
                "hotdog",
                "sandwich",
                "taco",
                "burrito",
                "stuffed_flatbread",
                "egg",
                "fried_egg",
                "shallow_pan_of_food",
                "stew",
                "bowl_with_spoon",
                "green_salad",
                "popcorn",
                "canned_food",
                "bento",
                "rice_cracker",
                "rice_ball",
                "rice",
                "curry",
                "ramen",
                "spaghetti",
                "sweet_potato",
                "oden",
                "sushi",
                "fried_shrimp",
                "fish_cake",
                "dango",
                "dumpling",
                "fortune_cookie",
                "takeout_box",
                "icecream",
                "shaved_ice",
                "ice_cream",
                "doughnut",
                "cookie",
                "birthday",
                "cake",
                "pie",
                "chocolate_bar",
                "candy",
                "lollipop",
                "custard",
                "honey_pot",
                "baby_bottle",
                "glass_of_milk",
                "coffee",
                "tea",
                "sake",
                "champagne",
                "wine_glass",
                "cocktail",
                "tropical_drink",
                "beer",
                "beers",
                "clinking_glasses",
                "tumbler_glass",
                "cup_with_straw",
                "chopsticks",
                "knife_fork_plate",
                "fork_and_knife",
                "spoon",
                "hocho",
                "amphora"
            ]
        },
        {
            "id": "activity",
            "name": "COM_COMMUNITY_EMOJI_ACTIVITIES",
            "emojis": [
                "jack_o_lantern",
                "christmas_tree",
                "fireworks",
                "sparkler",
                "sparkles",
                "balloon",
                "tada",
                "confetti_ball",
                "tanabata_tree",
                "bamboo",
                "dolls",
                "flags",
                "wind_chime",
                "rice_scene",
                "ribbon",
                "gift",
                "reminder_ribbon",
                "admission_tickets",
                "ticket",
                "medal",
                "trophy",
                "sports_medal",
                "first_place_medal",
                "second_place_medal",
                "third_place_medal",
                "soccer",
                "baseball",
                "basketball",
                "volleyball",
                "football",
                "rugby_football",
                "tennis",
                "8ball",
                "bowling",
                "cricket_bat_and_ball",
                "field_hockey_stick_and_ball",
                "ice_hockey_stick_and_puck",
                "table_tennis_paddle_and_ball",
                "badminton_racquet_and_shuttlecock",
                "boxing_glove",
                "martial_arts_uniform",
                "goal_net",
                "dart",
                "golf",
                "ice_skate",
                "fishing_pole_and_fish",
                "running_shirt_with_sash",
                "ski",
                "sled",
                "curling_stone",
                "video_game",
                "joystick",
                "game_die",
                "spades",
                "hearts",
                "diamonds",
                "clubs",
                "black_joker",
                "mahjong",
                "flower_playing_cards"
            ]
        },
        {
            "id": "places",
            "name": "COM_COMMUNITY_EMOJI_TRAVEL_AND_PLACES",
            "emojis": [
                "earth_africa",
                "earth_americas",
                "earth_asia",
                "globe_with_meridians",
                "world_map",
                "japan",
                "snow_capped_mountain",
                "mountain",
                "volcano",
                "mount_fuji",
                "camping",
                "beach_with_umbrella",
                "desert",
                "desert_island",
                "national_park",
                "stadium",
                "classical_building",
                "building_construction",
                "house_buildings",
                "cityscape",
                "derelict_house_building",
                "house",
                "house_with_garden",
                "office",
                "post_office",
                "european_post_office",
                "hospital",
                "bank",
                "hotel",
                "love_hotel",
                "convenience_store",
                "school",
                "department_store",
                "factory",
                "japanese_castle",
                "european_castle",
                "wedding",
                "tokyo_tower",
                "statue_of_liberty",
                "church",
                "mosque",
                "synagogue",
                "shinto_shrine",
                "kaaba",
                "fountain",
                "tent",
                "foggy",
                "night_with_stars",
                "sunrise_over_mountains",
                "sunrise",
                "city_sunset",
                "city_sunrise",
                "bridge_at_night",
                "hotsprings",
                "milky_way",
                "carousel_horse",
                "ferris_wheel",
                "roller_coaster",
                "barber",
                "circus_tent",
                "performing_arts",
                "frame_with_picture",
                "art",
                "slot_machine",
                "steam_locomotive",
                "railway_car",
                "bullettrain_side",
                "bullettrain_front",
                "train2",
                "metro",
                "light_rail",
                "station",
                "tram",
                "monorail",
                "mountain_railway",
                "train",
                "bus",
                "oncoming_bus",
                "trolleybus",
                "minibus",
                "ambulance",
                "fire_engine",
                "police_car",
                "oncoming_police_car",
                "taxi",
                "oncoming_taxi",
                "car",
                "oncoming_automobile",
                "blue_car",
                "truck",
                "articulated_lorry",
                "tractor",
                "bike",
                "scooter",
                "motor_scooter",
                "busstop",
                "motorway",
                "railway_track",
                "fuelpump",
                "rotating_light",
                "traffic_light",
                "vertical_traffic_light",
                "construction",
                "octagonal_sign",
                "anchor",
                "boat",
                "canoe",
                "speedboat",
                "passenger_ship",
                "ferry",
                "motor_boat",
                "ship",
                "airplane",
                "small_airplane",
                "airplane_departure",
                "airplane_arriving",
                "seat",
                "helicopter",
                "suspension_railway",
                "mountain_cableway",
                "aerial_tramway",
                "satellite",
                "rocket",
                "flying_saucer",
                "bellhop_bell",
                "door",
                "bed",
                "couch_and_lamp",
                "toilet",
                "shower",
                "bathtub",
                "hourglass",
                "hourglass_flowing_sand",
                "watch",
                "alarm_clock",
                "stopwatch",
                "timer_clock",
                "mantelpiece_clock",
                "clock12",
                "clock1230",
                "clock1",
                "clock130",
                "clock2",
                "clock230",
                "clock3",
                "clock330",
                "clock4",
                "clock430",
                "clock5",
                "clock530",
                "clock6",
                "clock630",
                "clock7",
                "clock730",
                "clock8",
                "clock830",
                "clock9",
                "clock930",
                "clock10",
                "clock1030",
                "clock11",
                "clock1130",
                "new_moon",
                "waxing_crescent_moon",
                "first_quarter_moon",
                "moon",
                "full_moon",
                "waning_gibbous_moon",
                "last_quarter_moon",
                "waning_crescent_moon",
                "crescent_moon",
                "new_moon_with_face",
                "first_quarter_moon_with_face",
                "last_quarter_moon_with_face",
                "thermometer",
                "sunny",
                "full_moon_with_face",
                "sun_with_face",
                "star",
                "star2",
                "stars",
                "cloud",
                "partly_sunny",
                "thunder_cloud_and_rain",
                "mostly_sunny",
                "barely_sunny",
                "partly_sunny_rain",
                "rain_cloud",
                "snow_cloud",
                "lightning",
                "tornado",
                "fog",
                "wind_blowing_face",
                "cyclone",
                "rainbow",
                "closed_umbrella",
                "umbrella",
                "umbrella_with_rain_drops",
                "umbrella_on_ground",
                "zap",
                "snowflake",
                "snowman",
                "snowman_without_snow",
                "comet",
                "fire",
                "droplet",
                "ocean"
            ]
        },
        {
            "id": "objects",
            "name": "COM_COMMUNITY_EMOJI_OBJECTS",
            "emojis": [
                "mute",
                "speaker",
                "sound",
                "loud_sound",
                "loudspeaker",
                "mega",
                "postal_horn",
                "bell",
                "no_bell",
                "musical_score",
                "musical_note",
                "notes",
                "studio_microphone",
                "level_slider",
                "control_knobs",
                "microphone",
                "headphones",
                "radio",
                "saxophone",
                "guitar",
                "musical_keyboard",
                "trumpet",
                "violin",
                "drum_with_drumsticks",
                "iphone",
                "calling",
                "phone",
                "telephone_receiver",
                "pager",
                "fax",
                "battery",
                "electric_plug",
                "computer",
                "desktop_computer",
                "printer",
                "keyboard",
                "three_button_mouse",
                "trackball",
                "minidisc",
                "floppy_disk",
                "cd",
                "dvd",
                "movie_camera",
                "film_frames",
                "film_projector",
                "clapper",
                "tv",
                "camera",
                "camera_with_flash",
                "video_camera",
                "vhs",
                "mag",
                "mag_right",
                "microscope",
                "telescope",
                "satellite_antenna",
                "candle",
                "bulb",
                "flashlight",
                "izakaya_lantern",
                "notebook_with_decorative_cover",
                "closed_book",
                "book",
                "green_book",
                "blue_book",
                "orange_book",
                "books",
                "notebook",
                "ledger",
                "page_with_curl",
                "scroll",
                "page_facing_up",
                "newspaper",
                "rolled_up_newspaper",
                "bookmark_tabs",
                "bookmark",
                "label",
                "moneybag",
                "yen",
                "dollar",
                "euro",
                "pound",
                "money_with_wings",
                "credit_card",
                "chart",
                "currency_exchange",
                "heavy_dollar_sign",
                "email",
                "e-mail",
                "incoming_envelope",
                "envelope_with_arrow",
                "outbox_tray",
                "inbox_tray",
                "package",
                "mailbox",
                "mailbox_closed",
                "mailbox_with_mail",
                "mailbox_with_no_mail",
                "postbox",
                "ballot_box_with_ballot",
                "pencil2",
                "black_nib",
                "lower_left_fountain_pen",
                "lower_left_ballpoint_pen",
                "lower_left_paintbrush",
                "lower_left_crayon",
                "memo",
                "briefcase",
                "file_folder",
                "open_file_folder",
                "card_index_dividers",
                "date",
                "calendar",
                "spiral_note_pad",
                "spiral_calendar_pad",
                "card_index",
                "chart_with_upwards_trend",
                "chart_with_downwards_trend",
                "bar_chart",
                "clipboard",
                "pushpin",
                "round_pushpin",
                "paperclip",
                "linked_paperclips",
                "straight_ruler",
                "triangular_ruler",
                "scissors",
                "card_file_box",
                "file_cabinet",
                "wastebasket",
                "lock",
                "unlock",
                "lock_with_ink_pen",
                "closed_lock_with_key",
                "key",
                "old_key",
                "hammer",
                "pick",
                "hammer_and_pick",
                "hammer_and_wrench",
                "dagger_knife",
                "crossed_swords",
                "gun",
                "bow_and_arrow",
                "shield",
                "wrench",
                "nut_and_bolt",
                "gear",
                "compression",
                "alembic",
                "scales",
                "link",
                "chains",
                "syringe",
                "pill",
                "smoking",
                "coffin",
                "funeral_urn",
                "moyai",
                "oil_drum",
                "crystal_ball",
                "shopping_trolley"
            ]
        },
        {
            "id": "symbols",
            "name": "COM_COMMUNITY_EMOJI_SYMBOLS",
            "emojis": [
                "atm",
                "put_litter_in_its_place",
                "potable_water",
                "wheelchair",
                "mens",
                "womens",
                "restroom",
                "baby_symbol",
                "wc",
                "passport_control",
                "customs",
                "baggage_claim",
                "left_luggage",
                "warning",
                "children_crossing",
                "no_entry",
                "no_entry_sign",
                "no_bicycles",
                "no_smoking",
                "do_not_litter",
                "non-potable_water",
                "no_pedestrians",
                "no_mobile_phones",
                "underage",
                "radioactive_sign",
                "biohazard_sign",
                "arrow_up",
                "arrow_upper_right",
                "arrow_right",
                "arrow_lower_right",
                "arrow_down",
                "arrow_lower_left",
                "arrow_left",
                "arrow_upper_left",
                "arrow_up_down",
                "left_right_arrow",
                "leftwards_arrow_with_hook",
                "arrow_right_hook",
                "arrow_heading_up",
                "arrow_heading_down",
                "arrows_clockwise",
                "arrows_counterclockwise",
                "back",
                "end",
                "on",
                "soon",
                "top",
                "place_of_worship",
                "atom_symbol",
                "om_symbol",
                "star_of_david",
                "wheel_of_dharma",
                "yin_yang",
                "latin_cross",
                "orthodox_cross",
                "star_and_crescent",
                "peace_symbol",
                "menorah_with_nine_branches",
                "six_pointed_star",
                "aries",
                "taurus",
                "gemini",
                "cancer",
                "leo",
                "virgo",
                "libra",
                "scorpius",
                "sagittarius",
                "capricorn",
                "aquarius",
                "pisces",
                "ophiuchus",
                "twisted_rightwards_arrows",
                "repeat",
                "repeat_one",
                "arrow_forward",
                "fast_forward",
                "black_right_pointing_double_triangle_with_vertical_bar",
                "black_right_pointing_triangle_with_double_vertical_bar",
                "arrow_backward",
                "rewind",
                "black_left_pointing_double_triangle_with_vertical_bar",
                "arrow_up_small",
                "arrow_double_up",
                "arrow_down_small",
                "arrow_double_down",
                "double_vertical_bar",
                "black_square_for_stop",
                "black_circle_for_record",
                "eject",
                "cinema",
                "low_brightness",
                "high_brightness",
                "signal_strength",
                "vibration_mode",
                "mobile_phone_off",
                "female_sign",
                "male_sign",
                "medical_symbol",
                "recycle",
                "fleur_de_lis",
                "trident",
                "name_badge",
                "beginner",
                "o",
                "white_check_mark",
                "ballot_box_with_check",
                "heavy_check_mark",
                "heavy_multiplication_x",
                "x",
                "negative_squared_cross_mark",
                "heavy_plus_sign",
                "heavy_minus_sign",
                "heavy_division_sign",
                "curly_loop",
                "loop",
                "part_alternation_mark",
                "eight_spoked_asterisk",
                "eight_pointed_black_star",
                "sparkle",
                "bangbang",
                "interrobang",
                "question",
                "grey_question",
                "grey_exclamation",
                "exclamation",
                "wavy_dash",
                "tm",
                "hash",
                "keycap_star",
                "zero",
                "one",
                "two",
                "three",
                "four",
                "five",
                "six",
                "seven",
                "eight",
                "nine",
                "keycap_ten",
                "hundred",
                "capital_abcd",
                "abcd",
                "numbers",
                "symbols",
                "abc",
                "a",
                "ab",
                "b",
                "cl",
                "cool",
                "free",
                "information_source",
                "id",
                "m",
                "new",
                "ng",
                "o2",
                "ok",
                "parking",
                "sos",
                "up",
                "vs",
                "koko",
                "sa",
                "u6708",
                "u6709",
                "u6307",
                "ideograph_advantage",
                "u5272",
                "u7121",
                "u7981",
                "accept",
                "u7533",
                "u5408",
                "u7a7a",
                "congratulations",
                "secret",
                "u55b6",
                "u6e80",
                "black_small_square",
                "white_small_square",
                "white_medium_square",
                "black_medium_square",
                "white_medium_small_square",
                "black_medium_small_square",
                "black_large_square",
                "white_large_square",
                "large_orange_diamond",
                "large_blue_diamond",
                "small_orange_diamond",
                "small_blue_diamond",
                "small_red_triangle",
                "small_red_triangle_down",
                "diamond_shape_with_a_dot_inside",
                "radio_button",
                "black_square_button",
                "white_square_button",
                "white_circle",
                "black_circle",
                "red_circle",
                "large_blue_circle"
            ]
        },
        {
            "id": "flags",
            "name": "COM_COMMUNITY_EMOJI_FLAGS",
            "emojis": [
                "checkered_flag",
                "cn",
                "crossed_flags",
                "de",
                "es",
                "flag-ac",
                "flag-ad",
                "flag-ae",
                "flag-af",
                "flag-ag",
                "flag-ai",
                "flag-al",
                "flag-am",
                "flag-ao",
                "flag-aq",
                "flag-ar",
                "flag-as",
                "flag-at",
                "flag-au",
                "flag-aw",
                "flag-ax",
                "flag-az",
                "flag-ba",
                "flag-bb",
                "flag-bd",
                "flag-be",
                "flag-bf",
                "flag-bg",
                "flag-bh",
                "flag-bi",
                "flag-bj",
                "flag-bl",
                "flag-bm",
                "flag-bn",
                "flag-bo",
                "flag-bq",
                "flag-br",
                "flag-bs",
                "flag-bt",
                "flag-bv",
                "flag-bw",
                "flag-by",
                "flag-bz",
                "flag-ca",
                "flag-cc",
                "flag-cd",
                "flag-cf",
                "flag-cg",
                "flag-ch",
                "flag-ci",
                "flag-ck",
                "flag-cl",
                "flag-cm",
                "flag-co",
                "flag-cp",
                "flag-cr",
                "flag-cu",
                "flag-cv",
                "flag-cw",
                "flag-cx",
                "flag-cy",
                "flag-cz",
                "flag-dg",
                "flag-dj",
                "flag-dk",
                "flag-dm",
                "flag-do",
                "flag-dz",
                "flag-ea",
                "flag-ec",
                "flag-ee",
                "flag-eg",
                "flag-eh",
                "flag-england",
                "flag-er",
                "flag-et",
                "flag-eu",
                "flag-fi",
                "flag-fj",
                "flag-fk",
                "flag-fm",
                "flag-fo",
                "flag-ga",
                "flag-gd",
                "flag-ge",
                "flag-gf",
                "flag-gg",
                "flag-gh",
                "flag-gi",
                "flag-gl",
                "flag-gm",
                "flag-gn",
                "flag-gp",
                "flag-gq",
                "flag-gr",
                "flag-gs",
                "flag-gt",
                "flag-gu",
                "flag-gw",
                "flag-gy",
                "flag-hk",
                "flag-hm",
                "flag-hn",
                "flag-hr",
                "flag-ht",
                "flag-hu",
                "flag-ic",
                "flag-id",
                "flag-ie",
                "flag-il",
                "flag-im",
                "flag-in",
                "flag-io",
                "flag-iq",
                "flag-ir",
                "flag-is",
                "flag-je",
                "flag-jm",
                "flag-jo",
                "flag-ke",
                "flag-kg",
                "flag-kh",
                "flag-ki",
                "flag-km",
                "flag-kn",
                "flag-kp",
                "flag-kw",
                "flag-ky",
                "flag-kz",
                "flag-la",
                "flag-lb",
                "flag-lc",
                "flag-li",
                "flag-lk",
                "flag-lr",
                "flag-ls",
                "flag-lt",
                "flag-lu",
                "flag-lv",
                "flag-ly",
                "flag-ma",
                "flag-mc",
                "flag-md",
                "flag-me",
                "flag-mf",
                "flag-mg",
                "flag-mh",
                "flag-mk",
                "flag-ml",
                "flag-mm",
                "flag-mn",
                "flag-mo",
                "flag-mp",
                "flag-mq",
                "flag-mr",
                "flag-ms",
                "flag-mt",
                "flag-mu",
                "flag-mv",
                "flag-mw",
                "flag-mx",
                "flag-my",
                "flag-mz",
                "flag-na",
                "flag-nc",
                "flag-ne",
                "flag-nf",
                "flag-ng",
                "flag-ni",
                "flag-nl",
                "flag-no",
                "flag-np",
                "flag-nr",
                "flag-nu",
                "flag-nz",
                "flag-om",
                "flag-pa",
                "flag-pe",
                "flag-pf",
                "flag-pg",
                "flag-ph",
                "flag-pk",
                "flag-pl",
                "flag-pm",
                "flag-pn",
                "flag-pr",
                "flag-ps",
                "flag-pt",
                "flag-pw",
                "flag-py",
                "flag-qa",
                "flag-re",
                "flag-ro",
                "flag-rs",
                "flag-rw",
                "flag-sa",
                "flag-sb",
                "flag-sc",
                "flag-scotland",
                "flag-sd",
                "flag-se",
                "flag-sg",
                "flag-sh",
                "flag-si",
                "flag-sj",
                "flag-sk",
                "flag-sl",
                "flag-sm",
                "flag-sn",
                "flag-so",
                "flag-sr",
                "flag-ss",
                "flag-st",
                "flag-sv",
                "flag-sx",
                "flag-sy",
                "flag-sz",
                "flag-ta",
                "flag-tc",
                "flag-td",
                "flag-tf",
                "flag-tg",
                "flag-th",
                "flag-tj",
                "flag-tk",
                "flag-tl",
                "flag-tm",
                "flag-tn",
                "flag-to",
                "flag-tr",
                "flag-tt",
                "flag-tv",
                "flag-tw",
                "flag-tz",
                "flag-ua",
                "flag-ug",
                "flag-um",
                "flag-uy",
                "flag-uz",
                "flag-va",
                "flag-vc",
                "flag-ve",
                "flag-vg",
                "flag-vi",
                "flag-vn",
                "flag-vu",
                "flag-wales",
                "flag-wf",
                "flag-ws",
                "flag-xk",
                "flag-ye",
                "flag-yt",
                "flag-za",
                "flag-zm",
                "flag-zw",
                "fr",
                "gb",
                "it",
                "jp",
                "kr",
                "rainbow-flag",
                "ru",
                "triangular_flag_on_post",
                "us",
                "waving_black_flag",
                "waving_white_flag"
            ]
        }
    ],
    "emojis": {
        "hundred": {
            "a": "Hundred Points Symbol",
            "b": "1F4AF",
            "j": [
                "score",
                "perfect",
                "numbers",
                "century",
                "exam",
                "quiz",
                "test",
                "pass",
                "hundred"
            ],
            "k": [
                25,
                26
            ]
        },
        "cold": {
            "a": "Freezing Face",
            "b": "1F976",
            "j": [
                "freezing",
                "freeze",
                "cold",
              
            ],
            "k": [
                51,
                28
            ]
        },
        "numbers": {
            "a": "Input Symbol for Numbers",
            "b": "1F522",
            "j": [
                "numbers",
                "blue-square"
            ],
            "k": [
                27,
                36
            ]
        },
        "monkey_face": {
            "a": "Monkey Face",
            "b": "1F435",
            "j": [
                "animal",
                "nature",
                "circus"
            ],
            "k": [
                13,
                31
            ],
            "l": [
                ":o)"
            ]
        },
        "grinning": {
            "a": "Grinning Face",
            "b": "1F600",
            "j": [
                "face",
                "smile",
                "happy",
                "joy",
                ":D",
                "grin"
            ],
            "k": [
                30,
                24
            ],
            "m": ":D"
        },
        "earth_africa": {
            "a": "Earth Globe Europe-Africa",
            "b": "1F30D",
            "j": [
                "globe",
                "world",
                "international"
            ],
            "k": [
                6,
                5
            ]
        },
        "checkered_flag": {
            "a": "Chequered Flag",
            "b": "1F3C1",
            "j": [
                "contest",
                "finishline",
                "race",
                "gokart"
            ],
            "k": [
                9,
                27
            ]
        },
        "mute": {
            "a": "Speaker with Cancellation Stroke",
            "b": "1F507",
            "j": [
                "sound",
                "volume",
                "silence",
                "quiet"
            ],
            "k": [
                27,
                9
            ]
        },
        "jack_o_lantern": {
            "a": "Jack-O-Lantern",
            "b": "1F383",
            "j": [
                "halloween",
                "light",
                "pumpkin",
                "creepy",
                "fall"
            ],
            "k": [
                8,
                17
            ]
        },
        "atm": {
            "a": "Automated Teller Machine",
            "b": "1F3E7",
            "j": [
                "money",
                "sales",
                "cash",
                "blue-square",
                "payment",
                "bank"
            ],
            "k": [
                12,
                4
            ]
        },
        "grapes": {
            "a": "Grapes",
            "b": "1F347",
            "j": [
                "fruit",
                "food",
                "wine"
            ],
            "k": [
                7,
                9
            ]
        },
        "earth_americas": {
            "a": "Earth Globe Americas",
            "b": "1F30E",
            "j": [
                "globe",
                "world",
                "USA",
                "international"
            ],
            "k": [
                6,
                6
            ]
        },
        "grin": {
            "a": "Grinning Face with Smiling Eyes",
            "b": "1F601",
            "j": [
                "face",
                "happy",
                "smile",
                "joy",
                "kawaii"
            ],
            "k": [
                30,
                25
            ]
        },
        "melon": {
            "a": "Melon",
            "b": "1F348",
            "j": [
                "fruit",
                "nature",
                "food"
            ],
            "k": [
                7,
                10
            ]
        },
        "triangular_flag_on_post": {
            "a": "Triangular Flag on Post",
            "b": "1F6A9",
            "j": [
                "mark",
                "milestone",
                "place"
            ],
            "k": [
                35,
                14
            ]
        },
        "monkey": {
            "a": "Monkey",
            "b": "1F412",
            "j": [
                "animal",
                "nature",
                "banana",
                "circus"
            ],
            "k": [
                12,
                48
            ]
        },
        "christmas_tree": {
            "a": "Christmas Tree",
            "b": "1F384",
            "j": [
                "festival",
                "vacation",
                "december",
                "xmas",
                "celebration"
            ],
            "k": [
                8,
                18
            ]
        },
        "put_litter_in_its_place": {
            "a": "Put Litter in Its Place Symbol",
            "b": "1F6AE",
            "j": [
                "blue-square",
                "sign",
                "human",
                "info"
            ],
            "k": [
                35,
                19
            ]
        },
        "speaker": {
            "a": "Speaker",
            "b": "1F508",
            "j": [
                "sound",
                "volume",
                "silence",
                "broadcast"
            ],
            "k": [
                27,
                10
            ]
        },
        "earth_asia": {
            "a": "Earth Globe Asia-Australia",
            "b": "1F30F",
            "j": [
                "globe",
                "world",
                "east",
                "international"
            ],
            "k": [
                6,
                7
            ]
        },
        "crossed_flags": {
            "a": "Crossed Flags",
            "b": "1F38C",
            "j": [
                "japanese",
                "nation",
                "country",
                "border"
            ],
            "k": [
                8,
                31
            ]
        },
        "joy": {
            "a": "Face with Tears of Joy",
            "b": "1F602",
            "j": [
                "face",
                "cry",
                "tears",
                "weep",
                "happy",
                "happytears",
                "haha"
            ],
            "k": [
                30,
                26
            ]
        },
        "sound": {
            "a": "Speaker with One Sound Wave",
            "b": "1F509",
            "j": [
                "volume",
                "speaker",
                "broadcast"
            ],
            "k": [
                27,
                11
            ]
        },
        "watermelon": {
            "a": "Watermelon",
            "b": "1F349",
            "j": [
                "fruit",
                "food",
                "picnic",
                "summer"
            ],
            "k": [
                7,
                11
            ]
        },
        "gorilla": {
            "a": "Gorilla",
            "b": "1F98D",
            "j": [
                "animal",
                "nature",
                "circus"
            ],
            "k": [
                42,
                37
            ],
            "o": 9
        },
        "fireworks": {
            "a": "Fireworks",
            "b": "1F386",
            "j": [
                "photo",
                "festival",
                "carnival",
                "congratulations"
            ],
            "k": [
                8,
                25
            ]
        },
        "potable_water": {
            "a": "Potable Water Symbol",
            "b": "1F6B0",
            "j": [
                "blue-square",
                "liquid",
                "restroom",
                "cleaning",
                "faucet"
            ],
            "k": [
                35,
                21
            ]
        },
        "wheelchair": {
            "a": "Wheelchair Symbol",
            "b": "267F",
            "j": [
                "blue-square",
                "disabled",
                "a11y",
                "accessibility"
            ],
            "k": [
                48,
                10
            ],
            "o": 4
        },
        "rolling_on_the_floor_laughing": {
            "a": "Rolling on the Floor Laughing",
            "b": "1F923",
            "k": [
                38,
                26
            ],
            "o": 9
        },
        "loud_sound": {
            "a": "Speaker with Three Sound Waves",
            "b": "1F50A",
            "j": [
                "volume",
                "noise",
                "noisy",
                "speaker",
                "broadcast"
            ],
            "k": [
                27,
                12
            ]
        },
        "waving_black_flag": {
            "a": "Waving Black Flag",
            "b": "1F3F4",
            "k": [
                12,
                19
            ],
            "o": 7
        },
        "tangerine": {
            "a": "Tangerine",
            "b": "1F34A",
            "j": [
                "food",
                "fruit",
                "nature",
                "orange"
            ],
            "k": [
                7,
                12
            ]
        },
        "dog": {
            "a": "Dog Face",
            "b": "1F436",
            "j": [
                "animal",
                "friend",
                "nature",
                "woof",
                "puppy",
                "pet",
                "faithful"
            ],
            "k": [
                13,
                32
            ]
        },
        "sparkler": {
            "a": "Firework Sparkler",
            "b": "1F387",
            "j": [
                "stars",
                "night",
                "shine"
            ],
            "k": [
                8,
                26
            ]
        },
        "globe_with_meridians": {
            "a": "Globe with Meridians",
            "b": "1F310",
            "j": [
                "earth",
                "international",
                "world",
                "internet",
                "interweb",
                "i18n"
            ],
            "k": [
                6,
                8
            ]
        },
        "smiley": {
            "a": "Smiling Face with Open Mouth",
            "b": "1F603",
            "j": [
                "face",
                "happy",
                "joy",
                "haha",
                ":D",
                ":)",
                "smile",
                "funny"
            ],
            "k": [
                30,
                27
            ],
            "l": [
                "=)",
                "=-)"
            ],
            "m": ":)"
        },
        "loudspeaker": {
            "a": "Public Address Loudspeaker",
            "b": "1F4E2",
            "j": [
                "volume",
                "sound"
            ],
            "k": [
                26,
                25
            ]
        },
        "sparkles": {
            "a": "Sparkles",
            "b": "2728",
            "j": [
                "stars",
                "shine",
                "shiny",
                "cool",
                "awesome",
                "good",
                "magic"
            ],
            "k": [
                49,
                48
            ]
        },
        "dog2": {
            "a": "Dog",
            "b": "1F415",
            "j": [
                "animal",
                "nature",
                "friend",
                "doge",
                "pet",
                "faithful"
            ],
            "k": [
                12,
                51
            ]
        },
        "waving_white_flag": {
            "a": "Waving White Flag",
            "b": "1F3F3-FE0F",
            "c": "1F3F3",
            "k": [
                12,
                15
            ],
            "o": 7
        },
        "world_map": {
            "a": "World Map",
            "b": "1F5FA-FE0F",
            "c": "1F5FA",
            "j": [
                "location",
                "direction"
            ],
            "k": [
                30,
                18
            ],
            "o": 7
        },
        "lemon": {
            "a": "Lemon",
            "b": "1F34B",
            "j": [
                "fruit",
                "nature"
            ],
            "k": [
                7,
                13
            ]
        },
        "mens": {
            "a": "Mens Symbol",
            "b": "1F6B9",
            "j": [
                "toilet",
                "restroom",
                "wc",
                "blue-square",
                "gender",
                "male"
            ],
            "k": [
                36,
                29
            ]
        },
        "womens": {
            "a": "Womens Symbol",
            "b": "1F6BA",
            "j": [
                "purple-square",
                "woman",
                "female",
                "toilet",
                "loo",
                "restroom",
                "gender"
            ],
            "k": [
                36,
                30
            ]
        },
        "rainbow-flag": {
            "a": "Rainbow Flag",
            "b": "1F3F3-FE0F-200D-1F308",
            "c": "1F3F3-200D-1F308",
            "k": [
                12,
                14
            ],
            "o": 7
        },
        "smile": {
            "a": "Smiling Face with Open Mouth and Smiling Eyes",
            "b": "1F604",
            "j": [
                "face",
                "happy",
                "joy",
                "funny",
                "haha",
                "laugh",
                "like",
                ":D",
                ":)"
            ],
            "k": [
                30,
                28
            ],
            "l": [
                "C:",
                "c:",
                ":D",
                ":-D"
            ],
            "m": ":)"
        },
        "banana": {
            "a": "Banana",
            "b": "1F34C",
            "j": [
                "fruit",
                "food",
                "monkey"
            ],
            "k": [
                7,
                14
            ]
        },
        "mega": {
            "a": "Cheering Megaphone",
            "b": "1F4E3",
            "j": [
                "sound",
                "speaker",
                "volume"
            ],
            "k": [
                26,
                26
            ]
        },
        "japan": {
            "a": "Silhouette of Japan",
            "b": "1F5FE",
            "j": [
                "nation",
                "country",
                "japanese",
                "asia"
            ],
            "k": [
                30,
                22
            ]
        },
        "poodle": {
            "a": "Poodle",
            "b": "1F429",
            "j": [
                "dog",
                "animal",
                "101",
                "nature",
                "pet"
            ],
            "k": [
                13,
                19
            ]
        },
        "balloon": {
            "a": "Balloon",
            "b": "1F388",
            "j": [
                "party",
                "celebration",
                "birthday",
                "circus"
            ],
            "k": [
                8,
                27
            ]
        },
        "flag-ac": {
            "a": "Ascension Island Flag",
            "b": "1F1E6-1F1E8",
            "k": [
                0,
                31
            ]
        },
        "sweat_smile": {
            "a": "Smiling Face with Open Mouth and Cold Sweat",
            "b": "1F605",
            "j": [
                "face",
                "hot",
                "happy",
                "laugh",
                "sweat",
                "smile",
                "relief"
            ],
            "k": [
                30,
                29
            ]
        },
        "pineapple": {
            "a": "Pineapple",
            "b": "1F34D",
            "j": [
                "fruit",
                "nature",
                "food"
            ],
            "k": [
                7,
                15
            ]
        },
        "restroom": {
            "a": "Restroom",
            "b": "1F6BB",
            "j": [
                "blue-square",
                "toilet",
                "refresh",
                "wc",
                "gender"
            ],
            "k": [
                36,
                31
            ]
        },
        "postal_horn": {
            "a": "Postal Horn",
            "b": "1F4EF",
            "j": [
                "instrument",
                "music"
            ],
            "k": [
                26,
                38
            ]
        },
        "wolf": {
            "a": "Wolf Face",
            "b": "1F43A",
            "j": [
                "animal",
                "nature",
                "wild"
            ],
            "k": [
                13,
                36
            ]
        },
        "tada": {
            "a": "Party Popper",
            "b": "1F389",
            "j": [
                "party",
                "congratulations",
                "birthday",
                "magic",
                "circus",
                "celebration"
            ],
            "k": [
                8,
                28
            ]
        },
        "snow_capped_mountain": {
            "a": "Snow Capped Mountain",
            "b": "1F3D4-FE0F",
            "c": "1F3D4",
            "k": [
                11,
                37
            ],
            "o": 7
        },
        "laughing": {
            "a": "Smiling Face with Open Mouth and Tightly-Closed Eyes",
            "b": "1F606",
            "j": [
                "happy",
                "joy",
                "lol",
                "satisfied",
                "haha",
                "face",
                "glad",
                "XD",
                "laugh"
            ],
            "k": [
                30,
                30
            ],
            "l": [
                ":>",
                ":->"
            ],
            "n": [
                "satisfied"
            ]
        },
        "apple": {
            "a": "Red Apple",
            "b": "1F34E",
            "j": [
                "fruit",
                "mac",
                "school"
            ],
            "k": [
                7,
                16
            ]
        },
        "flag-ad": {
            "a": "Andorra Flag",
            "b": "1F1E6-1F1E9",
            "k": [
                0,
                32
            ]
        },
        "fox_face": {
            "a": "Fox Face",
            "b": "1F98A",
            "j": [
                "animal",
                "nature",
                "face"
            ],
            "k": [
                42,
                34
            ],
            "o": 9
        },
        "confetti_ball": {
            "a": "Confetti Ball",
            "b": "1F38A",
            "j": [
                "festival",
                "party",
                "birthday",
                "circus"
            ],
            "k": [
                8,
                29
            ]
        },
        "bell": {
            "a": "Bell",
            "b": "1F514",
            "j": [
                "sound",
                "notification",
                "christmas",
                "xmas",
                "chime"
            ],
            "k": [
                27,
                22
            ]
        },
        "mountain": {
            "a": "Mountain",
            "b": "26F0-FE0F",
            "c": "26F0",
            "j": [
                "photo",
                "nature",
                "environment"
            ],
            "k": [
                48,
                38
            ],
            "o": 5
        },
        "baby_symbol": {
            "a": "Baby Symbol",
            "b": "1F6BC",
            "j": [
                "orange-square",
                "child"
            ],
            "k": [
                36,
                32
            ]
        },
        "wc": {
            "a": "Water Closet",
            "b": "1F6BE",
            "j": [
                "toilet",
                "restroom",
                "blue-square"
            ],
            "k": [
                36,
                34
            ]
        },
        "wink": {
            "a": "Winking Face",
            "b": "1F609",
            "j": [
                "face",
                "happy",
                "mischievous",
                "secret",
                ";)",
                "smile",
                "eye"
            ],
            "k": [
                30,
                33
            ],
            "l": [
                ";)",
                ";-)"
            ],
            "m": ";)"
        },
        "no_bell": {
            "a": "Bell with Cancellation Stroke",
            "b": "1F515",
            "j": [
                "sound",
                "volume",
                "mute",
                "quiet",
                "silent"
            ],
            "k": [
                27,
                23
            ]
        },
        "green_apple": {
            "a": "Green Apple",
            "b": "1F34F",
            "j": [
                "fruit",
                "nature"
            ],
            "k": [
                7,
                17
            ]
        },
        "tanabata_tree": {
            "a": "Tanabata Tree",
            "b": "1F38B",
            "j": [
                "plant",
                "nature",
                "branch",
                "summer"
            ],
            "k": [
                8,
                30
            ]
        },
        "flag-ae": {
            "a": "United Arab Emirates Flag",
            "b": "1F1E6-1F1EA",
            "k": [
                0,
                33
            ]
        },
        "volcano": {
            "a": "Volcano",
            "b": "1F30B",
            "j": [
                "photo",
                "nature",
                "disaster"
            ],
            "k": [
                6,
                3
            ]
        },
        "cat": {
            "a": "Cat Face",
            "b": "1F431",
            "j": [
                "animal",
                "meow",
                "nature",
                "pet",
                "kitten"
            ],
            "k": [
                13,
                27
            ]
        },
        "flag-af": {
            "a": "Afghanistan Flag",
            "b": "1F1E6-1F1EB",
            "k": [
                0,
                34
            ]
        },
        "musical_score": {
            "a": "Musical Score",
            "b": "1F3BC",
            "j": [
                "treble",
                "clef",
                "compose"
            ],
            "k": [
                9,
                22
            ]
        },
        "blush": {
            "a": "Smiling Face with Smiling Eyes",
            "b": "1F60A",
            "j": [
                "face",
                "smile",
                "happy",
                "flushed",
                "crush",
                "embarrassed",
                "shy",
                "joy"
            ],
            "k": [
                30,
                34
            ],
            "m": ":)"
        },
        "pear": {
            "a": "Pear",
            "b": "1F350",
            "j": [
                "fruit",
                "nature",
                "food"
            ],
            "k": [
                7,
                18
            ]
        },
        "bamboo": {
            "a": "Pine Decoration",
            "b": "1F38D",
            "j": [
                "plant",
                "nature",
                "vegetable",
                "panda",
                "pine_decoration"
            ],
            "k": [
                8,
                32
            ]
        },
        "passport_control": {
            "a": "Passport Control",
            "b": "1F6C2",
            "j": [
                "custom",
                "blue-square"
            ],
            "k": [
                36,
                43
            ]
        },
        "mount_fuji": {
            "a": "Mount Fuji",
            "b": "1F5FB",
            "j": [
                "photo",
                "mountain",
                "nature",
                "japanese"
            ],
            "k": [
                30,
                19
            ]
        },
        "cat2": {
            "a": "Cat",
            "b": "1F408",
            "j": [
                "animal",
                "meow",
                "pet",
                "cats"
            ],
            "k": [
                12,
                38
            ]
        },
        "musical_note": {
            "a": "Musical Note",
            "b": "1F3B5",
            "j": [
                "score",
                "tone",
                "sound"
            ],
            "k": [
                9,
                15
            ]
        },
        "dolls": {
            "a": "Japanese Dolls",
            "b": "1F38E",
            "j": [
                "japanese",
                "toy",
                "kimono"
            ],
            "k": [
                8,
                33
            ]
        },
        "lion_face": {
            "a": "Lion Face",
            "b": "1F981",
            "k": [
                42,
                25
            ],
            "o": 8
        },
        "camping": {
            "a": "Camping",
            "b": "1F3D5-FE0F",
            "c": "1F3D5",
            "j": [
                "photo",
                "outdoors",
                "tent"
            ],
            "k": [
                11,
                38
            ],
            "o": 7
        },
        "flag-ag": {
            "a": "Antigua & Barbuda Flag",
            "b": "1F1E6-1F1EC",
            "k": [
                0,
                35
            ]
        },
        "customs": {
            "a": "Customs",
            "b": "1F6C3",
            "j": [
                "passport",
                "border",
                "blue-square"
            ],
            "k": [
                36,
                44
            ]
        },
        "yum": {
            "a": "Face Savouring Delicious Food",
            "b": "1F60B",
            "j": [
                "happy",
                "joy",
                "tongue",
                "smile",
                "face",
                "silly",
                "yummy",
                "nom",
                "delicious",
                "savouring"
            ],
            "k": [
                30,
                35
            ]
        },
        "peach": {
            "a": "Peach",
            "b": "1F351",
            "j": [
                "fruit",
                "nature",
                "food"
            ],
            "k": [
                7,
                19
            ]
        },
        "tiger": {
            "a": "Tiger Face",
            "b": "1F42F",
            "j": [
                "animal",
                "cat",
                "danger",
                "wild",
                "nature",
                "roar"
            ],
            "k": [
                13,
                25
            ]
        },
        "notes": {
            "a": "Multiple Musical Notes",
            "b": "1F3B6",
            "j": [
                "music",
                "score"
            ],
            "k": [
                9,
                16
            ]
        },
        "flags": {
            "a": "Carp Streamer",
            "b": "1F38F",
            "j": [
                "fish",
                "japanese",
                "koinobori",
                "carp",
                "banner"
            ],
            "k": [
                8,
                34
            ]
        },
        "beach_with_umbrella": {
            "a": "Beach with Umbrella",
            "b": "1F3D6-FE0F",
            "c": "1F3D6",
            "k": [
                11,
                39
            ],
            "o": 7
        },
        "cherries": {
            "a": "Cherries",
            "b": "1F352",
            "j": [
                "food",
                "fruit"
            ],
            "k": [
                7,
                20
            ]
        },
        "flag-ai": {
            "a": "Anguilla Flag",
            "b": "1F1E6-1F1EE",
            "k": [
                0,
                36
            ]
        },
        "baggage_claim": {
            "a": "Baggage Claim",
            "b": "1F6C4",
            "j": [
                "blue-square",
                "airport",
                "transport"
            ],
            "k": [
                36,
                45
            ]
        },
        "sunglasses": {
            "a": "Smiling Face with Sunglasses",
            "b": "1F60E",
            "j": [
                "face",
                "cool",
                "smile",
                "summer",
                "beach",
                "sunglass"
            ],
            "k": [
                30,
                38
            ],
            "l": [
                "8)"
            ]
        },
        "left_luggage": {
            "a": "Left Luggage",
            "b": "1F6C5",
            "j": [
                "blue-square",
                "travel"
            ],
            "k": [
                36,
                46
            ]
        },
        "wind_chime": {
            "a": "Wind Chime",
            "b": "1F390",
            "j": [
                "nature",
                "ding",
                "spring",
                "bell"
            ],
            "k": [
                8,
                35
            ]
        },
        "strawberry": {
            "a": "Strawberry",
            "b": "1F353",
            "j": [
                "fruit",
                "food",
                "nature"
            ],
            "k": [
                7,
                21
            ]
        },
        "desert": {
            "a": "Desert",
            "b": "1F3DC-FE0F",
            "c": "1F3DC",
            "j": [
                "photo",
                "warm",
                "saharah"
            ],
            "k": [
                11,
                45
            ],
            "o": 7
        },
        "studio_microphone": {
            "a": "Studio Microphone",
            "b": "1F399-FE0F",
            "c": "1F399",
            "j": [
                "sing",
                "recording",
                "artist",
                "talkshow"
            ],
            "k": [
                8,
                41
            ],
            "o": 7
        },
        "flag-al": {
            "a": "Albania Flag",
            "b": "1F1E6-1F1F1",
            "k": [
                0,
                37
            ]
        },
        "tiger2": {
            "a": "Tiger",
            "b": "1F405",
            "j": [
                "animal",
                "nature",
                "roar"
            ],
            "k": [
                12,
                35
            ]
        },
        "heart_eyes": {
            "a": "Smiling Face with Heart-Shaped Eyes",
            "b": "1F60D",
            "j": [
                "face",
                "love",
                "like",
                "affection",
                "valentines",
                "infatuation",
                "crush",
                "heart"
            ],
            "k": [
                30,
                37
            ]
        },
        "desert_island": {
            "a": "Desert Island",
            "b": "1F3DD-FE0F",
            "c": "1F3DD",
            "j": [
                "photo",
                "tropical",
                "mojito"
            ],
            "k": [
                11,
                46
            ],
            "o": 7
        },
        "kiwifruit": {
            "a": "Kiwifruit",
            "b": "1F95D",
            "k": [
                42,
                9
            ],
            "o": 9
        },
        "rice_scene": {
            "a": "Moon Viewing Ceremony",
            "b": "1F391",
            "j": [
                "photo",
                "japan",
                "asia",
                "tsukimi"
            ],
            "k": [
                8,
                36
            ]
        },
        "kissing_heart": {
            "a": "Face Throwing a Kiss",
            "b": "1F618",
            "j": [
                "face",
                "love",
                "like",
                "affection",
                "valentines",
                "infatuation",
                "kiss"
            ],
            "k": [
                30,
                48
            ],
            "l": [
                ":*",
                ":-*"
            ]
        },
        "warning": {
            "a": "Warning Sign",
            "b": "26A0-FE0F",
            "c": "26A0",
            "j": [
                "exclamation",
                "wip",
                "alert",
                "error",
                "problem",
                "issue"
            ],
            "k": [
                48,
                20
            ],
            "o": 4
        },
        "flag-am": {
            "a": "Armenia Flag",
            "b": "1F1E6-1F1F2",
            "k": [
                0,
                38
            ]
        },
        "leopard": {
            "a": "Leopard",
            "b": "1F406",
            "j": [
                "animal",
                "nature"
            ],
            "k": [
                12,
                36
            ]
        },
        "level_slider": {
            "a": "Level Slider",
            "b": "1F39A-FE0F",
            "c": "1F39A",
            "j": [
                "scale"
            ],
            "k": [
                8,
                42
            ],
            "o": 7
        },
        "horse": {
            "a": "Horse Face",
            "b": "1F434",
            "j": [
                "animal",
                "brown",
                "nature"
            ],
            "k": [
                13,
                30
            ]
        },
        "children_crossing": {
            "a": "Children Crossing",
            "b": "1F6B8",
            "j": [
                "school",
                "warning",
                "danger",
                "sign",
                "driving",
                "yellow-diamond"
            ],
            "k": [
                36,
                28
            ]
        },
        "ribbon": {
            "a": "Ribbon",
            "b": "1F380",
            "j": [
                "decoration",
                "pink",
                "girl",
                "bowtie"
            ],
            "k": [
                8,
                14
            ]
        },
        "national_park": {
            "a": "National Park",
            "b": "1F3DE-FE0F",
            "c": "1F3DE",
            "j": [
                "photo",
                "environment",
                "nature"
            ],
            "k": [
                11,
                47
            ],
            "o": 7
        },
        "control_knobs": {
            "a": "Control Knobs",
            "b": "1F39B-FE0F",
            "c": "1F39B",
            "j": [
                "dial"
            ],
            "k": [
                8,
                43
            ],
            "o": 7
        },
        "kissing": {
            "a": "Kissing Face",
            "b": "1F617",
            "j": [
                "love",
                "like",
                "face",
                "3",
                "valentines",
                "infatuation",
                "kiss"
            ],
            "k": [
                30,
                47
            ]
        },
        "tomato": {
            "a": "Tomato",
            "b": "1F345",
            "j": [
                "fruit",
                "vegetable",
                "nature",
                "food"
            ],
            "k": [
                7,
                7
            ]
        },
        "flag-ao": {
            "a": "Angola Flag",
            "b": "1F1E6-1F1F4",
            "k": [
                0,
                39
            ]
        },
        "stadium": {
            "a": "Stadium",
            "b": "1F3DF-FE0F",
            "c": "1F3DF",
            "j": [
                "photo",
                "place",
                "sports",
                "concert",
                "venue"
            ],
            "k": [
                11,
                48
            ],
            "o": 7
        },
        "flag-aq": {
            "a": "Antarctica Flag",
            "b": "1F1E6-1F1F6",
            "k": [
                0,
                40
            ]
        },
        "gift": {
            "a": "Wrapped Present",
            "b": "1F381",
            "j": [
                "present",
                "birthday",
                "christmas",
                "xmas"
            ],
            "k": [
                8,
                15
            ]
        },
        "no_entry": {
            "a": "No Entry",
            "b": "26D4",
            "j": [
                "limit",
                "security",
                "privacy",
                "bad",
                "denied",
                "stop",
                "circle"
            ],
            "k": [
                48,
                35
            ],
            "o": 5
        },
        "kissing_smiling_eyes": {
            "a": "Kissing Face with Smiling Eyes",
            "b": "1F619",
            "j": [
                "face",
                "affection",
                "valentines",
                "infatuation",
                "kiss"
            ],
            "k": [
                30,
                49
            ]
        },
        "coconut": {
            "a": "Coconut",
            "b": "1F965",
            "j": [
                "fruit",
                "nature",
                "food",
                "palm"
            ],
            "k": [
                42,
                17
            ],
            "o": 10
        },
        "racehorse": {
            "a": "Horse",
            "b": "1F40E",
            "j": [
                "animal",
                "gamble",
                "luck"
            ],
            "k": [
                12,
                44
            ]
        },
        "microphone": {
            "a": "Microphone",
            "b": "1F3A4",
            "j": [
                "sound",
                "music",
                "PA",
                "sing",
                "talkshow"
            ],
            "k": [
                8,
                50
            ]
        },
        "classical_building": {
            "a": "Classical Building",
            "b": "1F3DB-FE0F",
            "c": "1F3DB",
            "j": [
                "art",
                "culture",
                "history"
            ],
            "k": [
                11,
                44
            ],
            "o": 7
        },
        "no_entry_sign": {
            "a": "No Entry Sign",
            "b": "1F6AB",
            "j": [
                "forbid",
                "stop",
                "limit",
                "denied",
                "disallow",
                "circle"
            ],
            "k": [
                35,
                16
            ]
        },
        "reminder_ribbon": {
            "a": "Reminder Ribbon",
            "b": "1F397-FE0F",
            "c": "1F397",
            "j": [
                "sports",
                "cause",
                "support",
                "awareness"
            ],
            "k": [
                8,
                40
            ],
            "o": 7
        },
        "kissing_closed_eyes": {
            "a": "Kissing Face with Closed Eyes",
            "b": "1F61A",
            "j": [
                "face",
                "love",
                "like",
                "affection",
                "valentines",
                "infatuation",
                "kiss"
            ],
            "k": [
                30,
                50
            ]
        },
        "unicorn_face": {
            "a": "Unicorn Face",
            "b": "1F984",
            "k": [
                42,
                28
            ],
            "o": 8
        },
        "flag-ar": {
            "a": "Argentina Flag",
            "b": "1F1E6-1F1F7",
            "k": [
                0,
                41
            ]
        },
        "headphones": {
            "a": "Headphone",
            "b": "1F3A7",
            "j": [
                "music",
                "score",
                "gadgets"
            ],
            "k": [
                9,
                1
            ]
        },
        "avocado": {
            "a": "Avocado",
            "b": "1F951",
            "j": [
                "fruit",
                "food"
            ],
            "k": [
                41,
                49
            ],
            "o": 9
        },
        "relaxed": {
            "a": "White Smiling Face",
            "b": "263A-FE0F",
            "c": "263A",
            "j": [
                "face",
                "blush",
                "massage",
                "happiness"
            ],
            "k": [
                47,
                41
            ],
            "o": 1
        },
        "zebra_face": {
            "a": "Zebra Face",
            "b": "1F993",
            "k": [
                42,
                43
            ],
            "o": 10
        },
        "eggplant": {
            "a": "Aubergine",
            "b": "1F346",
            "j": [
                "vegetable",
                "nature",
                "food",
                "aubergine"
            ],
            "k": [
                7,
                8
            ]
        },
        "radio": {
            "a": "Radio",
            "b": "1F4FB",
            "j": [
                "communication",
                "music",
                "podcast",
                "program"
            ],
            "k": [
                26,
                50
            ]
        },
        "building_construction": {
            "a": "Building Construction",
            "b": "1F3D7-FE0F",
            "c": "1F3D7",
            "j": [
                "wip",
                "working",
                "progress"
            ],
            "k": [
                11,
                40
            ],
            "o": 7
        },
        "flag-as": {
            "a": "American Samoa Flag",
            "b": "1F1E6-1F1F8",
            "k": [
                0,
                42
            ]
        },
        "admission_tickets": {
            "a": "Admission Tickets",
            "b": "1F39F-FE0F",
            "c": "1F39F",
            "k": [
                8,
                45
            ],
            "o": 7
        },
        "no_bicycles": {
            "a": "No Bicycles",
            "b": "1F6B3",
            "j": [
                "cyclist",
                "prohibited",
                "circle"
            ],
            "k": [
                35,
                24
            ]
        },
        "no_smoking": {
            "a": "No Smoking Symbol",
            "b": "1F6AD",
            "j": [
                "cigarette",
                "blue-square",
                "smell",
                "smoke"
            ],
            "k": [
                35,
                18
            ]
        },
        "slightly_smiling_face": {
            "a": "Slightly Smiling Face",
            "b": "1F642",
            "j": [
                "face",
                "smile"
            ],
            "k": [
                31,
                38
            ],
            "l": [
                ":)",
                "(:",
                ":-)"
            ],
            "o": 7
        },
        "flag-at": {
            "a": "Austria Flag",
            "b": "1F1E6-1F1F9",
            "k": [
                0,
                43
            ]
        },
        "ticket": {
            "a": "Ticket",
            "b": "1F3AB",
            "j": [
                "event",
                "concert",
                "pass"
            ],
            "k": [
                9,
                5
            ]
        },
        "saxophone": {
            "a": "Saxophone",
            "b": "1F3B7",
            "j": [
                "music",
                "instrument",
                "jazz",
                "blues"
            ],
            "k": [
                9,
                17
            ]
        },
        "deer": {
            "a": "Deer",
            "b": "1F98C",
            "j": [
                "animal",
                "nature",
                "horns",
                "venison"
            ],
            "k": [
                42,
                36
            ],
            "o": 9
        },
        "house_buildings": {
            "a": "House Buildings",
            "b": "1F3D8-FE0F",
            "c": "1F3D8",
            "k": [
                11,
                41
            ],
            "o": 7
        },
        "potato": {
            "a": "Potato",
            "b": "1F954",
            "j": [
                "food",
                "tuber",
                "vegatable",
                "starch"
            ],
            "k": [
                42,
                0
            ],
            "o": 9
        },
        "guitar": {
            "a": "Guitar",
            "b": "1F3B8",
            "j": [
                "music",
                "instrument"
            ],
            "k": [
                9,
                18
            ]
        },
        "carrot": {
            "a": "Carrot",
            "b": "1F955",
            "j": [
                "vegetable",
                "food",
                "orange"
            ],
            "k": [
                42,
                1
            ],
            "o": 9
        },
        "cityscape": {
            "a": "Cityscape",
            "b": "1F3D9-FE0F",
            "c": "1F3D9",
            "j": [
                "photo",
                "night life",
                "urban"
            ],
            "k": [
                11,
                42
            ],
            "o": 7
        },
        "flag-au": {
            "a": "Australia Flag",
            "b": "1F1E6-1F1FA",
            "k": [
                0,
                44
            ]
        },
        "do_not_litter": {
            "a": "Do Not Litter Symbol",
            "b": "1F6AF",
            "j": [
                "trash",
                "bin",
                "garbage",
                "circle"
            ],
            "k": [
                35,
                20
            ]
        },
        "hugging_face": {
            "a": "Hugging Face",
            "b": "1F917",
            "k": [
                37,
                31
            ],
            "o": 8
        },
        "cow": {
            "a": "Cow Face",
            "b": "1F42E",
            "j": [
                "beef",
                "ox",
                "animal",
                "nature",
                "moo",
                "milk"
            ],
            "k": [
                13,
                24
            ]
        },
        "medal": {
            "a": "Medal",
            "b": "1F396-FE0F",
            "c": "1F396",
            "k": [
                8,
                39
            ],
            "o": 7
        },
        "musical_keyboard": {
            "a": "Musical Keyboard",
            "b": "1F3B9",
            "j": [
                "piano",
                "instrument",
                "compose"
            ],
            "k": [
                9,
                19
            ]
        },
        "corn": {
            "a": "Ear of Maize",
            "b": "1F33D",
            "j": [
                "food",
                "vegetable",
                "plant"
            ],
            "k": [
                6,
                51
            ]
        },
        "derelict_house_building": {
            "a": "Derelict House Building",
            "b": "1F3DA-FE0F",
            "c": "1F3DA",
            "k": [
                11,
                43
            ],
            "o": 7
        },
        "non-potable_water": {
            "a": "Non-Potable Water Symbol",
            "b": "1F6B1",
            "j": [
                "drink",
                "faucet",
                "tap",
                "circle"
            ],
            "k": [
                35,
                22
            ]
        },
        "trophy": {
            "a": "Trophy",
            "b": "1F3C6",
            "j": [
                "win",
                "award",
                "contest",
                "place",
                "ftw",
                "ceremony"
            ],
            "k": [
                10,
                19
            ]
        },
        "flag-aw": {
            "a": "Aruba Flag",
            "b": "1F1E6-1F1FC",
            "k": [
                0,
                45
            ]
        },
        "star-struck": {
            "a": "Grinning Face with Star Eyes",
            "b": "1F929",
            "k": [
                38,
                49
            ],
            "n": [
                "grinning_face_with_star_eyes"
            ],
            "o": 10
        },
        "ox": {
            "a": "Ox",
            "b": "1F402",
            "j": [
                "animal",
                "cow",
                "beef"
            ],
            "k": [
                12,
                32
            ]
        },
        "trumpet": {
            "a": "Trumpet",
            "b": "1F3BA",
            "j": [
                "music",
                "brass"
            ],
            "k": [
                9,
                20
            ]
        },
        "hot_pepper": {
            "a": "Hot Pepper",
            "b": "1F336-FE0F",
            "c": "1F336",
            "j": [
                "food",
                "spicy",
                "chilli",
                "chili"
            ],
            "k": [
                6,
                44
            ],
            "o": 7
        },
        "sports_medal": {
            "a": "Sports Medal",
            "b": "1F3C5",
            "k": [
                10,
                18
            ],
            "o": 7
        },
        "flag-ax": {
            "a": "Åland Islands Flag",
            "b": "1F1E6-1F1FD",
            "k": [
                0,
                46
            ]
        },
        "water_buffalo": {
            "a": "Water Buffalo",
            "b": "1F403",
            "j": [
                "animal",
                "nature",
                "ox",
                "cow"
            ],
            "k": [
                12,
                33
            ]
        },
        "no_pedestrians": {
            "a": "No Pedestrians",
            "b": "1F6B7",
            "j": [
                "rules",
                "crossing",
                "walking",
                "circle"
            ],
            "k": [
                36,
                27
            ]
        },
        "thinking_face": {
            "a": "Thinking Face",
            "b": "1F914",
            "k": [
                37,
                28
            ],
            "o": 8
        },
        "house": {
            "a": "House Building",
            "b": "1F3E0",
            "j": [
                "building",
                "home"
            ],
            "k": [
                11,
                49
            ]
        },
        "no_mobile_phones": {
            "a": "No Mobile Phones",
            "b": "1F4F5",
            "j": [
                "iphone",
                "mute",
                "circle"
            ],
            "k": [
                26,
                44
            ]
        },
        "flag-az": {
            "a": "Azerbaijan Flag",
            "b": "1F1E6-1F1FF",
            "k": [
                0,
                47
            ]
        },
        "first_place_medal": {
            "a": "First Place Medal",
            "b": "1F947",
            "k": [
                41,
                42
            ],
            "o": 9
        },
        "house_with_garden": {
            "a": "House with Garden",
            "b": "1F3E1",
            "j": [
                "home",
                "plant",
                "nature"
            ],
            "k": [
                11,
                50
            ]
        },
        "violin": {
            "a": "Violin",
            "b": "1F3BB",
            "j": [
                "music",
                "instrument",
                "orchestra",
                "symphony"
            ],
            "k": [
                9,
                21
            ]
        },
        "face_with_raised_eyebrow": {
            "a": "Face with One Eyebrow Raised",
            "b": "1F928",
            "k": [
                38,
                48
            ],
            "n": [
                "face_with_one_eyebrow_raised"
            ],
            "o": 10
        },
        "cucumber": {
            "a": "Cucumber",
            "b": "1F952",
            "j": [
                "fruit",
                "food",
                "pickle"
            ],
            "k": [
                41,
                50
            ],
            "o": 9
        },
        "cow2": {
            "a": "Cow",
            "b": "1F404",
            "j": [
                "beef",
                "ox",
                "animal",
                "nature",
                "moo",
                "milk"
            ],
            "k": [
                12,
                34
            ]
        },
        "flag-ba": {
            "a": "Bosnia & Herzegovina Flag",
            "b": "1F1E7-1F1E6",
            "k": [
                0,
                48
            ]
        },
        "pig": {
            "a": "Pig Face",
            "b": "1F437",
            "j": [
                "animal",
                "oink",
                "nature"
            ],
            "k": [
                13,
                33
            ]
        },
        "drum_with_drumsticks": {
            "a": "Drum with Drumsticks",
            "b": "1F941",
            "k": [
                41,
                37
            ],
            "o": 9
        },
        "underage": {
            "a": "No One Under Eighteen Symbol",
            "b": "1F51E",
            "j": [
                "18",
                "drink",
                "pub",
                "night",
                "minor",
                "circle"
            ],
            "k": [
                27,
                32
            ]
        },
        "broccoli": {
            "a": "Broccoli",
            "b": "1F966",
            "j": [
                "fruit",
                "food",
                "vegetable"
            ],
            "k": [
                42,
                18
            ],
            "o": 10
        },
        "office": {
            "a": "Office Building",
            "b": "1F3E2",
            "j": [
                "building",
                "bureau",
                "work"
            ],
            "k": [
                11,
                51
            ]
        },
        "second_place_medal": {
            "a": "Second Place Medal",
            "b": "1F948",
            "k": [
                41,
                43
            ],
            "o": 9
        },
        "neutral_face": {
            "a": "Neutral Face",
            "b": "1F610",
            "j": [
                "indifference",
                "meh",
                ":|",
                "neutral"
            ],
            "k": [
                30,
                40
            ],
            "l": [
                ":|",
                ":-|"
            ]
        },
        "third_place_medal": {
            "a": "Third Place Medal",
            "b": "1F949",
            "k": [
                41,
                44
            ],
            "o": 9
        },
        "mushroom": {
            "a": "Mushroom",
            "b": "1F344",
            "j": [
                "plant",
                "vegetable"
            ],
            "k": [
                7,
                6
            ]
        },
        "flag-bb": {
            "a": "Barbados Flag",
            "b": "1F1E7-1F1E7",
            "k": [
                0,
                49
            ]
        },
        "radioactive_sign": {
            "a": "Radioactive Sign",
            "b": "2622-FE0F",
            "c": "2622",
            "k": [
                47,
                33
            ],
            "o": 1
        },
        "pig2": {
            "a": "Pig",
            "b": "1F416",
            "j": [
                "animal",
                "nature"
            ],
            "k": [
                13,
                0
            ]
        },
        "expressionless": {
            "a": "Expressionless Face",
            "b": "1F611",
            "j": [
                "face",
                "indifferent",
                "-_-",
                "meh",
                "deadpan"
            ],
            "k": [
                30,
                41
            ]
        },
        "iphone": {
            "a": "Mobile Phone",
            "b": "1F4F1",
            "j": [
                "technology",
                "apple",
                "gadgets",
                "dial"
            ],
            "k": [
                26,
                40
            ]
        },
        "post_office": {
            "a": "Japanese Post Office",
            "b": "1F3E3",
            "j": [
                "building",
                "envelope",
                "communication"
            ],
            "k": [
                12,
                0
            ]
        },
        "european_post_office": {
            "a": "European Post Office",
            "b": "1F3E4",
            "j": [
                "building",
                "email"
            ],
            "k": [
                12,
                1
            ]
        },
        "soccer": {
            "a": "Soccer Ball",
            "b": "26BD",
            "j": [
                "sports",
                "football"
            ],
            "k": [
                48,
                26
            ],
            "o": 5
        },
        "boar": {
            "a": "Boar",
            "b": "1F417",
            "j": [
                "animal",
                "nature"
            ],
            "k": [
                13,
                1
            ]
        },
        "peanuts": {
            "a": "Peanuts",
            "b": "1F95C",
            "j": [
                "food",
                "nut"
            ],
            "k": [
                42,
                8
            ],
            "o": 9
        },
        "calling": {
            "a": "Mobile Phone with Rightwards Arrow at Left",
            "b": "1F4F2",
            "j": [
                "iphone",
                "incoming"
            ],
            "k": [
                26,
                41
            ]
        },
        "biohazard_sign": {
            "a": "Biohazard Sign",
            "b": "2623-FE0F",
            "c": "2623",
            "k": [
                47,
                34
            ],
            "o": 1
        },
        "flag-bd": {
            "a": "Bangladesh Flag",
            "b": "1F1E7-1F1E9",
            "k": [
                0,
                50
            ]
        },
        "no_mouth": {
            "a": "Face Without Mouth",
            "b": "1F636",
            "j": [
                "face",
                "hellokitty"
            ],
            "k": [
                31,
                26
            ]
        },
        "face_with_rolling_eyes": {
            "a": "Face with Rolling Eyes",
            "b": "1F644",
            "k": [
                31,
                40
            ],
            "o": 8
        },
        "phone": {
            "a": "Black Telephone",
            "b": "260E-FE0F",
            "c": "260E",
            "j": [
                "technology",
                "communication",
                "dial",
                "telephone"
            ],
            "k": [
                47,
                21
            ],
            "n": [
                "telephone"
            ],
            "o": 1
        },
        "pig_nose": {
            "a": "Pig Nose",
            "b": "1F43D",
            "j": [
                "animal",
                "oink"
            ],
            "k": [
                13,
                39
            ]
        },
        "chestnut": {
            "a": "Chestnut",
            "b": "1F330",
            "j": [
                "food",
                "squirrel"
            ],
            "k": [
                6,
                38
            ]
        },
        "arrow_up": {
            "a": "Upwards Black Arrow",
            "b": "2B06-FE0F",
            "c": "2B06",
            "j": [
                "blue-square",
                "continue",
                "top",
                "direction"
            ],
            "k": [
                50,
                18
            ],
            "o": 4
        },
        "hospital": {
            "a": "Hospital",
            "b": "1F3E5",
            "j": [
                "building",
                "health",
                "surgery",
                "doctor"
            ],
            "k": [
                12,
                2
            ]
        },
        "flag-be": {
            "a": "Belgium Flag",
            "b": "1F1E7-1F1EA",
            "k": [
                0,
                51
            ]
        },
        "baseball": {
            "a": "Baseball",
            "b": "26BE",
            "j": [
                "sports",
                "balls"
            ],
            "k": [
                48,
                27
            ],
            "o": 5
        },
        "smirk": {
            "a": "Smirking Face",
            "b": "1F60F",
            "j": [
                "face",
                "smile",
                "mean",
                "prank",
                "smug",
                "sarcasm"
            ],
            "k": [
                30,
                39
            ]
        },
        "arrow_upper_right": {
            "a": "North East Arrow",
            "b": "2197-FE0F",
            "c": "2197",
            "j": [
                "blue-square",
                "point",
                "direction",
                "diagonal",
                "northeast"
            ],
            "k": [
                46,
                36
            ],
            "o": 1
        },
        "flag-bf": {
            "a": "Burkina Faso Flag",
            "b": "1F1E7-1F1EB",
            "k": [
                1,
                0
            ]
        },
        "basketball": {
            "a": "Basketball and Hoop",
            "b": "1F3C0",
            "j": [
                "sports",
                "balls",
                "NBA"
            ],
            "k": [
                9,
                26
            ]
        },
        "ram": {
            "a": "Ram",
            "b": "1F40F",
            "j": [
                "animal",
                "sheep",
                "nature"
            ],
            "k": [
                12,
                45
            ]
        },
        "bank": {
            "a": "Bank",
            "b": "1F3E6",
            "j": [
                "building",
                "money",
                "sales",
                "cash",
                "business",
                "enterprise"
            ],
            "k": [
                12,
                3
            ]
        },
        "bread": {
            "a": "Bread",
            "b": "1F35E",
            "j": [
                "food",
                "wheat",
                "breakfast",
                "toast"
            ],
            "k": [
                7,
                32
            ]
        },
        "telephone_receiver": {
            "a": "Telephone Receiver",
            "b": "1F4DE",
            "j": [
                "technology",
                "communication",
                "dial"
            ],
            "k": [
                26,
                21
            ]
        },
        "croissant": {
            "a": "Croissant",
            "b": "1F950",
            "j": [
                "food",
                "bread",
                "french"
            ],
            "k": [
                41,
                48
            ],
            "o": 9
        },
        "pager": {
            "a": "Pager",
            "b": "1F4DF",
            "j": [
                "bbcall",
                "oldschool",
                "90s"
            ],
            "k": [
                26,
                22
            ]
        },
        "sheep": {
            "a": "Sheep",
            "b": "1F411",
            "j": [
                "animal",
                "nature",
                "wool",
                "shipit"
            ],
            "k": [
                12,
                47
            ]
        },
        "arrow_right": {
            "a": "Black Rightwards Arrow",
            "b": "27A1-FE0F",
            "c": "27A1",
            "j": [
                "blue-square",
                "next"
            ],
            "k": [
                50,
                12
            ],
            "o": 1
        },
        "persevere": {
            "a": "Persevering Face",
            "b": "1F623",
            "j": [
                "face",
                "sick",
                "no",
                "upset",
                "oops"
            ],
            "k": [
                31,
                7
            ]
        },
        "flag-bg": {
            "a": "Bulgaria Flag",
            "b": "1F1E7-1F1EC",
            "k": [
                1,
                1
            ]
        },
        "volleyball": {
            "a": "Volleyball",
            "b": "1F3D0",
            "j": [
                "sports",
                "balls"
            ],
            "k": [
                11,
                33
            ],
            "o": 8
        },
        "hotel": {
            "a": "Hotel",
            "b": "1F3E8",
            "j": [
                "building",
                "accomodation",
                "checkin"
            ],
            "k": [
                12,
                5
            ]
        },
        "arrow_lower_right": {
            "a": "South East Arrow",
            "b": "2198-FE0F",
            "c": "2198",
            "j": [
                "blue-square",
                "direction",
                "diagonal",
                "southeast"
            ],
            "k": [
                46,
                37
            ],
            "o": 1
        },
        "goat": {
            "a": "Goat",
            "b": "1F410",
            "j": [
                "animal",
                "nature"
            ],
            "k": [
                12,
                46
            ]
        },
        "flag-bh": {
            "a": "Bahrain Flag",
            "b": "1F1E7-1F1ED",
            "k": [
                1,
                2
            ]
        },
        "love_hotel": {
            "a": "Love Hotel",
            "b": "1F3E9",
            "j": [
                "like",
                "affection",
                "dating"
            ],
            "k": [
                12,
                6
            ]
        },
        "disappointed_relieved": {
            "a": "Disappointed but Relieved Face",
            "b": "1F625",
            "j": [
                "face",
                "phew",
                "sweat",
                "nervous"
            ],
            "k": [
                31,
                9
            ]
        },
        "baguette_bread": {
            "a": "Baguette Bread",
            "b": "1F956",
            "j": [
                "food",
                "bread",
                "french"
            ],
            "k": [
                42,
                2
            ],
            "o": 9
        },
        "football": {
            "a": "American Football",
            "b": "1F3C8",
            "j": [
                "sports",
                "balls",
                "NFL"
            ],
            "k": [
                10,
                26
            ]
        },
        "fax": {
            "a": "Fax Machine",
            "b": "1F4E0",
            "j": [
                "communication",
                "technology"
            ],
            "k": [
                26,
                23
            ]
        },
        "convenience_store": {
            "a": "Convenience Store",
            "b": "1F3EA",
            "j": [
                "building",
                "shopping",
                "groceries"
            ],
            "k": [
                12,
                7
            ]
        },
        "dromedary_camel": {
            "a": "Dromedary Camel",
            "b": "1F42A",
            "j": [
                "animal",
                "hot",
                "desert",
                "hump"
            ],
            "k": [
                13,
                20
            ]
        },
        "arrow_down": {
            "a": "Downwards Black Arrow",
            "b": "2B07-FE0F",
            "c": "2B07",
            "j": [
                "blue-square",
                "direction",
                "bottom"
            ],
            "k": [
                50,
                19
            ],
            "o": 4
        },
        "battery": {
            "a": "Battery",
            "b": "1F50B",
            "j": [
                "power",
                "energy",
                "sustain"
            ],
            "k": [
                27,
                13
            ]
        },
        "rugby_football": {
            "a": "Rugby Football",
            "b": "1F3C9",
            "j": [
                "sports",
                "team"
            ],
            "k": [
                10,
                27
            ]
        },
        "pretzel": {
            "a": "Pretzel",
            "b": "1F968",
            "j": [
                "food",
                "bread",
                "twisted"
            ],
            "k": [
                42,
                20
            ],
            "o": 10
        },
        "open_mouth": {
            "a": "Face with Open Mouth",
            "b": "1F62E",
            "j": [
                "face",
                "surprise",
                "impressed",
                "wow",
                "whoa",
                ":O"
            ],
            "k": [
                31,
                18
            ],
            "l": [
                ":o",
                ":-o",
                ":O",
                ":-O"
            ]
        },
        "flag-bi": {
            "a": "Burundi Flag",
            "b": "1F1E7-1F1EE",
            "k": [
                1,
                3
            ]
        },
        "flag-bj": {
            "a": "Benin Flag",
            "b": "1F1E7-1F1EF",
            "k": [
                1,
                4
            ]
        },
        "pancakes": {
            "a": "Pancakes",
            "b": "1F95E",
            "j": [
                "food",
                "breakfast",
                "flapjacks",
                "hotcakes"
            ],
            "k": [
                42,
                10
            ],
            "o": 9
        },
        "school": {
            "a": "School",
            "b": "1F3EB",
            "j": [
                "building",
                "student",
                "education",
                "learn",
                "teach"
            ],
            "k": [
                12,
                8
            ]
        },
        "tennis": {
            "a": "Tennis Racquet and Ball",
            "b": "1F3BE",
            "j": [
                "sports",
                "balls",
                "green"
            ],
            "k": [
                9,
                24
            ]
        },
        "zipper_mouth_face": {
            "a": "Zipper-Mouth Face",
            "b": "1F910",
            "j": [
                "face",
                "sealed",
                "zipper",
                "secret"
            ],
            "k": [
                37,
                24
            ],
            "o": 8
        },
        "camel": {
            "a": "Bactrian Camel",
            "b": "1F42B",
            "j": [
                "animal",
                "nature",
                "hot",
                "desert",
                "hump"
            ],
            "k": [
                13,
                21
            ]
        },
        "arrow_lower_left": {
            "a": "South West Arrow",
            "b": "2199-FE0F",
            "c": "2199",
            "j": [
                "blue-square",
                "direction",
                "diagonal",
                "southwest"
            ],
            "k": [
                46,
                38
            ],
            "o": 1
        },
        "electric_plug": {
            "a": "Electric Plug",
            "b": "1F50C",
            "j": [
                "charger",
                "power"
            ],
            "k": [
                27,
                14
            ]
        },
        "cheese_wedge": {
            "a": "Cheese Wedge",
            "b": "1F9C0",
            "k": [
                42,
                48
            ],
            "o": 8
        },
        "hushed": {
            "a": "Hushed Face",
            "b": "1F62F",
            "j": [
                "face",
                "woo",
                "shh"
            ],
            "k": [
                31,
                19
            ]
        },
        "computer": {
            "a": "Personal Computer",
            "b": "1F4BB",
            "j": [
                "technology",
                "laptop",
                "screen",
                "display",
                "monitor"
            ],
            "k": [
                25,
                38
            ]
        },
        "giraffe_face": {
            "a": "Giraffe Face",
            "b": "1F992",
            "k": [
                42,
                42
            ],
            "o": 10
        },
        "8ball": {
            "a": "Billiards",
            "b": "1F3B1",
            "j": [
                "pool",
                "hobby",
                "game",
                "luck",
                "magic"
            ],
            "k": [
                9,
                11
            ]
        },
        "flag-bl": {
            "a": "St. Barthélemy Flag",
            "b": "1F1E7-1F1F1",
            "k": [
                1,
                5
            ]
        },
        "arrow_left": {
            "a": "Leftwards Black Arrow",
            "b": "2B05-FE0F",
            "c": "2B05",
            "j": [
                "blue-square",
                "previous",
                "back"
            ],
            "k": [
                50,
                17
            ],
            "o": 4
        },
        "department_store": {
            "a": "Department Store",
            "b": "1F3EC",
            "j": [
                "building",
                "shopping",
                "mall"
            ],
            "k": [
                12,
                9
            ]
        },
        "meat_on_bone": {
            "a": "Meat on Bone",
            "b": "1F356",
            "j": [
                "good",
                "food",
                "drumstick"
            ],
            "k": [
                7,
                24
            ]
        },
        "arrow_upper_left": {
            "a": "North West Arrow",
            "b": "2196-FE0F",
            "c": "2196",
            "j": [
                "blue-square",
                "point",
                "direction",
                "diagonal",
                "northwest"
            ],
            "k": [
                46,
                35
            ],
            "o": 1
        },
        "flag-bm": {
            "a": "Bermuda Flag",
            "b": "1F1E7-1F1F2",
            "k": [
                1,
                6
            ]
        },
        "sleepy": {
            "a": "Sleepy Face",
            "b": "1F62A",
            "j": [
                "face",
                "tired",
                "rest",
                "nap"
            ],
            "k": [
                31,
                14
            ]
        },
        "bowling": {
            "a": "Bowling",
            "b": "1F3B3",
            "j": [
                "sports",
                "fun",
                "play"
            ],
            "k": [
                9,
                13
            ]
        },
        "factory": {
            "a": "Factory",
            "b": "1F3ED",
            "j": [
                "building",
                "industry",
                "pollution",
                "smoke"
            ],
            "k": [
                12,
                10
            ]
        },
        "desktop_computer": {
            "a": "Desktop Computer",
            "b": "1F5A5-FE0F",
            "c": "1F5A5",
            "j": [
                "technology",
                "computing",
                "screen"
            ],
            "k": [
                29,
                51
            ],
            "o": 7
        },
        "elephant": {
            "a": "Elephant",
            "b": "1F418",
            "j": [
                "animal",
                "nature",
                "nose",
                "th",
                "circus"
            ],
            "k": [
                13,
                2
            ]
        },
        "rhinoceros": {
            "a": "Rhinoceros",
            "b": "1F98F",
            "j": [
                "animal",
                "nature",
                "horn"
            ],
            "k": [
                42,
                39
            ],
            "o": 9
        },
        "arrow_up_down": {
            "a": "Up Down Arrow",
            "b": "2195-FE0F",
            "c": "2195",
            "j": [
                "blue-square",
                "direction",
                "way",
                "vertical"
            ],
            "k": [
                46,
                34
            ],
            "o": 1
        },
        "cricket_bat_and_ball": {
            "a": "Cricket Bat and Ball",
            "b": "1F3CF",
            "k": [
                11,
                32
            ],
            "o": 8
        },
        "printer": {
            "a": "Printer",
            "b": "1F5A8-FE0F",
            "c": "1F5A8",
            "j": [
                "paper",
                "ink"
            ],
            "k": [
                30,
                0
            ],
            "o": 7
        },
        "poultry_leg": {
            "a": "Poultry Leg",
            "b": "1F357",
            "j": [
                "food",
                "meat",
                "drumstick",
                "bird",
                "chicken",
                "turkey"
            ],
            "k": [
                7,
                25
            ]
        },
        "tired_face": {
            "a": "Tired Face",
            "b": "1F62B",
            "j": [
                "sick",
                "whine",
                "upset",
                "frustrated"
            ],
            "k": [
                31,
                15
            ]
        },
        "japanese_castle": {
            "a": "Japanese Castle",
            "b": "1F3EF",
            "j": [
                "photo",
                "building"
            ],
            "k": [
                12,
                12
            ]
        },
        "flag-bn": {
            "a": "Brunei Flag",
            "b": "1F1E7-1F1F3",
            "k": [
                1,
                7
            ]
        },
        "field_hockey_stick_and_ball": {
            "a": "Field Hockey Stick and Ball",
            "b": "1F3D1",
            "k": [
                11,
                34
            ],
            "o": 8
        },
        "sleeping": {
            "a": "Sleeping Face",
            "b": "1F634",
            "j": [
                "face",
                "tired",
                "sleepy",
                "night",
                "zzz"
            ],
            "k": [
                31,
                24
            ]
        },
        "left_right_arrow": {
            "a": "Left Right Arrow",
            "b": "2194-FE0F",
            "c": "2194",
            "j": [
                "shape",
                "direction",
                "horizontal",
                "sideways"
            ],
            "k": [
                46,
                33
            ],
            "o": 1
        },
        "keyboard": {
            "a": "Keyboard",
            "b": "2328-FE0F",
            "c": "2328",
            "j": [
                "technology",
                "computer",
                "type",
                "input",
                "text"
            ],
            "k": [
                46,
                43
            ],
            "o": 1
        },
        "european_castle": {
            "a": "European Castle",
            "b": "1F3F0",
            "j": [
                "building",
                "royalty",
                "history"
            ],
            "k": [
                12,
                13
            ]
        },
        "mouse": {
            "a": "Mouse Face",
            "b": "1F42D",
            "j": [
                "animal",
                "nature",
                "cheese_wedge",
                "rodent"
            ],
            "k": [
                13,
                23
            ]
        },
        "flag-bo": {
            "a": "Bolivia Flag",
            "b": "1F1E7-1F1F4",
            "k": [
                1,
                8
            ]
        },
        "cut_of_meat": {
            "a": "Cut of Meat",
            "b": "1F969",
            "k": [
                42,
                21
            ],
            "o": 10
        },
        "ice_hockey_stick_and_puck": {
            "a": "Ice Hockey Stick and Puck",
            "b": "1F3D2",
            "k": [
                11,
                35
            ],
            "o": 8
        },
        "mouse2": {
            "a": "Mouse",
            "b": "1F401",
            "j": [
                "animal",
                "nature",
                "rodent"
            ],
            "k": [
                12,
                31
            ]
        },
        "three_button_mouse": {
            "a": "Three Button Mouse",
            "b": "1F5B1-FE0F",
            "c": "1F5B1",
            "k": [
                30,
                1
            ],
            "o": 7
        },
        "leftwards_arrow_with_hook": {
            "a": "Leftwards Arrow with Hook",
            "b": "21A9-FE0F",
            "c": "21A9",
            "j": [
                "back",
                "return",
                "blue-square",
                "undo",
                "enter"
            ],
            "k": [
                46,
                39
            ],
            "o": 1
        },
        "bacon": {
            "a": "Bacon",
            "b": "1F953",
            "j": [
                "food",
                "breakfast",
                "pork",
                "pig",
                "meat"
            ],
            "k": [
                41,
                51
            ],
            "o": 9
        },
        "relieved": {
            "a": "Relieved Face",
            "b": "1F60C",
            "j": [
                "face",
                "relaxed",
                "phew",
                "massage",
                "happiness"
            ],
            "k": [
                30,
                36
            ]
        },
        "flag-bq": {
            "a": "Caribbean Netherlands Flag",
            "b": "1F1E7-1F1F6",
            "k": [
                1,
                9
            ]
        },
        "wedding": {
            "a": "Wedding",
            "b": "1F492",
            "j": [
                "love",
                "like",
                "affection",
                "couple",
                "marriage",
                "bride",
                "groom"
            ],
            "k": [
                24,
                44
            ]
        },
        "tokyo_tower": {
            "a": "Tokyo Tower",
            "b": "1F5FC",
            "j": [
                "photo",
                "japanese"
            ],
            "k": [
                30,
                20
            ]
        },
        "arrow_right_hook": {
            "a": "Rightwards Arrow with Hook",
            "b": "21AA-FE0F",
            "c": "21AA",
            "j": [
                "blue-square",
                "return",
                "rotate",
                "direction"
            ],
            "k": [
                46,
                40
            ],
            "o": 1
        },
        "hamburger": {
            "a": "Hamburger",
            "b": "1F354",
            "j": [
                "meat",
                "fast food",
                "beef",
                "cheeseburger",
                "mcdonalds",
                "burger king"
            ],
            "k": [
                7,
                22
            ]
        },
        "stuck_out_tongue": {
            "a": "Face with Stuck-out Tongue",
            "b": "1F61B",
            "j": [
                "face",
                "prank",
                "childish",
                "playful",
                "mischievous",
                "smile",
                "tongue"
            ],
            "k": [
                30,
                51
            ],
            "l": [
                ":p",
                ":-p",
                ":P",
                ":-P",
                ":b",
                ":-b"
            ],
            "m": ":p"
        },
        "trackball": {
            "a": "Trackball",
            "b": "1F5B2-FE0F",
            "c": "1F5B2",
            "j": [
                "technology",
                "trackpad"
            ],
            "k": [
                30,
                2
            ],
            "o": 7
        },
        "flag-br": {
            "a": "Brazil Flag",
            "b": "1F1E7-1F1F7",
            "k": [
                1,
                10
            ]
        },
        "rat": {
            "a": "Rat",
            "b": "1F400",
            "j": [
                "animal",
                "mouse",
                "rodent"
            ],
            "k": [
                12,
                30
            ]
        },
        "table_tennis_paddle_and_ball": {
            "a": "Table Tennis Paddle and Ball",
            "b": "1F3D3",
            "k": [
                11,
                36
            ],
            "o": 8
        },
        "minidisc": {
            "a": "Minidisc",
            "b": "1F4BD",
            "j": [
                "technology",
                "record",
                "data",
                "disk",
                "90s"
            ],
            "k": [
                25,
                40
            ]
        },
        "stuck_out_tongue_winking_eye": {
            "a": "Face with Stuck-out Tongue and Winking Eye",
            "b": "1F61C",
            "j": [
                "face",
                "prank",
                "childish",
                "playful",
                "mischievous",
                "smile",
                "wink",
                "tongue"
            ],
            "k": [
                31,
                0
            ],
            "l": [
                ";p",
                ";-p",
                ";b",
                ";-b",
                ";P",
                ";-P"
            ],
            "m": ";p"
        },
        "fries": {
            "a": "French Fries",
            "b": "1F35F",
            "j": [
                "chips",
                "snack",
                "fast food"
            ],
            "k": [
                7,
                33
            ]
        },
        "badminton_racquet_and_shuttlecock": {
            "a": "Badminton Racquet and Shuttlecock",
            "b": "1F3F8",
            "k": [
                12,
                22
            ],
            "o": 8
        },
        "statue_of_liberty": {
            "a": "Statue of Liberty",
            "b": "1F5FD",
            "j": [
                "american",
                "newyork"
            ],
            "k": [
                30,
                21
            ]
        },
        "flag-bs": {
            "a": "Bahamas Flag",
            "b": "1F1E7-1F1F8",
            "k": [
                1,
                11
            ]
        },
        "arrow_heading_up": {
            "a": "Arrow Pointing Rightwards Then Curving Upwards",
            "b": "2934-FE0F",
            "c": "2934",
            "j": [
                "blue-square",
                "direction",
                "top"
            ],
            "k": [
                50,
                15
            ],
            "o": 3
        },
        "hamster": {
            "a": "Hamster Face",
            "b": "1F439",
            "j": [
                "animal",
                "nature"
            ],
            "k": [
                13,
                35
            ]
        },
        "stuck_out_tongue_closed_eyes": {
            "a": "Face with Stuck-out Tongue and Tightly-Closed Eyes",
            "b": "1F61D",
            "j": [
                "face",
                "prank",
                "playful",
                "mischievous",
                "smile",
                "tongue"
            ],
            "k": [
                31,
                1
            ]
        },
        "pizza": {
            "a": "Slice of Pizza",
            "b": "1F355",
            "j": [
                "food",
                "party"
            ],
            "k": [
                7,
                23
            ]
        },
        "boxing_glove": {
            "a": "Boxing Glove",
            "b": "1F94A",
            "j": [
                "sports",
                "fighting"
            ],
            "k": [
                41,
                45
            ],
            "o": 9
        },
        "floppy_disk": {
            "a": "Floppy Disk",
            "b": "1F4BE",
            "j": [
                "oldschool",
                "technology",
                "save",
                "90s",
                "80s"
            ],
            "k": [
                25,
                41
            ]
        },
        "arrow_heading_down": {
            "a": "Arrow Pointing Rightwards Then Curving Downwards",
            "b": "2935-FE0F",
            "c": "2935",
            "j": [
                "blue-square",
                "direction",
                "bottom"
            ],
            "k": [
                50,
                16
            ],
            "o": 3
        },
        "flag-bt": {
            "a": "Bhutan Flag",
            "b": "1F1E7-1F1F9",
            "k": [
                1,
                12
            ]
        },
        "rabbit": {
            "a": "Rabbit Face",
            "b": "1F430",
            "j": [
                "animal",
                "nature",
                "pet",
                "spring",
                "magic",
                "bunny"
            ],
            "k": [
                13,
                26
            ]
        },
        "church": {
            "a": "Church",
            "b": "26EA",
            "j": [
                "building",
                "religion",
                "christ"
            ],
            "k": [
                48,
                37
            ],
            "o": 5
        },
        "drooling_face": {
            "a": "Drooling Face",
            "b": "1F924",
            "j": [
                "face"
            ],
            "k": [
                38,
                27
            ],
            "o": 9
        },
        "flag-bv": {
            "a": "Bouvet Island Flag",
            "b": "1F1E7-1F1FB",
            "k": [
                1,
                13
            ]
        },
        "mosque": {
            "a": "Mosque",
            "b": "1F54C",
            "j": [
                "islam",
                "worship",
                "minaret"
            ],
            "k": [
                28,
                15
            ],
            "o": 8
        },
        "rabbit2": {
            "a": "Rabbit",
            "b": "1F407",
            "j": [
                "animal",
                "nature",
                "pet",
                "magic",
                "spring"
            ],
            "k": [
                12,
                37
            ]
        },
        "hotdog": {
            "a": "Hot Dog",
            "b": "1F32D",
            "j": [
                "food",
                "frankfurter"
            ],
            "k": [
                6,
                35
            ],
            "o": 8
        },
        "martial_arts_uniform": {
            "a": "Martial Arts Uniform",
            "b": "1F94B",
            "j": [
                "judo",
                "karate",
                "taekwondo"
            ],
            "k": [
                41,
                46
            ],
            "o": 9
        },
        "arrows_clockwise": {
            "a": "Clockwise Downwards and Upwards Open Circle Arrows",
            "b": "1F503",
            "j": [
                "sync",
                "cycle",
                "round",
                "repeat"
            ],
            "k": [
                27,
                5
            ]
        },
        "cd": {
            "a": "Optical Disc",
            "b": "1F4BF",
            "j": [
                "technology",
                "dvd",
                "disk",
                "disc",
                "90s"
            ],
            "k": [
                25,
                42
            ]
        },
        "arrows_counterclockwise": {
            "a": "Anticlockwise Downwards and Upwards Open Circle Arrows",
            "b": "1F504",
            "j": [
                "blue-square",
                "sync",
                "cycle"
            ],
            "k": [
                27,
                6
            ]
        },
        "sandwich": {
            "a": "Sandwich",
            "b": "1F96A",
            "j": [
                "food",
                "lunch",
                "bread"
            ],
            "k": [
                42,
                22
            ],
            "o": 10
        },
        "chipmunk": {
            "a": "Chipmunk",
            "b": "1F43F-FE0F",
            "c": "1F43F",
            "j": [
                "animal",
                "nature",
                "rodent",
                "squirrel"
            ],
            "k": [
                13,
                41
            ],
            "o": 7
        },
        "synagogue": {
            "a": "Synagogue",
            "b": "1F54D",
            "j": [
                "judaism",
                "worship",
                "temple",
                "jewish"
            ],
            "k": [
                28,
                16
            ],
            "o": 8
        },
        "unamused": {
            "a": "Unamused Face",
            "b": "1F612",
            "j": [
                "indifference",
                "bored",
                "straight face",
                "serious",
                "sarcasm"
            ],
            "k": [
                30,
                42
            ],
            "m": ":("
        },
        "goal_net": {
            "a": "Goal Net",
            "b": "1F945",
            "j": [
                "sports"
            ],
            "k": [
                41,
                41
            ],
            "o": 9
        },
        "flag-bw": {
            "a": "Botswana Flag",
            "b": "1F1E7-1F1FC",
            "k": [
                1,
                14
            ]
        },
        "dvd": {
            "a": "Dvd",
            "b": "1F4C0",
            "j": [
                "cd",
                "disk",
                "disc"
            ],
            "k": [
                25,
                43
            ]
        },
        "hedgehog": {
            "a": "Hedgehog",
            "b": "1F994",
            "j": [
                "animal",
                "nature",
                "spiny"
            ],
            "k": [
                42,
                44
            ],
            "o": 10
        },
        "dart": {
            "a": "Direct Hit",
            "b": "1F3AF",
            "j": [
                "game",
                "play",
                "bar",
                "target",
                "bullseye"
            ],
            "k": [
                9,
                9
            ]
        },
        "taco": {
            "a": "Taco",
            "b": "1F32E",
            "j": [
                "food",
                "mexican"
            ],
            "k": [
                6,
                36
            ],
            "o": 8
        },
        "back": {
            "a": "Back with Leftwards Arrow Above",
            "b": "1F519",
            "j": [
                "arrow",
                "words",
                "return"
            ],
            "k": [
                27,
                27
            ]
        },
        "flag-by": {
            "a": "Belarus Flag",
            "b": "1F1E7-1F1FE",
            "k": [
                1,
                15
            ]
        },
        "shinto_shrine": {
            "a": "Shinto Shrine",
            "b": "26E9-FE0F",
            "c": "26E9",
            "j": [
                "temple",
                "japan",
                "kyoto"
            ],
            "k": [
                48,
                36
            ],
            "o": 5
        },
        "movie_camera": {
            "a": "Movie Camera",
            "b": "1F3A5",
            "j": [
                "film",
                "record"
            ],
            "k": [
                8,
                51
            ]
        },
        "sweat": {
            "a": "Face with Cold Sweat",
            "b": "1F613",
            "j": [
                "face",
                "hot",
                "sad",
                "tired",
                "exercise"
            ],
            "k": [
                30,
                43
            ]
        },
        "burrito": {
            "a": "Burrito",
            "b": "1F32F",
            "j": [
                "food",
                "mexican"
            ],
            "k": [
                6,
                37
            ],
            "o": 8
        },
        "flag-bz": {
            "a": "Belize Flag",
            "b": "1F1E7-1F1FF",
            "k": [
                1,
                16
            ]
        },
        "pensive": {
            "a": "Pensive Face",
            "b": "1F614",
            "j": [
                "face",
                "sad",
                "depressed",
                "upset"
            ],
            "k": [
                30,
                44
            ]
        },
        "kaaba": {
            "a": "Kaaba",
            "b": "1F54B",
            "j": [
                "mecca",
                "mosque",
                "islam"
            ],
            "k": [
                28,
                14
            ],
            "o": 8
        },
        "film_frames": {
            "a": "Film Frames",
            "b": "1F39E-FE0F",
            "c": "1F39E",
            "k": [
                8,
                44
            ],
            "o": 7
        },
        "bat": {
            "a": "Bat",
            "b": "1F987",
            "j": [
                "animal",
                "nature",
                "blind",
                "vampire"
            ],
            "k": [
                42,
                31
            ],
            "o": 9
        },
        "golf": {
            "a": "Flag in Hole",
            "b": "26F3",
            "j": [
                "sports",
                "business",
                "flag",
                "hole",
                "summer"
            ],
            "k": [
                48,
                41
            ],
            "o": 5
        },
        "end": {
            "a": "End with Leftwards Arrow Above",
            "b": "1F51A",
            "j": [
                "words",
                "arrow"
            ],
            "k": [
                27,
                28
            ]
        },
        "film_projector": {
            "a": "Film Projector",
            "b": "1F4FD-FE0F",
            "c": "1F4FD",
            "j": [
                "video",
                "tape",
                "record",
                "movie"
            ],
            "k": [
                27,
                0
            ],
            "o": 7
        },
        "bear": {
            "a": "Bear Face",
            "b": "1F43B",
            "j": [
                "animal",
                "nature",
                "wild"
            ],
            "k": [
                13,
                37
            ]
        },
        "ice_skate": {
            "a": "Ice Skate",
            "b": "26F8-FE0F",
            "c": "26F8",
            "j": [
                "sports"
            ],
            "k": [
                48,
                45
            ],
            "o": 5
        },
        "fountain": {
            "a": "Fountain",
            "b": "26F2",
            "j": [
                "photo",
                "summer",
                "water",
                "fresh"
            ],
            "k": [
                48,
                40
            ],
            "o": 5
        },
        "confused": {
            "a": "Confused Face",
            "b": "1F615",
            "j": [
                "face",
                "indifference",
                "huh",
                "weird",
                "hmmm",
                ":/"
            ],
            "k": [
                30,
                45
            ],
            "l": [
                ":\\",
                ":-\\",
                ":/",
                ":-/"
            ]
        },
        "flag-ca": {
            "a": "Canada Flag",
            "b": "1F1E8-1F1E6",
            "k": [
                1,
                17
            ]
        },
        "on": {
            "a": "On with Exclamation Mark with Left Right Arrow Above",
            "b": "1F51B",
            "j": [
                "arrow",
                "words"
            ],
            "k": [
                27,
                29
            ]
        },
        "stuffed_flatbread": {
            "a": "Stuffed Flatbread",
            "b": "1F959",
            "j": [
                "food",
                "flatbread",
                "stuffed",
                "gyro"
            ],
            "k": [
                42,
                5
            ],
            "o": 9
        },
        "soon": {
            "a": "Soon with Rightwards Arrow Above",
            "b": "1F51C",
            "j": [
                "arrow",
                "words"
            ],
            "k": [
                27,
                30
            ]
        },
        "upside_down_face": {
            "a": "Upside-Down Face",
            "b": "1F643",
            "j": [
                "face",
                "flipped",
                "silly",
                "smile"
            ],
            "k": [
                31,
                39
            ],
            "o": 8
        },
        "fishing_pole_and_fish": {
            "a": "Fishing Pole and Fish",
            "b": "1F3A3",
            "j": [
                "food",
                "hobby",
                "summer"
            ],
            "k": [
                8,
                49
            ]
        },
        "tent": {
            "a": "Tent",
            "b": "26FA",
            "j": [
                "photo",
                "camping",
                "outdoors"
            ],
            "k": [
                49,
                12
            ],
            "o": 5
        },
        "clapper": {
            "a": "Clapper Board",
            "b": "1F3AC",
            "j": [
                "movie",
                "film",
                "record"
            ],
            "k": [
                9,
                6
            ]
        },
        "egg": {
            "a": "Egg",
            "b": "1F95A",
            "j": [
                "food",
                "chicken",
                "breakfast"
            ],
            "k": [
                42,
                6
            ],
            "o": 9
        },
        "flag-cc": {
            "a": "Cocos (keeling) Islands Flag",
            "b": "1F1E8-1F1E8",
            "k": [
                1,
                18
            ]
        },
        "koala": {
            "a": "Koala",
            "b": "1F428",
            "j": [
                "animal",
                "nature"
            ],
            "k": [
                13,
                18
            ]
        },
        "foggy": {
            "a": "Foggy",
            "b": "1F301",
            "j": [
                "photo",
                "mountain"
            ],
            "k": [
                5,
                45
            ]
        },
        "tv": {
            "a": "Television",
            "b": "1F4FA",
            "j": [
                "technology",
                "program",
                "oldschool",
                "show",
                "television"
            ],
            "k": [
                26,
                49
            ]
        },
        "panda_face": {
            "a": "Panda Face",
            "b": "1F43C",
            "j": [
                "animal",
                "nature",
                "panda"
            ],
            "k": [
                13,
                38
            ]
        },
        "fried_egg": {
            "a": "Cooking",
            "b": "1F373",
            "j": [
                "food",
                "breakfast",
                "kitchen",
                "egg"
            ],
            "k": [
                8,
                1
            ],
            "n": [
                "cooking"
            ]
        },
        "top": {
            "a": "Top with Upwards Arrow Above",
            "b": "1F51D",
            "j": [
                "words",
                "blue-square"
            ],
            "k": [
                27,
                31
            ]
        },
        "flag-cd": {
            "a": "Congo - Kinshasa Flag",
            "b": "1F1E8-1F1E9",
            "k": [
                1,
                19
            ]
        },
        "money_mouth_face": {
            "a": "Money-Mouth Face",
            "b": "1F911",
            "j": [
                "face",
                "rich",
                "dollar",
                "money"
            ],
            "k": [
                37,
                25
            ],
            "o": 8
        },
        "running_shirt_with_sash": {
            "a": "Running Shirt with Sash",
            "b": "1F3BD",
            "j": [
                "play",
                "pageant"
            ],
            "k": [
                9,
                23
            ]
        },
        "astonished": {
            "a": "Astonished Face",
            "b": "1F632",
            "j": [
                "face",
                "xox",
                "surprised",
                "poisoned"
            ],
            "k": [
                31,
                22
            ]
        },
        "feet": {
            "a": "Paw Prints",
            "b": "1F43E",
            "k": [
                13,
                40
            ],
            "n": [
                "paw_prints"
            ]
        },
        "camera": {
            "a": "Camera",
            "b": "1F4F7",
            "j": [
                "gadgets",
                "photography"
            ],
            "k": [
                26,
                46
            ]
        },
        "flag-cf": {
            "a": "Central African Republic Flag",
            "b": "1F1E8-1F1EB",
            "k": [
                1,
                20
            ]
        },
        "place_of_worship": {
            "a": "Place of Worship",
            "b": "1F6D0",
            "j": [
                "religion",
                "church",
                "temple",
                "prayer"
            ],
            "k": [
                37,
                5
            ],
            "o": 8
        },
        "night_with_stars": {
            "a": "Night with Stars",
            "b": "1F303",
            "j": [
                "evening",
                "city",
                "downtown"
            ],
            "k": [
                5,
                47
            ]
        },
        "ski": {
            "a": "Ski and Ski Boot",
            "b": "1F3BF",
            "j": [
                "sports",
                "winter",
                "cold",
                "snow"
            ],
            "k": [
                9,
                25
            ]
        },
        "shallow_pan_of_food": {
            "a": "Shallow Pan of Food",
            "b": "1F958",
            "j": [
                "food",
                "cooking",
                "casserole",
                "paella"
            ],
            "k": [
                42,
                4
            ],
            "o": 9
        },
        "camera_with_flash": {
            "a": "Camera with Flash",
            "b": "1F4F8",
            "k": [
                26,
                47
            ],
            "o": 7
        },
        "sunrise_over_mountains": {
            "a": "Sunrise over Mountains",
            "b": "1F304",
            "j": [
                "view",
                "vacation",
                "photo"
            ],
            "k": [
                5,
                48
            ]
        },
        "turkey": {
            "a": "Turkey",
            "b": "1F983",
            "j": [
                "animal",
                "bird"
            ],
            "k": [
                42,
                27
            ],
            "o": 8
        },
        "white_frowning_face": {
            "a": "White Frowning Face",
            "b": "2639-FE0F",
            "c": "2639",
            "k": [
                47,
                40
            ],
            "o": 1
        },
        "flag-cg": {
            "a": "Congo - Brazzaville Flag",
            "b": "1F1E8-1F1EC",
            "k": [
                1,
                21
            ]
        },
        "stew": {
            "a": "Pot of Food",
            "b": "1F372",
            "j": [
                "food",
                "meat",
                "soup"
            ],
            "k": [
                8,
                0
            ]
        },
        "sled": {
            "a": "Sled",
            "b": "1F6F7",
            "j": [
                "sleigh",
                "luge",
                "toboggan"
            ],
            "k": [
                37,
                22
            ],
            "o": 10
        },
        "atom_symbol": {
            "a": "Atom Symbol",
            "b": "269B-FE0F",
            "c": "269B",
            "j": [
                "science",
                "physics",
                "chemistry"
            ],
            "k": [
                48,
                18
            ],
            "o": 4
        },
        "curling_stone": {
            "a": "Curling Stone",
            "b": "1F94C",
            "j": [
                "sports"
            ],
            "k": [
                41,
                47
            ],
            "o": 10
        },
        "slightly_frowning_face": {
            "a": "Slightly Frowning Face",
            "b": "1F641",
            "j": [
                "face",
                "frowning",
                "disappointed",
                "sad",
                "upset"
            ],
            "k": [
                31,
                37
            ],
            "o": 7
        },
        "sunrise": {
            "a": "Sunrise",
            "b": "1F305",
            "j": [
                "morning",
                "view",
                "vacation",
                "photo"
            ],
            "k": [
                5,
                49
            ]
        },
        "om_symbol": {
            "a": "Om Symbol",
            "b": "1F549-FE0F",
            "c": "1F549",
            "k": [
                28,
                12
            ],
            "o": 7
        },
        "chicken": {
            "a": "Chicken",
            "b": "1F414",
            "j": [
                "animal",
                "cluck",
                "nature",
                "bird"
            ],
            "k": [
                12,
                50
            ]
        },
        "bowl_with_spoon": {
            "a": "Bowl with Spoon",
            "b": "1F963",
            "j": [
                "food",
                "breakfast",
                "cereal",
                "oatmeal",
                "porridge"
            ],
            "k": [
                42,
                15
            ],
            "o": 10
        },
        "flag-ch": {
            "a": "Switzerland Flag",
            "b": "1F1E8-1F1ED",
            "k": [
                1,
                22
            ]
        },
        "video_camera": {
            "a": "Video Camera",
            "b": "1F4F9",
            "j": [
                "film",
                "record"
            ],
            "k": [
                26,
                48
            ]
        },
        "video_game": {
            "a": "Video Game",
            "b": "1F3AE",
            "j": [
                "play",
                "console",
                "PS4",
                "controller"
            ],
            "k": [
                9,
                8
            ]
        },
        "rooster": {
            "a": "Rooster",
            "b": "1F413",
            "j": [
                "animal",
                "nature",
                "chicken"
            ],
            "k": [
                12,
                49
            ]
        },
        "vhs": {
            "a": "Videocassette",
            "b": "1F4FC",
            "j": [
                "record",
                "video",
                "oldschool",
                "90s",
                "80s"
            ],
            "k": [
                26,
                51
            ]
        },
        "city_sunset": {
            "a": "Cityscape at Dusk",
            "b": "1F306",
            "j": [
                "photo",
                "evening",
                "sky",
                "buildings"
            ],
            "k": [
                5,
                50
            ]
        },
        "confounded": {
            "a": "Confounded Face",
            "b": "1F616",
            "j": [
                "face",
                "confused",
                "sick",
                "unwell",
                "oops",
                ":S"
            ],
            "k": [
                30,
                46
            ]
        },
        "green_salad": {
            "a": "Green Salad",
            "b": "1F957",
            "j": [
                "food",
                "healthy",
                "lettuce"
            ],
            "k": [
                42,
                3
            ],
            "o": 9
        },
        "star_of_david": {
            "a": "Star of David",
            "b": "2721-FE0F",
            "c": "2721",
            "j": [
                "judaism"
            ],
            "k": [
                49,
                47
            ],
            "o": 1
        },
        "flag-ci": {
            "a": "Côte D’ivoire Flag",
            "b": "1F1E8-1F1EE",
            "k": [
                1,
                23
            ]
        },
        "popcorn": {
            "a": "Popcorn",
            "b": "1F37F",
            "j": [
                "food",
                "movie theater",
                "films",
                "snack"
            ],
            "k": [
                8,
                13
            ],
            "o": 8
        },
        "city_sunrise": {
            "a": "Sunset over Buildings",
            "b": "1F307",
            "j": [
                "photo",
                "good morning",
                "dawn"
            ],
            "k": [
                5,
                51
            ]
        },
        "disappointed": {
            "a": "Disappointed Face",
            "b": "1F61E",
            "j": [
                "face",
                "sad",
                "upset",
                "depressed",
                ":("
            ],
            "k": [
                31,
                2
            ],
            "l": [
                "):",
                ":(",
                ":-("
            ],
            "m": ":("
        },
        "mag": {
            "a": "Left-Pointing Magnifying Glass",
            "b": "1F50D",
            "j": [
                "search",
                "zoom",
                "find",
                "detective"
            ],
            "k": [
                27,
                15
            ]
        },
        "hatching_chick": {
            "a": "Hatching Chick",
            "b": "1F423",
            "j": [
                "animal",
                "chicken",
                "egg",
                "born",
                "baby",
                "bird"
            ],
            "k": [
                13,
                13
            ]
        },
        "joystick": {
            "a": "Joystick",
            "b": "1F579-FE0F",
            "c": "1F579",
            "j": [
                "game",
                "play"
            ],
            "k": [
                29,
                20
            ],
            "o": 7
        },
        "wheel_of_dharma": {
            "a": "Wheel of Dharma",
            "b": "2638-FE0F",
            "c": "2638",
            "j": [
                "hinduism",
                "buddhism",
                "sikhism",
                "jainism"
            ],
            "k": [
                47,
                39
            ],
            "o": 1
        },
        "flag-ck": {
            "a": "Cook Islands Flag",
            "b": "1F1E8-1F1F0",
            "k": [
                1,
                24
            ]
        },
        "canned_food": {
            "a": "Canned Food",
            "b": "1F96B",
            "j": [
                "food",
                "soup"
            ],
            "k": [
                42,
                23
            ],
            "o": 10
        },
        "worried": {
            "a": "Worried Face",
            "b": "1F61F",
            "j": [
                "face",
                "concern",
                "nervous",
                ":("
            ],
            "k": [
                31,
                3
            ]
        },
        "baby_chick": {
            "a": "Baby Chick",
            "b": "1F424",
            "j": [
                "animal",
                "chicken",
                "bird"
            ],
            "k": [
                13,
                14
            ]
        },
        "flag-cl": {
            "a": "Chile Flag",
            "b": "1F1E8-1F1F1",
            "k": [
                1,
                25
            ]
        },
        "game_die": {
            "a": "Game Die",
            "b": "1F3B2",
            "j": [
                "dice",
                "random",
                "tabletop",
                "play",
                "luck"
            ],
            "k": [
                9,
                12
            ]
        },
        "mag_right": {
            "a": "Right-Pointing Magnifying Glass",
            "b": "1F50E",
            "j": [
                "search",
                "zoom",
                "find",
                "detective"
            ],
            "k": [
                27,
                16
            ]
        },
        "yin_yang": {
            "a": "Yin Yang",
            "b": "262F-FE0F",
            "c": "262F",
            "j": [
                "balance"
            ],
            "k": [
                47,
                38
            ],
            "o": 1
        },
        "bridge_at_night": {
            "a": "Bridge at Night",
            "b": "1F309",
            "j": [
                "photo",
                "sanfrancisco"
            ],
            "k": [
                6,
                1
            ]
        },
        "spades": {
            "a": "Black Spade Suit",
            "b": "2660-FE0F",
            "c": "2660",
            "j": [
                "poker",
                "cards",
                "suits",
                "magic"
            ],
            "k": [
                48,
                4
            ],
            "o": 1
        },
        "hatched_chick": {
            "a": "Front-Facing Baby Chick",
            "b": "1F425",
            "j": [
                "animal",
                "chicken",
                "baby",
                "bird"
            ],
            "k": [
                13,
                15
            ]
        },
        "flag-cm": {
            "a": "Cameroon Flag",
            "b": "1F1E8-1F1F2",
            "k": [
                1,
                26
            ]
        },
        "latin_cross": {
            "a": "Latin Cross",
            "b": "271D-FE0F",
            "c": "271D",
            "j": [
                "christianity"
            ],
            "k": [
                49,
                46
            ],
            "o": 1
        },
        "triumph": {
            "a": "Face with Look of Triumph",
            "b": "1F624",
            "j": [
                "face",
                "gas",
                "phew",
                "proud",
                "pride"
            ],
            "k": [
                31,
                8
            ]
        },
        "hotsprings": {
            "a": "Hot Springs",
            "b": "2668-FE0F",
            "c": "2668",
            "j": [
                "bath",
                "warm",
                "relax"
            ],
            "k": [
                48,
                8
            ],
            "o": 1
        },
        "bento": {
            "a": "Bento Box",
            "b": "1F371",
            "j": [
                "food",
                "japanese",
                "box"
            ],
            "k": [
                7,
                51
            ]
        },
        "microscope": {
            "a": "Microscope",
            "b": "1F52C",
            "j": [
                "laboratory",
                "experiment",
                "zoomin",
                "science",
                "study"
            ],
            "k": [
                27,
                46
            ]
        },
        "cry": {
            "a": "Crying Face",
            "b": "1F622",
            "j": [
                "face",
                "tears",
                "sad",
                "depressed",
                "upset",
                ":'("
            ],
            "k": [
                31,
                6
            ],
            "l": [
                ":'("
            ],
            "m": ":'("
        },
        "bird": {
            "a": "Bird",
            "b": "1F426",
            "j": [
                "animal",
                "nature",
                "fly",
                "tweet",
                "spring"
            ],
            "k": [
                13,
                16
            ]
        },
        "cn": {
            "a": "China Flag",
            "b": "1F1E8-1F1F3",
            "j": [
                "china",
                "chinese",
                "prc",
                "flag",
                "country",
                "nation",
                "banner"
            ],
            "k": [
                1,
                27
            ],
            "n": [
                "flag-cn"
            ]
        },
        "telescope": {
            "a": "Telescope",
            "b": "1F52D",
            "j": [
                "stars",
                "space",
                "zoom",
                "science",
                "astronomy"
            ],
            "k": [
                27,
                47
            ]
        },
        "rice_cracker": {
            "a": "Rice Cracker",
            "b": "1F358",
            "j": [
                "food",
                "japanese"
            ],
            "k": [
                7,
                26
            ]
        },
        "hearts": {
            "a": "Black Heart Suit",
            "b": "2665-FE0F",
            "c": "2665",
            "j": [
                "poker",
                "cards",
                "magic",
                "suits"
            ],
            "k": [
                48,
                6
            ],
            "o": 1
        },
        "orthodox_cross": {
            "a": "Orthodox Cross",
            "b": "2626-FE0F",
            "c": "2626",
            "j": [
                "suppedaneum",
                "religion"
            ],
            "k": [
                47,
                35
            ],
            "o": 1
        },
        "milky_way": {
            "a": "Milky Way",
            "b": "1F30C",
            "j": [
                "photo",
                "space",
                "stars"
            ],
            "k": [
                6,
                4
            ]
        },
        "rice_ball": {
            "a": "Rice Ball",
            "b": "1F359",
            "j": [
                "food",
                "japanese"
            ],
            "k": [
                7,
                27
            ]
        },
        "satellite_antenna": {
            "a": "Satellite Antenna",
            "b": "1F4E1",
            "k": [
                26,
                24
            ]
        },
        "flag-co": {
            "a": "Colombia Flag",
            "b": "1F1E8-1F1F4",
            "k": [
                1,
                28
            ]
        },
        "carousel_horse": {
            "a": "Carousel Horse",
            "b": "1F3A0",
            "j": [
                "photo",
                "carnival"
            ],
            "k": [
                8,
                46
            ]
        },
        "sob": {
            "a": "Loudly Crying Face",
            "b": "1F62D",
            "j": [
                "face",
                "cry",
                "tears",
                "sad",
                "upset",
                "depressed"
            ],
            "k": [
                31,
                17
            ],
            "m": ":'("
        },
        "diamonds": {
            "a": "Black Diamond Suit",
            "b": "2666-FE0F",
            "c": "2666",
            "j": [
                "poker",
                "cards",
                "magic",
                "suits"
            ],
            "k": [
                48,
                7
            ],
            "o": 1
        },
        "star_and_crescent": {
            "a": "Star and Crescent",
            "b": "262A-FE0F",
            "c": "262A",
            "j": [
                "islam"
            ],
            "k": [
                47,
                36
            ],
            "o": 1
        },
        "penguin": {
            "a": "Penguin",
            "b": "1F427",
            "j": [
                "animal",
                "nature"
            ],
            "k": [
                13,
                17
            ]
        },
        "dove_of_peace": {
            "a": "Dove of Peace",
            "b": "1F54A-FE0F",
            "c": "1F54A",
            "k": [
                28,
                13
            ],
            "o": 7
        },
        "flag-cp": {
            "a": "Clipperton Island Flag",
            "b": "1F1E8-1F1F5",
            "k": [
                1,
                29
            ]
        },
        "ferris_wheel": {
            "a": "Ferris Wheel",
            "b": "1F3A1",
            "j": [
                "photo",
                "carnival",
                "londoneye"
            ],
            "k": [
                8,
                47
            ]
        },
        "clubs": {
            "a": "Black Club Suit",
            "b": "2663-FE0F",
            "c": "2663",
            "j": [
                "poker",
                "cards",
                "magic",
                "suits"
            ],
            "k": [
                48,
                5
            ],
            "o": 1
        },
        "peace_symbol": {
            "a": "Peace Symbol",
            "b": "262E-FE0F",
            "c": "262E",
            "j": [
                "hippie"
            ],
            "k": [
                47,
                37
            ],
            "o": 1
        },
        "candle": {
            "a": "Candle",
            "b": "1F56F-FE0F",
            "c": "1F56F",
            "j": [
                "fire",
                "wax"
            ],
            "k": [
                28,
                42
            ],
            "o": 7
        },
        "frowning": {
            "a": "Frowning Face with Open Mouth",
            "b": "1F626",
            "j": [
                "face",
                "aw",
                "what"
            ],
            "k": [
                31,
                10
            ]
        },
        "rice": {
            "a": "Cooked Rice",
            "b": "1F35A",
            "j": [
                "food",
                "china",
                "asian"
            ],
            "k": [
                7,
                28
            ]
        },
        "flag-cr": {
            "a": "Costa Rica Flag",
            "b": "1F1E8-1F1F7",
            "k": [
                1,
                30
            ]
        },
        "roller_coaster": {
            "a": "Roller Coaster",
            "b": "1F3A2",
            "j": [
                "carnival",
                "playground",
                "photo",
                "fun"
            ],
            "k": [
                8,
                48
            ]
        },
        "menorah_with_nine_branches": {
            "a": "Menorah with Nine Branches",
            "b": "1F54E",
            "k": [
                28,
                17
            ],
            "o": 8
        },
        "black_joker": {
            "a": "Playing Card Black Joker",
            "b": "1F0CF",
            "j": [
                "poker",
                "cards",
                "game",
                "play",
                "magic"
            ],
            "k": [
                0,
                15
            ]
        },
        "eagle": {
            "a": "Eagle",
            "b": "1F985",
            "j": [
                "animal",
                "nature",
                "bird"
            ],
            "k": [
                42,
                29
            ],
            "o": 9
        },
        "curry": {
            "a": "Curry and Rice",
            "b": "1F35B",
            "j": [
                "food",
                "spicy",
                "hot",
                "indian"
            ],
            "k": [
                7,
                29
            ]
        },
        "bulb": {
            "a": "Electric Light Bulb",
            "b": "1F4A1",
            "j": [
                "light",
                "electricity",
                "idea"
            ],
            "k": [
                25,
                7
            ]
        },
        "anguished": {
            "a": "Anguished Face",
            "b": "1F627",
            "j": [
                "face",
                "stunned",
                "nervous"
            ],
            "k": [
                31,
                11
            ],
            "l": [
                "D:"
            ]
        },
        "flag-cu": {
            "a": "Cuba Flag",
            "b": "1F1E8-1F1FA",
            "k": [
                1,
                31
            ]
        },
        "barber": {
            "a": "Barber Pole",
            "b": "1F488",
            "j": [
                "hair",
                "salon",
                "style"
            ],
            "k": [
                24,
                34
            ]
        },
        "duck": {
            "a": "Duck",
            "b": "1F986",
            "j": [
                "animal",
                "nature",
                "bird",
                "mallard"
            ],
            "k": [
                42,
                30
            ],
            "o": 9
        },
        "six_pointed_star": {
            "a": "Six Pointed Star with Middle Dot",
            "b": "1F52F",
            "j": [
                "purple-square",
                "religion",
                "jewish",
                "hexagram"
            ],
            "k": [
                27,
                49
            ]
        },
        "ramen": {
            "a": "Steaming Bowl",
            "b": "1F35C",
            "j": [
                "food",
                "japanese",
                "noodle",
                "chopsticks"
            ],
            "k": [
                7,
                30
            ]
        },
        "flashlight": {
            "a": "Electric Torch",
            "b": "1F526",
            "j": [
                "dark",
                "camping",
                "sight",
                "night"
            ],
            "k": [
                27,
                40
            ]
        },
        "mahjong": {
            "a": "Mahjong Tile Red Dragon",
            "b": "1F004",
            "j": [
                "game",
                "play",
                "chinese",
                "kanji"
            ],
            "k": [
                0,
                14
            ],
            "o": 5
        },
        "fearful": {
            "a": "Fearful Face",
            "b": "1F628",
            "j": [
                "face",
                "scared",
                "terrified",
                "nervous",
                "oops",
                "huh"
            ],
            "k": [
                31,
                12
            ]
        },
        "aries": {
            "a": "Aries",
            "b": "2648",
            "j": [
                "sign",
                "purple-square",
                "zodiac",
                "astrology"
            ],
            "k": [
                47,
                44
            ],
            "o": 1
        },
        "spaghetti": {
            "a": "Spaghetti",
            "b": "1F35D",
            "j": [
                "food",
                "italian",
                "noodle"
            ],
            "k": [
                7,
                31
            ]
        },
        "circus_tent": {
            "a": "Circus Tent",
            "b": "1F3AA",
            "j": [
                "festival",
                "carnival",
                "party"
            ],
            "k": [
                9,
                4
            ]
        },
        "izakaya_lantern": {
            "a": "Izakaya Lantern",
            "b": "1F3EE",
            "j": [
                "light",
                "paper",
                "halloween",
                "spooky"
            ],
            "k": [
                12,
                11
            ],
            "n": [
                "lantern"
            ]
        },
        "flag-cv": {
            "a": "Cape Verde Flag",
            "b": "1F1E8-1F1FB",
            "k": [
                1,
                32
            ]
        },
        "weary": {
            "a": "Weary Face",
            "b": "1F629",
            "j": [
                "face",
                "tired",
                "sleepy",
                "sad",
                "frustrated",
                "upset"
            ],
            "k": [
                31,
                13
            ]
        },
        "flower_playing_cards": {
            "a": "Flower Playing Cards",
            "b": "1F3B4",
            "j": [
                "game",
                "sunset",
                "red"
            ],
            "k": [
                9,
                14
            ]
        },
        "owl": {
            "a": "Owl",
            "b": "1F989",
            "j": [
                "animal",
                "nature",
                "bird",
                "hoot"
            ],
            "k": [
                42,
                33
            ],
            "o": 9
        },
        "performing_arts": {
            "a": "Performing Arts",
            "b": "1F3AD",
            "j": [
                "acting",
                "theater",
                "drama"
            ],
            "k": [
                9,
                7
            ]
        },
        "frog": {
            "a": "Frog Face",
            "b": "1F438",
            "j": [
                "animal",
                "nature",
                "croak",
                "toad"
            ],
            "k": [
                13,
                34
            ]
        },
        "flag-cw": {
            "a": "Curaçao Flag",
            "b": "1F1E8-1F1FC",
            "k": [
                1,
                33
            ]
        },
        "notebook_with_decorative_cover": {
            "a": "Notebook with Decorative Cover",
            "b": "1F4D4",
            "j": [
                "classroom",
                "notes",
                "record",
                "paper",
                "study"
            ],
            "k": [
                26,
                11
            ]
        },
        "exploding_head": {
            "a": "Shocked Face with Exploding Head",
            "b": "1F92F",
            "j": [
                "face",
                "shocked",
                "mind",
                "blown"
            ],
            "k": [
                39,
                3
            ],
            "n": [
                "shocked_face_with_exploding_head"
            ],
            "o": 10
        },
        "taurus": {
            "a": "Taurus",
            "b": "2649",
            "j": [
                "purple-square",
                "sign",
                "zodiac",
                "astrology"
            ],
            "k": [
                47,
                45
            ],
            "o": 1
        },
        "sweet_potato": {
            "a": "Roasted Sweet Potato",
            "b": "1F360",
            "j": [
                "food",
                "nature"
            ],
            "k": [
                7,
                34
            ]
        },
        "closed_book": {
            "a": "Closed Book",
            "b": "1F4D5",
            "j": [
                "read",
                "library",
                "knowledge",
                "textbook",
                "learn"
            ],
            "k": [
                26,
                12
            ]
        },
        "gemini": {
            "a": "Gemini",
            "b": "264A",
            "j": [
                "sign",
                "zodiac",
                "purple-square",
                "astrology"
            ],
            "k": [
                47,
                46
            ],
            "o": 1
        },
        "frame_with_picture": {
            "a": "Frame with Picture",
            "b": "1F5BC-FE0F",
            "c": "1F5BC",
            "k": [
                30,
                3
            ],
            "o": 7
        },
        "flag-cx": {
            "a": "Christmas Island Flag",
            "b": "1F1E8-1F1FD",
            "k": [
                1,
                34
            ]
        },
        "grimacing": {
            "a": "Grimacing Face",
            "b": "1F62C",
            "j": [
                "face",
                "grimace",
                "teeth"
            ],
            "k": [
                31,
                16
            ]
        },
        "crocodile": {
            "a": "Crocodile",
            "b": "1F40A",
            "j": [
                "animal",
                "nature",
                "reptile",
                "lizard",
                "alligator"
            ],
            "k": [
                12,
                40
            ]
        },
        "oden": {
            "a": "Oden",
            "b": "1F362",
            "j": [
                "food",
                "japanese"
            ],
            "k": [
                7,
                36
            ]
        },
        "flag-cy": {
            "a": "Cyprus Flag",
            "b": "1F1E8-1F1FE",
            "k": [
                1,
                35
            ]
        },
        "book": {
            "a": "Open Book",
            "b": "1F4D6",
            "k": [
                26,
                13
            ],
            "n": [
                "open_book"
            ]
        },
        "turtle": {
            "a": "Turtle",
            "b": "1F422",
            "j": [
                "animal",
                "slow",
                "nature",
                "tortoise"
            ],
            "k": [
                13,
                12
            ]
        },
        "art": {
            "a": "Artist Palette",
            "b": "1F3A8",
            "j": [
                "design",
                "paint",
                "draw",
                "colors"
            ],
            "k": [
                9,
                2
            ]
        },
        "sushi": {
            "a": "Sushi",
            "b": "1F363",
            "j": [
                "food",
                "fish",
                "japanese",
                "rice"
            ],
            "k": [
                7,
                37
            ]
        },
        "cold_sweat": {
            "a": "Face with Open Mouth and Cold Sweat",
            "b": "1F630",
            "j": [
                "face",
                "nervous",
                "sweat"
            ],
            "k": [
                31,
                20
            ]
        },
        "cancer": {
            "a": "Cancer",
            "b": "264B",
            "j": [
                "sign",
                "zodiac",
                "purple-square",
                "astrology"
            ],
            "k": [
                47,
                47
            ],
            "o": 1
        },
        "fried_shrimp": {
            "a": "Fried Shrimp",
            "b": "1F364",
            "j": [
                "food",
                "animal",
                "appetizer",
                "summer"
            ],
            "k": [
                7,
                38
            ]
        },
        "slot_machine": {
            "a": "Slot Machine",
            "b": "1F3B0",
            "j": [
                "bet",
                "gamble",
                "vegas",
                "fruit machine",
                "luck",
                "casino"
            ],
            "k": [
                9,
                10
            ]
        },
        "scream": {
            "a": "Face Screaming in Fear",
            "b": "1F631",
            "j": [
                "face",
                "munch",
                "scared",
                "omg"
            ],
            "k": [
                31,
                21
            ]
        },
        "fear": {
            "a": "Face Screaming in Fear",
            "b": "1F631",
            "j": [
                "face",
                "munch",
                "scared",
                "omg"
            ],
            "k": [
                31,
                21
            ]
        },
        "green_book": {
            "a": "Green Book",
            "b": "1F4D7",
            "j": [
                "read",
                "library",
                "knowledge",
                "study"
            ],
            "k": [
                26,
                14
            ]
        },
        "leo": {
            "a": "Leo",
            "b": "264C",
            "j": [
                "sign",
                "purple-square",
                "zodiac",
                "astrology"
            ],
            "k": [
                47,
                48
            ],
            "o": 1
        },
        "flag-cz": {
            "a": "Czechia Flag",
            "b": "1F1E8-1F1FF",
            "k": [
                1,
                36
            ]
        },
        "lizard": {
            "a": "Lizard",
            "b": "1F98E",
            "j": [
                "animal",
                "nature",
                "reptile"
            ],
            "k": [
                42,
                38
            ],
            "o": 9
        },
        "virgo": {
            "a": "Virgo",
            "b": "264D",
            "j": [
                "sign",
                "zodiac",
                "purple-square",
                "astrology"
            ],
            "k": [
                47,
                49
            ],
            "o": 1
        },
        "steam_locomotive": {
            "a": "Steam Locomotive",
            "b": "1F682",
            "j": [
                "transportation",
                "vehicle",
                "train"
            ],
            "k": [
                34,
                10
            ]
        },
        "de": {
            "a": "Germany Flag",
            "b": "1F1E9-1F1EA",
            "j": [
                "german",
                "nation",
                "flag",
                "country",
                "banner"
            ],
            "k": [
                1,
                37
            ],
            "n": [
                "flag-de"
            ]
        },
        "flushed": {
            "a": "Flushed Face",
            "b": "1F633",
            "j": [
                "face",
                "blush",
                "shy",
                "flattered"
            ],
            "k": [
                31,
                23
            ]
        },
        "blue_book": {
            "a": "Blue Book",
            "b": "1F4D8",
            "j": [
                "read",
                "library",
                "knowledge",
                "learn",
                "study"
            ],
            "k": [
                26,
                15
            ]
        },
        "snake": {
            "a": "Snake",
            "b": "1F40D",
            "j": [
                "animal",
                "evil",
                "nature",
                "hiss",
                "python"
            ],
            "k": [
                12,
                43
            ]
        },
        "fish_cake": {
            "a": "Fish Cake with Swirl Design",
            "b": "1F365",
            "j": [
                "food",
                "japan",
                "sea",
                "beach",
                "narutomaki",
                "pink",
                "swirl",
                "kamaboko",
                "surimi",
                "ramen"
            ],
            "k": [
                7,
                39
            ]
        },
        "railway_car": {
            "a": "Railway Car",
            "b": "1F683",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                11
            ]
        },
        "dango": {
            "a": "Dango",
            "b": "1F361",
            "j": [
                "food",
                "dessert",
                "sweet",
                "japanese",
                "barbecue",
                "meat"
            ],
            "k": [
                7,
                35
            ]
        },
        "orange_book": {
            "a": "Orange Book",
            "b": "1F4D9",
            "j": [
                "read",
                "library",
                "knowledge",
                "textbook",
                "study"
            ],
            "k": [
                26,
                16
            ]
        },
        "libra": {
            "a": "Libra",
            "b": "264E",
            "j": [
                "sign",
                "purple-square",
                "zodiac",
                "astrology"
            ],
            "k": [
                47,
                50
            ],
            "o": 1
        },
        "dragon_face": {
            "a": "Dragon Face",
            "b": "1F432",
            "j": [
                "animal",
                "myth",
                "nature",
                "chinese",
                "green"
            ],
            "k": [
                13,
                28
            ]
        },
        "flag-dg": {
            "a": "Diego Garcia Flag",
            "b": "1F1E9-1F1EC",
            "k": [
                1,
                38
            ]
        },
        "zany_face": {
            "a": "Grinning Face with One Large and One Small Eye",
            "b": "1F92A",
            "k": [
                38,
                50
            ],
            "n": [
                "grinning_face_with_one_large_and_one_small_eye"
            ],
            "o": 10
        },
        "books": {
            "a": "Books",
            "b": "1F4DA",
            "j": [
                "literature",
                "library",
                "study"
            ],
            "k": [
                26,
                17
            ]
        },
        "dragon": {
            "a": "Dragon",
            "b": "1F409",
            "j": [
                "animal",
                "myth",
                "nature",
                "chinese",
                "green"
            ],
            "k": [
                12,
                39
            ]
        },
        "flag-dj": {
            "a": "Djibouti Flag",
            "b": "1F1E9-1F1EF",
            "k": [
                1,
                39
            ]
        },
        "dumpling": {
            "a": "Dumpling",
            "b": "1F95F",
            "j": [
                "food",
                "empanada",
                "pierogi",
                "potsticker"
            ],
            "k": [
                42,
                11
            ],
            "o": 10
        },
        "dizzy_face": {
            "a": "Dizzy Face",
            "b": "1F635",
            "j": [
                "spent",
                "unconscious",
                "xox",
                "dizzy"
            ],
            "k": [
                31,
                25
            ]
        },
        "scorpius": {
            "a": "Scorpius",
            "b": "264F",
            "j": [
                "sign",
                "zodiac",
                "purple-square",
                "astrology",
                "scorpio"
            ],
            "k": [
                47,
                51
            ],
            "o": 1
        },
        "bullettrain_side": {
            "a": "High-Speed Train",
            "b": "1F684",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                12
            ]
        },
        "bullettrain_front": {
            "a": "High-Speed Train with Bullet Nose",
            "b": "1F685",
            "j": [
                "transportation",
                "vehicle",
                "speed",
                "fast",
                "public",
                "travel"
            ],
            "k": [
                34,
                13
            ]
        },
        "notebook": {
            "a": "Notebook",
            "b": "1F4D3",
            "j": [
                "stationery",
                "record",
                "notes",
                "paper",
                "study"
            ],
            "k": [
                26,
                10
            ]
        },
        "fortune_cookie": {
            "a": "Fortune Cookie",
            "b": "1F960",
            "j": [
                "food",
                "prophecy"
            ],
            "k": [
                42,
                12
            ],
            "o": 10
        },
        "sagittarius": {
            "a": "Sagittarius",
            "b": "2650",
            "j": [
                "sign",
                "zodiac",
                "purple-square",
                "astrology"
            ],
            "k": [
                48,
                0
            ],
            "o": 1
        },
        "sauropod": {
            "a": "Sauropod",
            "b": "1F995",
            "j": [
                "animal",
                "nature",
                "dinosaur",
                "brachiosaurus",
                "brontosaurus",
                "diplodocus",
                "extinct"
            ],
            "k": [
                42,
                45
            ],
            "o": 10
        },
        "flag-dk": {
            "a": "Denmark Flag",
            "b": "1F1E9-1F1F0",
            "k": [
                1,
                40
            ]
        },
        "rage": {
            "a": "Pouting Face",
            "b": "1F621",
            "j": [
                "angry",
                "mad",
                "hate",
                "despise"
            ],
            "k": [
                31,
                5
            ]
        },
        "ledger": {
            "a": "Ledger",
            "b": "1F4D2",
            "j": [
                "notes",
                "paper"
            ],
            "k": [
                26,
                9
            ]
        },
        "angry": {
            "a": "Angry Face",
            "b": "1F620",
            "j": [
                "mad",
                "face",
                "annoyed",
                "frustrated"
            ],
            "k": [
                31,
                4
            ],
            "l": [
                ">:(",
                ">:-("
            ]
        },
        "t-rex": {
            "a": "T-Rex",
            "b": "1F996",
            "j": [
                "animal",
                "nature",
                "dinosaur",
                "tyrannosaurus",
                "extinct"
            ],
            "k": [
                42,
                46
            ],
            "o": 10
        },
        "capricorn": {
            "a": "Capricorn",
            "b": "2651",
            "j": [
                "sign",
                "zodiac",
                "purple-square",
                "astrology"
            ],
            "k": [
                48,
                1
            ],
            "o": 1
        },
        "takeout_box": {
            "a": "Takeout Box",
            "b": "1F961",
            "j": [
                "food",
                "leftovers"
            ],
            "k": [
                42,
                13
            ],
            "o": 10
        },
        "flag-dm": {
            "a": "Dominica Flag",
            "b": "1F1E9-1F1F2",
            "k": [
                1,
                41
            ]
        },
        "train2": {
            "a": "Train",
            "b": "1F686",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                14
            ]
        },
        "page_with_curl": {
            "a": "Page with Curl",
            "b": "1F4C3",
            "j": [
                "documents",
                "office",
                "paper"
            ],
            "k": [
                25,
                46
            ]
        },
        "whale": {
            "a": "Spouting Whale",
            "b": "1F433",
            "j": [
                "animal",
                "nature",
                "sea",
                "ocean"
            ],
            "k": [
                13,
                29
            ]
        },
        "face_with_symbols_on_mouth": {
            "a": "Serious Face with Symbols Covering Mouth",
            "b": "1F92C",
            "k": [
                39,
                0
            ],
            "n": [
                "serious_face_with_symbols_covering_mouth"
            ],
            "o": 10
        },
        "flag-do": {
            "a": "Dominican Republic Flag",
            "b": "1F1E9-1F1F4",
            "k": [
                1,
                42
            ]
        },
        "metro": {
            "a": "Metro",
            "b": "1F687",
            "j": [
                "transportation",
                "blue-square",
                "mrt",
                "underground",
                "tube"
            ],
            "k": [
                34,
                15
            ]
        },
        "icecream": {
            "a": "Soft Ice Cream",
            "b": "1F366",
            "j": [
                "food",
                "hot",
                "dessert",
                "summer"
            ],
            "k": [
                7,
                40
            ]
        },
        "aquarius": {
            "a": "Aquarius",
            "b": "2652",
            "j": [
                "sign",
                "purple-square",
                "zodiac",
                "astrology"
            ],
            "k": [
                48,
                2
            ],
            "o": 1
        },
        "flag-dz": {
            "a": "Algeria Flag",
            "b": "1F1E9-1F1FF",
            "k": [
                1,
                43
            ]
        },
        "whale2": {
            "a": "Whale",
            "b": "1F40B",
            "j": [
                "animal",
                "nature",
                "sea",
                "ocean"
            ],
            "k": [
                12,
                41
            ]
        },
        "mask": {
            "a": "Face with Medical Mask",
            "b": "1F637",
            "j": [
                "face",
                "sick",
                "ill",
                "disease"
            ],
            "k": [
                31,
                27
            ]
        },
        "ill": {
            "a": "Face with Medical Mask",
            "b": "1F637",
            "j": [
                "face",
                "sick",
                "ill",
                "disease"
            ],
            "k": [
                31,
                27
            ]
        },
        "scroll": {
            "a": "Scroll",
            "b": "1F4DC",
            "j": [
                "documents",
                "ancient",
                "history",
                "paper"
            ],
            "k": [
                26,
                19
            ]
        },
        "shaved_ice": {
            "a": "Shaved Ice",
            "b": "1F367",
            "j": [
                "hot",
                "dessert",
                "summer"
            ],
            "k": [
                7,
                41
            ]
        },
        "pisces": {
            "a": "Pisces",
            "b": "2653",
            "j": [
                "purple-square",
                "sign",
                "zodiac",
                "astrology"
            ],
            "k": [
                48,
                3
            ],
            "o": 1
        },
        "light_rail": {
            "a": "Light Rail",
            "b": "1F688",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                16
            ]
        },
        "dolphin": {
            "a": "Dolphin",
            "b": "1F42C",
            "j": [
                "animal",
                "nature",
                "fish",
                "sea",
                "ocean",
                "flipper",
                "fins",
                "beach"
            ],
            "k": [
                13,
                22
            ],
            "n": [
                "flipper"
            ]
        },
        "face_with_thermometer": {
            "a": "Face with Thermometer",
            "b": "1F912",
            "j": [
                "sick",
                "temperature",
                "thermometer",
                "cold",
                "fever"
            ],
            "k": [
                37,
                26
            ],
            "o": 8
        },
        "flag-ea": {
            "a": "Ceuta & Melilla Flag",
            "b": "1F1EA-1F1E6",
            "k": [
                1,
                44
            ]
        },
        "ophiuchus": {
            "a": "Ophiuchus",
            "b": "26CE",
            "j": [
                "sign",
                "purple-square",
                "constellation",
                "astrology"
            ],
            "k": [
                48,
                31
            ]
        },
        "station": {
            "a": "Station",
            "b": "1F689",
            "j": [
                "transportation",
                "vehicle",
                "public"
            ],
            "k": [
                34,
                17
            ]
        },
        "ice_cream": {
            "a": "Ice Cream",
            "b": "1F368",
            "j": [
                "food",
                "hot",
                "dessert"
            ],
            "k": [
                7,
                42
            ]
        },
        "page_facing_up": {
            "a": "Page Facing Up",
            "b": "1F4C4",
            "j": [
                "documents",
                "office",
                "paper",
                "information"
            ],
            "k": [
                25,
                47
            ]
        },
        "doughnut": {
            "a": "Doughnut",
            "b": "1F369",
            "j": [
                "food",
                "dessert",
                "snack",
                "sweet",
                "donut"
            ],
            "k": [
                7,
                43
            ]
        },
        "face_with_head_bandage": {
            "a": "Face with Head-Bandage",
            "b": "1F915",
            "j": [
                "injured",
                "clumsy",
                "bandage",
                "hurt"
            ],
            "k": [
                37,
                29
            ],
            "o": 8
        },
        "fish": {
            "a": "Fish",
            "b": "1F41F",
            "j": [
                "animal",
                "food",
                "nature"
            ],
            "k": [
                13,
                9
            ]
        },
        "newspaper": {
            "a": "Newspaper",
            "b": "1F4F0",
            "j": [
                "press",
                "headline"
            ],
            "k": [
                26,
                39
            ]
        },
        "tram": {
            "a": "Tram",
            "b": "1F68A",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                18
            ]
        },
        "flag-ec": {
            "a": "Ecuador Flag",
            "b": "1F1EA-1F1E8",
            "k": [
                1,
                45
            ]
        },
        "twisted_rightwards_arrows": {
            "a": "Twisted Rightwards Arrows",
            "b": "1F500",
            "j": [
                "blue-square",
                "shuffle",
                "music",
                "random"
            ],
            "k": [
                27,
                2
            ]
        },
        "flag-ee": {
            "a": "Estonia Flag",
            "b": "1F1EA-1F1EA",
            "k": [
                1,
                46
            ]
        },
        "cookie": {
            "a": "Cookie",
            "b": "1F36A",
            "j": [
                "food",
                "snack",
                "oreo",
                "chocolate",
                "sweet",
                "dessert"
            ],
            "k": [
                7,
                44
            ]
        },
        "monorail": {
            "a": "Monorail",
            "b": "1F69D",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                37
            ]
        },
        "tropical_fish": {
            "a": "Tropical Fish",
            "b": "1F420",
            "j": [
                "animal",
                "swim",
                "ocean",
                "beach",
                "nemo"
            ],
            "k": [
                13,
                10
            ]
        },
        "rolled_up_newspaper": {
            "a": "Rolled Up Newspaper",
            "b": "1F5DE-FE0F",
            "c": "1F5DE",
            "k": [
                30,
                12
            ],
            "o": 7
        },
        "nauseated_face": {
            "a": "Nauseated Face",
            "b": "1F922",
            "j": [
                "face",
                "vomit",
                "gross",
                "green",
                "sick",
                "throw up",
                "ill"
            ],
            "k": [
                38,
                25
            ],
            "o": 9
        },
        "repeat": {
            "a": "Clockwise Rightwards and Leftwards Open Circle Arrows",
            "b": "1F501",
            "j": [
                "loop",
                "record"
            ],
            "k": [
                27,
                3
            ]
        },
        "bookmark_tabs": {
            "a": "Bookmark Tabs",
            "b": "1F4D1",
            "j": [
                "favorite",
                "save",
                "order",
                "tidy"
            ],
            "k": [
                26,
                8
            ]
        },
        "repeat_one": {
            "a": "Clockwise Rightwards and Leftwards Open Circle Arrows with Circled One Overlay",
            "b": "1F502",
            "j": [
                "blue-square",
                "loop"
            ],
            "k": [
                27,
                4
            ]
        },
        "flag-eg": {
            "a": "Egypt Flag",
            "b": "1F1EA-1F1EC",
            "k": [
                1,
                47
            ]
        },
        "mountain_railway": {
            "a": "Mountain Railway",
            "b": "1F69E",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                38
            ]
        },
        "birthday": {
            "a": "Birthday Cake",
            "b": "1F382",
            "j": [
                "food",
                "dessert",
                "cake"
            ],
            "k": [
                8,
                16
            ]
        },
        "blowfish": {
            "a": "Blowfish",
            "b": "1F421",
            "j": [
                "animal",
                "nature",
                "food",
                "sea",
                "ocean"
            ],
            "k": [
                13,
                11
            ]
        },
        "face_vomiting": {
            "a": "Face with Open Mouth Vomiting",
            "b": "1F92E",
            "k": [
                39,
                2
            ],
            "n": [
                "face_with_open_mouth_vomiting"
            ],
            "o": 10
        },
        "arrow_forward": {
            "a": "Black Right-Pointing Triangle",
            "b": "25B6-FE0F",
            "c": "25B6",
            "j": [
                "blue-square",
                "right",
                "direction",
                "play"
            ],
            "k": [
                47,
                10
            ],
            "o": 1
        },
        "bookmark": {
            "a": "Bookmark",
            "b": "1F516",
            "j": [
                "favorite",
                "label",
                "save"
            ],
            "k": [
                27,
                24
            ]
        },
        "flag-eh": {
            "a": "Western Sahara Flag",
            "b": "1F1EA-1F1ED",
            "k": [
                1,
                48
            ]
        },
        "shark": {
            "a": "Shark",
            "b": "1F988",
            "j": [
                "animal",
                "nature",
                "fish",
                "sea",
                "ocean",
                "jaws",
                "fins",
                "beach"
            ],
            "k": [
                42,
                32
            ],
            "o": 9
        },
        "train": {
            "a": "Tram Car",
            "b": "1F68B",
            "j": [
                "transportation",
                "vehicle",
                "carriage",
                "public",
                "travel"
            ],
            "k": [
                34,
                19
            ]
        },
        "sneezing_face": {
            "a": "Sneezing Face",
            "b": "1F927",
            "j": [
                "face",
                "gesundheit",
                "sneeze",
                "sick",
                "allergy"
            ],
            "k": [
                38,
                47
            ],
            "o": 9
        },
        "sneezing": {
            "a": "Sneezing Face",
            "b": "1F927",
            "j": [
                "face",
                "gesundheit",
                "sneeze",
                "sick",
                "allergy"
            ],
            "k": [
                38,
                47
            ],
            "o": 9
        },
        "cake": {
            "a": "Shortcake",
            "b": "1F370",
            "j": [
                "food",
                "dessert"
            ],
            "k": [
                7,
                50
            ]
        },
        "bus": {
            "a": "Bus",
            "b": "1F68C",
            "j": [
                "car",
                "vehicle",
                "transportation"
            ],
            "k": [
                34,
                20
            ]
        },
        "pie": {
            "a": "Pie",
            "b": "1F967",
            "j": [
                "food",
                "dessert",
                "pastry"
            ],
            "k": [
                42,
                19
            ],
            "o": 10
        },
        "innocent": {
            "a": "Smiling Face with Halo",
            "b": "1F607",
            "j": [
                "face",
                "angel",
                "heaven",
                "halo"
            ],
            "k": [
                30,
                31
            ]
        },
        "fast_forward": {
            "a": "Black Right-Pointing Double Triangle",
            "b": "23E9",
            "j": [
                "blue-square",
                "play",
                "speed",
                "continue"
            ],
            "k": [
                46,
                45
            ]
        },
        "label": {
            "a": "Label",
            "b": "1F3F7-FE0F",
            "c": "1F3F7",
            "j": [
                "sale",
                "tag"
            ],
            "k": [
                12,
                21
            ],
            "o": 7
        },
        "octopus": {
            "a": "Octopus",
            "b": "1F419",
            "j": [
                "animal",
                "creature",
                "ocean",
                "sea",
                "nature",
                "beach"
            ],
            "k": [
                13,
                3
            ]
        },
        "flag-er": {
            "a": "Eritrea Flag",
            "b": "1F1EA-1F1F7",
            "k": [
                1,
                49
            ]
        },
        "black_right_pointing_double_triangle_with_vertical_bar": {
            "a": "Black Right Pointing Double Triangle with Vertical Bar",
            "b": "23ED-FE0F",
            "c": "23ED",
            "k": [
                46,
                49
            ]
        },
        "chocolate_bar": {
            "a": "Chocolate Bar",
            "b": "1F36B",
            "j": [
                "food",
                "snack",
                "dessert",
                "sweet"
            ],
            "k": [
                7,
                45
            ]
        },
        "oncoming_bus": {
            "a": "Oncoming Bus",
            "b": "1F68D",
            "j": [
                "vehicle",
                "transportation"
            ],
            "k": [
                34,
                21
            ]
        },
        "shell": {
            "a": "Spiral Shell",
            "b": "1F41A",
            "j": [
                "nature",
                "sea",
                "beach"
            ],
            "k": [
                13,
                4
            ]
        },
        "face_with_cowboy_hat": {
            "a": "Face with Cowboy Hat",
            "b": "1F920",
            "k": [
                38,
                23
            ],
            "o": 9
        },
        "moneybag": {
            "a": "Money Bag",
            "b": "1F4B0",
            "j": [
                "dollar",
                "payment",
                "coins",
                "sale"
            ],
            "k": [
                25,
                27
            ]
        },
        "es": {
            "a": "Spain Flag",
            "b": "1F1EA-1F1F8",
            "j": [
                "spain",
                "flag",
                "nation",
                "country",
                "banner"
            ],
            "k": [
                1,
                50
            ],
            "n": [
                "flag-es"
            ]
        },
        "crab": {
            "a": "Crab",
            "b": "1F980",
            "j": [
                "animal",
                "crustacean"
            ],
            "k": [
                42,
                24
            ],
            "o": 8
        },
        "yen": {
            "a": "Banknote with Yen Sign",
            "b": "1F4B4",
            "j": [
                "money",
                "sales",
                "japanese",
                "dollar",
                "currency"
            ],
            "k": [
                25,
                31
            ]
        },
        "flag-et": {
            "a": "Ethiopia Flag",
            "b": "1F1EA-1F1F9",
            "k": [
                1,
                51
            ]
        },
        "clown_face": {
            "a": "Clown Face",
            "b": "1F921",
            "j": [
                "face"
            ],
            "k": [
                38,
                24
            ],
            "o": 9
        },
        "black_right_pointing_triangle_with_double_vertical_bar": {
            "a": "Black Right Pointing Triangle with Double Vertical Bar",
            "b": "23EF-FE0F",
            "c": "23EF",
            "k": [
                46,
                51
            ]
        },
        "trolleybus": {
            "a": "Trolleybus",
            "b": "1F68E",
            "j": [
                "bart",
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                22
            ]
        },
        "candy": {
            "a": "Candy",
            "b": "1F36C",
            "j": [
                "snack",
                "dessert",
                "sweet",
                "lolly"
            ],
            "k": [
                7,
                46
            ]
        },
        "lying_face": {
            "a": "Lying Face",
            "b": "1F925",
            "j": [
                "face",
                "lie",
                "pinocchio"
            ],
            "k": [
                38,
                28
            ],
            "o": 9
        },
        "arrow_backward": {
            "a": "Black Left-Pointing Triangle",
            "b": "25C0-FE0F",
            "c": "25C0",
            "j": [
                "blue-square",
                "left",
                "direction"
            ],
            "k": [
                47,
                11
            ],
            "o": 1
        },
        "dollar": {
            "a": "Banknote with Dollar Sign",
            "b": "1F4B5",
            "j": [
                "money",
                "sales",
                "bill",
                "currency"
            ],
            "k": [
                25,
                32
            ]
        },
        "shrimp": {
            "a": "Shrimp",
            "b": "1F990",
            "j": [
                "animal",
                "ocean",
                "nature",
                "seafood"
            ],
            "k": [
                42,
                40
            ],
            "o": 9
        },
        "minibus": {
            "a": "Minibus",
            "b": "1F690",
            "j": [
                "vehicle",
                "car",
                "transportation"
            ],
            "k": [
                34,
                24
            ]
        },
        "flag-eu": {
            "a": "European Union Flag",
            "b": "1F1EA-1F1FA",
            "k": [
                2,
                0
            ]
        },
        "lollipop": {
            "a": "Lollipop",
            "b": "1F36D",
            "j": [
                "food",
                "snack",
                "candy",
                "sweet"
            ],
            "k": [
                7,
                47
            ]
        },
        "squid": {
            "a": "Squid",
            "b": "1F991",
            "j": [
                "animal",
                "nature",
                "ocean",
                "sea"
            ],
            "k": [
                42,
                41
            ],
            "o": 9
        },
        "euro": {
            "a": "Banknote with Euro Sign",
            "b": "1F4B6",
            "j": [
                "money",
                "sales",
                "dollar",
                "currency"
            ],
            "k": [
                25,
                33
            ]
        },
        "flag-fi": {
            "a": "Finland Flag",
            "b": "1F1EB-1F1EE",
            "k": [
                2,
                1
            ]
        },
        "ambulance": {
            "a": "Ambulance",
            "b": "1F691",
            "j": [
                "health",
                "911",
                "hospital"
            ],
            "k": [
                34,
                25
            ]
        },
        "custard": {
            "a": "Custard",
            "b": "1F36E",
            "j": [
                "dessert",
                "food"
            ],
            "k": [
                7,
                48
            ]
        },
        "shushing_face": {
            "a": "Face with Finger Covering Closed Lips",
            "b": "1F92B",
            "k": [
                38,
                51
            ],
            "n": [
                "face_with_finger_covering_closed_lips"
            ],
            "o": 10
        },
        "rewind": {
            "a": "Black Left-Pointing Double Triangle",
            "b": "23EA",
            "j": [
                "play",
                "blue-square"
            ],
            "k": [
                46,
                46
            ]
        },
        "black_left_pointing_double_triangle_with_vertical_bar": {
            "a": "Black Left Pointing Double Triangle with Vertical Bar",
            "b": "23EE-FE0F",
            "c": "23EE",
            "k": [
                46,
                50
            ]
        },
        "face_with_hand_over_mouth": {
            "a": "Smiling Face with Smiling Eyes and Hand Covering Mouth",
            "b": "1F92D",
            "k": [
                39,
                1
            ],
            "n": [
                "smiling_face_with_smiling_eyes_and_hand_covering_mouth"
            ],
            "o": 10
        },
        "flag-fj": {
            "a": "Fiji Flag",
            "b": "1F1EB-1F1EF",
            "k": [
                2,
                2
            ]
        },
        "honey_pot": {
            "a": "Honey Pot",
            "b": "1F36F",
            "j": [
                "bees",
                "sweet",
                "kitchen"
            ],
            "k": [
                7,
                49
            ]
        },
        "snail": {
            "a": "Snail",
            "b": "1F40C",
            "j": [
                "slow",
                "animal",
                "shell"
            ],
            "k": [
                12,
                42
            ]
        },
        "pound": {
            "a": "Banknote with Pound Sign",
            "b": "1F4B7",
            "j": [
                "british",
                "sterling",
                "money",
                "sales",
                "bills",
                "uk",
                "england",
                "currency"
            ],
            "k": [
                25,
                34
            ]
        },
        "fire_engine": {
            "a": "Fire Engine",
            "b": "1F692",
            "j": [
                "transportation",
                "cars",
                "vehicle"
            ],
            "k": [
                34,
                26
            ]
        },
        "baby_bottle": {
            "a": "Baby Bottle",
            "b": "1F37C",
            "j": [
                "food",
                "container",
                "milk"
            ],
            "k": [
                8,
                10
            ]
        },
        "flag-fk": {
            "a": "Falkland Islands Flag",
            "b": "1F1EB-1F1F0",
            "k": [
                2,
                3
            ]
        },
        "butterfly": {
            "a": "Butterfly",
            "b": "1F98B",
            "j": [
                "animal",
                "insect",
                "nature",
                "caterpillar"
            ],
            "k": [
                42,
                35
            ],
            "o": 9
        },
        "money_with_wings": {
            "a": "Money with Wings",
            "b": "1F4B8",
            "j": [
                "dollar",
                "bills",
                "payment",
                "sale"
            ],
            "k": [
                25,
                35
            ]
        },
        "face_with_monocle": {
            "a": "Face with Monocle",
            "b": "1F9D0",
            "k": [
                42,
                49
            ],
            "o": 10
        },
        "police_car": {
            "a": "Police Car",
            "b": "1F693",
            "j": [
                "vehicle",
                "cars",
                "transportation",
                "law",
                "legal",
                "enforcement"
            ],
            "k": [
                34,
                27
            ]
        },
        "arrow_up_small": {
            "a": "Up-Pointing Small Red Triangle",
            "b": "1F53C",
            "j": [
                "blue-square",
                "triangle",
                "direction",
                "point",
                "forward",
                "top"
            ],
            "k": [
                28,
                10
            ]
        },
        "flag-fm": {
            "a": "Micronesia Flag",
            "b": "1F1EB-1F1F2",
            "k": [
                2,
                4
            ]
        },
        "glass_of_milk": {
            "a": "Glass of Milk",
            "b": "1F95B",
            "k": [
                42,
                7
            ],
            "o": 9
        },
        "credit_card": {
            "a": "Credit Card",
            "b": "1F4B3",
            "j": [
                "money",
                "sales",
                "dollar",
                "bill",
                "payment",
                "shopping"
            ],
            "k": [
                25,
                30
            ]
        },
        "oncoming_police_car": {
            "a": "Oncoming Police Car",
            "b": "1F694",
            "j": [
                "vehicle",
                "law",
                "legal",
                "enforcement",
                "911"
            ],
            "k": [
                34,
                28
            ]
        },
        "bug": {
            "a": "Bug",
            "b": "1F41B",
            "j": [
                "animal",
                "insect",
                "nature",
                "worm"
            ],
            "k": [
                13,
                5
            ]
        },
        "nerd_face": {
            "a": "Nerd Face",
            "b": "1F913",
            "j": [
                "face",
                "nerdy",
                "geek",
                "dork"
            ],
            "k": [
                37,
                27
            ],
            "o": 8
        },
        "arrow_double_up": {
            "a": "Black Up-Pointing Double Triangle",
            "b": "23EB",
            "j": [
                "blue-square",
                "direction",
                "top"
            ],
            "k": [
                46,
                47
            ]
        },
        "chart": {
            "a": "Chart with Upwards Trend and Yen Sign",
            "b": "1F4B9",
            "j": [
                "green-square",
                "graph",
                "presentation",
                "stats"
            ],
            "k": [
                25,
                36
            ]
        },
        "flag-fo": {
            "a": "Faroe Islands Flag",
            "b": "1F1EB-1F1F4",
            "k": [
                2,
                5
            ]
        },
        "ant": {
            "a": "Ant",
            "b": "1F41C",
            "j": [
                "animal",
                "insect",
                "nature",
                "bug"
            ],
            "k": [
                13,
                6
            ]
        },
        "arrow_down_small": {
            "a": "Down-Pointing Small Red Triangle",
            "b": "1F53D",
            "j": [
                "blue-square",
                "direction",
                "bottom"
            ],
            "k": [
                28,
                11
            ]
        },
        "smiling_imp": {
            "a": "Smiling Face with Horns",
            "b": "1F608",
            "j": [
                "devil",
                "horns"
            ],
            "k": [
                30,
                32
            ]
        },
        "taxi": {
            "a": "Taxi",
            "b": "1F695",
            "j": [
                "uber",
                "vehicle",
                "cars",
                "transportation"
            ],
            "k": [
                34,
                29
            ]
        },
        "coffee": {
            "a": "Hot Beverage",
            "b": "2615",
            "j": [
                "beverage",
                "caffeine",
                "latte",
                "espresso"
            ],
            "k": [
                47,
                24
            ],
            "o": 4
        },
        "fr": {
            "a": "France Flag",
            "b": "1F1EB-1F1F7",
            "j": [
                "banner",
                "flag",
                "nation",
                "france",
                "french",
                "country"
            ],
            "k": [
                2,
                6
            ],
            "n": [
                "flag-fr"
            ]
        },
        "oncoming_taxi": {
            "a": "Oncoming Taxi",
            "b": "1F696",
            "j": [
                "vehicle",
                "cars",
                "uber"
            ],
            "k": [
                34,
                30
            ]
        },
        "arrow_double_down": {
            "a": "Black Down-Pointing Double Triangle",
            "b": "23EC",
            "j": [
                "blue-square",
                "direction",
                "bottom"
            ],
            "k": [
                46,
                48
            ]
        },
        "imp": {
            "a": "Imp",
            "b": "1F47F",
            "j": [
                "devil",
                "angry",
                "horns"
            ],
            "k": [
                22,
                51
            ]
        },
        "currency_exchange": {
            "a": "Currency Exchange",
            "b": "1F4B1",
            "j": [
                "money",
                "sales",
                "dollar",
                "travel"
            ],
            "k": [
                25,
                28
            ]
        },
        "tea": {
            "a": "Teacup Without Handle",
            "b": "1F375",
            "j": [
                "drink",
                "bowl",
                "breakfast",
                "green",
                "british"
            ],
            "k": [
                8,
                3
            ]
        },
        "bee": {
            "a": "Honeybee",
            "b": "1F41D",
            "k": [
                13,
                7
            ],
            "n": [
                "honeybee"
            ]
        },
        "heavy_dollar_sign": {
            "a": "Heavy Dollar Sign",
            "b": "1F4B2",
            "j": [
                "money",
                "sales",
                "payment",
                "currency",
                "buck"
            ],
            "k": [
                25,
                29
            ]
        },
        "car": {
            "a": "Automobile",
            "b": "1F697",
            "k": [
                34,
                31
            ],
            "n": [
                "red_car"
            ]
        },
        "sake": {
            "a": "Sake Bottle and Cup",
            "b": "1F376",
            "j": [
                "wine",
                "drink",
                "drunk",
                "beverage",
                "japanese",
                "alcohol",
                "booze"
            ],
            "k": [
                8,
                4
            ]
        },
        "flag-ga": {
            "a": "Gabon Flag",
            "b": "1F1EC-1F1E6",
            "k": [
                2,
                7
            ]
        },
        "beetle": {
            "a": "Lady Beetle",
            "b": "1F41E",
            "j": [
                "animal",
                "insect",
                "nature",
                "ladybug"
            ],
            "k": [
                13,
                8
            ]
        },
        "japanese_ogre": {
            "a": "Japanese Ogre",
            "b": "1F479",
            "j": [
                "monster",
                "red",
                "mask",
                "halloween",
                "scary",
                "creepy",
                "devil",
                "demon",
                "japanese",
                "ogre"
            ],
            "k": [
                22,
                40
            ]
        },
        "double_vertical_bar": {
            "a": "Double Vertical Bar",
            "b": "23F8-FE0F",
            "c": "23F8",
            "k": [
                47,
                4
            ],
            "o": 7
        },
        "champagne": {
            "a": "Bottle with Popping Cork",
            "b": "1F37E",
            "j": [
                "drink",
                "wine",
                "bottle",
                "celebration"
            ],
            "k": [
                8,
                12
            ],
            "o": 8
        },
        "japanese_goblin": {
            "a": "Japanese Goblin",
            "b": "1F47A",
            "j": [
                "red",
                "evil",
                "mask",
                "monster",
                "scary",
                "creepy",
                "japanese",
                "goblin"
            ],
            "k": [
                22,
                41
            ]
        },
        "black_square_for_stop": {
            "a": "Black Square for Stop",
            "b": "23F9-FE0F",
            "c": "23F9",
            "k": [
                47,
                5
            ],
            "o": 7
        },
        "oncoming_automobile": {
            "a": "Oncoming Automobile",
            "b": "1F698",
            "j": [
                "car",
                "vehicle",
                "transportation"
            ],
            "k": [
                34,
                32
            ]
        },
        "email": {
            "a": "Envelope",
            "b": "2709-FE0F",
            "c": "2709",
            "j": [
                "letter",
                "postal",
                "inbox",
                "communication"
            ],
            "k": [
                49,
                17
            ],
            "n": [
                "envelope"
            ],
            "o": 1
        },
        "cricket": {
            "a": "Cricket",
            "b": "1F997",
            "j": [
                "sports"
            ],
            "k": [
                42,
                47
            ],
            "o": 10
        },
        "gb": {
            "a": "United Kingdom Flag",
            "b": "1F1EC-1F1E7",
            "k": [
                2,
                8
            ],
            "n": [
                "uk",
                "flag-gb"
            ]
        },
        "black_circle_for_record": {
            "a": "Black Circle for Record",
            "b": "23FA-FE0F",
            "c": "23FA",
            "k": [
                47,
                6
            ],
            "o": 7
        },
        "flag-gd": {
            "a": "Grenada Flag",
            "b": "1F1EC-1F1E9",
            "k": [
                2,
                9
            ]
        },
        "spider": {
            "a": "Spider",
            "b": "1F577-FE0F",
            "c": "1F577",
            "j": [
                "animal",
                "arachnid"
            ],
            "k": [
                29,
                18
            ],
            "o": 7
        },
        "blue_car": {
            "a": "Recreational Vehicle",
            "b": "1F699",
            "j": [
                "transportation",
                "vehicle"
            ],
            "k": [
                34,
                33
            ]
        },
        "skull": {
            "a": "Skull",
            "b": "1F480",
            "j": [
                "dead",
                "skeleton",
                "creepy",
                "death"
            ],
            "k": [
                23,
                0
            ]
        },
        "e-mail": {
            "a": "E-Mail Symbol",
            "b": "1F4E7",
            "j": [
                "communication",
                "inbox"
            ],
            "k": [
                26,
                30
            ]
        },
        "wine_glass": {
            "a": "Wine Glass",
            "b": "1F377",
            "j": [
                "drink",
                "beverage",
                "drunk",
                "alcohol",
                "booze"
            ],
            "k": [
                8,
                5
            ]
        },
        "spider_web": {
            "a": "Spider Web",
            "b": "1F578-FE0F",
            "c": "1F578",
            "j": [
                "animal",
                "insect",
                "arachnid",
                "silk"
            ],
            "k": [
                29,
                19
            ],
            "o": 7
        },
        "cocktail": {
            "a": "Cocktail Glass",
            "b": "1F378",
            "j": [
                "drink",
                "drunk",
                "alcohol",
                "beverage",
                "booze",
                "mojito"
            ],
            "k": [
                8,
                6
            ]
        },
        "skull_and_crossbones": {
            "a": "Skull and Crossbones",
            "b": "2620-FE0F",
            "c": "2620",
            "j": [
                "poison",
                "danger",
                "deadly",
                "scary",
                "death",
                "pirate",
                "evil"
            ],
            "k": [
                47,
                32
            ],
            "o": 1
        },
        "flag-ge": {
            "a": "Georgia Flag",
            "b": "1F1EC-1F1EA",
            "k": [
                2,
                10
            ]
        },
        "eject": {
            "a": "Eject",
            "b": "23CF-FE0F",
            "c": "23CF",
            "k": [
                46,
                44
            ],
            "o": 4
        },
        "truck": {
            "a": "Delivery Truck",
            "b": "1F69A",
            "j": [
                "cars",
                "transportation"
            ],
            "k": [
                34,
                34
            ]
        },
        "incoming_envelope": {
            "a": "Incoming Envelope",
            "b": "1F4E8",
            "j": [
                "email",
                "inbox"
            ],
            "k": [
                26,
                31
            ]
        },
        "tropical_drink": {
            "a": "Tropical Drink",
            "b": "1F379",
            "j": [
                "beverage",
                "cocktail",
                "summer",
                "beach",
                "alcohol",
                "booze",
                "mojito"
            ],
            "k": [
                8,
                7
            ]
        },
        "scorpion": {
            "a": "Scorpion",
            "b": "1F982",
            "j": [
                "animal",
                "arachnid"
            ],
            "k": [
                42,
                26
            ],
            "o": 8
        },
        "cinema": {
            "a": "Cinema",
            "b": "1F3A6",
            "j": [
                "blue-square",
                "record",
                "film",
                "movie",
                "curtain",
                "stage",
                "theater"
            ],
            "k": [
                9,
                0
            ]
        },
        "articulated_lorry": {
            "a": "Articulated Lorry",
            "b": "1F69B",
            "j": [
                "vehicle",
                "cars",
                "transportation",
                "express"
            ],
            "k": [
                34,
                35
            ]
        },
        "envelope_with_arrow": {
            "a": "Envelope with Downwards Arrow Above",
            "b": "1F4E9",
            "j": [
                "email",
                "communication"
            ],
            "k": [
                26,
                32
            ]
        },
        "ghost": {
            "a": "Ghost",
            "b": "1F47B",
            "j": [
                "halloween",
                "spooky",
                "scary"
            ],
            "k": [
                22,
                42
            ]
        },
        "flag-gf": {
            "a": "French Guiana Flag",
            "b": "1F1EC-1F1EB",
            "k": [
                2,
                11
            ]
        },
        "bouquet": {
            "a": "Bouquet",
            "b": "1F490",
            "j": [
                "flowers",
                "nature",
                "spring"
            ],
            "k": [
                24,
                42
            ]
        },
        "tractor": {
            "a": "Tractor",
            "b": "1F69C",
            "j": [
                "vehicle",
                "car",
                "farming",
                "agriculture"
            ],
            "k": [
                34,
                36
            ]
        },
        "beer": {
            "a": "Beer Mug",
            "b": "1F37A",
            "j": [
                "relax",
                "beverage",
                "drink",
                "drunk",
                "party",
                "pub",
                "summer",
                "alcohol",
                "booze"
            ],
            "k": [
                8,
                8
            ]
        },
        "outbox_tray": {
            "a": "Outbox Tray",
            "b": "1F4E4",
            "j": [
                "inbox",
                "email"
            ],
            "k": [
                26,
                27
            ]
        },
        "low_brightness": {
            "a": "Low Brightness Symbol",
            "b": "1F505",
            "j": [
                "sun",
                "afternoon",
                "warm",
                "summer"
            ],
            "k": [
                27,
                7
            ]
        },
        "alien": {
            "a": "Extraterrestrial Alien",
            "b": "1F47D",
            "j": [
                "UFO",
                "paul",
                "weird",
                "outer_space"
            ],
            "k": [
                22,
                49
            ]
        },
        "flag-gg": {
            "a": "Guernsey Flag",
            "b": "1F1EC-1F1EC",
            "k": [
                2,
                12
            ]
        },
        "cherry_blossom": {
            "a": "Cherry Blossom",
            "b": "1F338",
            "j": [
                "nature",
                "plant",
                "spring",
                "flower"
            ],
            "k": [
                6,
                46
            ]
        },
        "inbox_tray": {
            "a": "Inbox Tray",
            "b": "1F4E5",
            "j": [
                "email",
                "documents"
            ],
            "k": [
                26,
                28
            ]
        },
        "flag-gh": {
            "a": "Ghana Flag",
            "b": "1F1EC-1F1ED",
            "k": [
                2,
                13
            ]
        },
        "bike": {
            "a": "Bicycle",
            "b": "1F6B2",
            "j": [
                "sports",
                "bicycle",
                "exercise",
                "hipster"
            ],
            "k": [
                35,
                23
            ]
        },
        "space_invader": {
            "a": "Alien Monster",
            "b": "1F47E",
            "j": [
                "game",
                "arcade",
                "play"
            ],
            "k": [
                22,
                50
            ]
        },
        "beers": {
            "a": "Clinking Beer Mugs",
            "b": "1F37B",
            "j": [
                "relax",
                "beverage",
                "drink",
                "drunk",
                "party",
                "pub",
                "summer",
                "alcohol",
                "booze"
            ],
            "k": [
                8,
                9
            ]
        },
        "high_brightness": {
            "a": "High Brightness Symbol",
            "b": "1F506",
            "j": [
                "sun",
                "light"
            ],
            "k": [
                27,
                8
            ]
        },
        "package": {
            "a": "Package",
            "b": "1F4E6",
            "j": [
                "mail",
                "gift",
                "cardboard",
                "box",
                "moving"
            ],
            "k": [
                26,
                29
            ]
        },
        "scooter": {
            "a": "Scooter",
            "b": "1F6F4",
            "k": [
                37,
                19
            ],
            "o": 9
        },
        "white_flower": {
            "a": "White Flower",
            "b": "1F4AE",
            "j": [
                "japanese",
                "spring"
            ],
            "k": [
                25,
                25
            ]
        },
        "clinking_glasses": {
            "a": "Clinking Glasses",
            "b": "1F942",
            "j": [
                "beverage",
                "drink",
                "party",
                "alcohol",
                "celebrate",
                "cheers"
            ],
            "k": [
                41,
                38
            ],
            "o": 9
        },
        "robot_face": {
            "a": "Robot Face",
            "b": "1F916",
            "k": [
                37,
                30
            ],
            "o": 8
        },
        "signal_strength": {
            "a": "Antenna with Bars",
            "b": "1F4F6",
            "j": [
                "blue-square",
                "reception",
                "phone",
                "internet",
                "connection",
                "wifi",
                "bluetooth",
                "bars"
            ],
            "k": [
                26,
                45
            ]
        },
        "flag-gi": {
            "a": "Gibraltar Flag",
            "b": "1F1EC-1F1EE",
            "k": [
                2,
                14
            ]
        },
        "flag-gl": {
            "a": "Greenland Flag",
            "b": "1F1EC-1F1F1",
            "k": [
                2,
                15
            ]
        },
        "motor_scooter": {
            "a": "Motor Scooter",
            "b": "1F6F5",
            "j": [
                "vehicle",
                "vespa",
                "sasha"
            ],
            "k": [
                37,
                20
            ],
            "o": 9
        },
        "mailbox": {
            "a": "Closed Mailbox with Raised Flag",
            "b": "1F4EB",
            "j": [
                "email",
                "inbox",
                "communication"
            ],
            "k": [
                26,
                34
            ]
        },
        "vibration_mode": {
            "a": "Vibration Mode",
            "b": "1F4F3",
            "j": [
                "orange-square",
                "phone"
            ],
            "k": [
                26,
                42
            ]
        },
        "hankey": {
            "a": "Pile of Poo",
            "b": "1F4A9",
            "k": [
                25,
                15
            ],
            "n": [
                "poop",
                "shit"
            ]
        },
        "rosette": {
            "a": "Rosette",
            "b": "1F3F5-FE0F",
            "c": "1F3F5",
            "j": [
                "flower",
                "decoration",
                "military"
            ],
            "k": [
                12,
                20
            ],
            "o": 7
        },
        "tumbler_glass": {
            "a": "Tumbler Glass",
            "b": "1F943",
            "j": [
                "drink",
                "beverage",
                "drunk",
                "alcohol",
                "liquor",
                "booze",
                "bourbon",
                "scotch",
                "whisky",
                "glass",
                "shot"
            ],
            "k": [
                41,
                39
            ],
            "o": 9
        },
        "cup_with_straw": {
            "a": "Cup with Straw",
            "b": "1F964",
            "j": [
                "drink",
                "soda"
            ],
            "k": [
                42,
                16
            ],
            "o": 10
        },
        "flag-gm": {
            "a": "Gambia Flag",
            "b": "1F1EC-1F1F2",
            "k": [
                2,
                16
            ]
        },
        "mailbox_closed": {
            "a": "Closed Mailbox with Lowered Flag",
            "b": "1F4EA",
            "j": [
                "email",
                "communication",
                "inbox"
            ],
            "k": [
                26,
                33
            ]
        },
        "mobile_phone_off": {
            "a": "Mobile Phone off",
            "b": "1F4F4",
            "j": [
                "mute",
                "orange-square",
                "silence",
                "quiet"
            ],
            "k": [
                26,
                43
            ]
        },
        "busstop": {
            "a": "Bus Stop",
            "b": "1F68F",
            "j": [
                "transportation",
                "wait"
            ],
            "k": [
                34,
                23
            ]
        },
        "smiley_cat": {
            "a": "Smiling Cat Face with Open Mouth",
            "b": "1F63A",
            "j": [
                "animal",
                "cats",
                "happy",
                "smile"
            ],
            "k": [
                31,
                30
            ]
        },
        "rose": {
            "a": "Rose",
            "b": "1F339",
            "j": [
                "flowers",
                "valentines",
                "love",
                "spring"
            ],
            "k": [
                6,
                47
            ]
        },
        "motorway": {
            "a": "Motorway",
            "b": "1F6E3-FE0F",
            "c": "1F6E3",
            "j": [
                "road",
                "cupertino",
                "interstate",
                "highway"
            ],
            "k": [
                37,
                11
            ],
            "o": 7
        },
        "smile_cat": {
            "a": "Grinning Cat Face with Smiling Eyes",
            "b": "1F638",
            "j": [
                "animal",
                "cats",
                "smile"
            ],
            "k": [
                31,
                28
            ]
        },
        "flag-gn": {
            "a": "Guinea Flag",
            "b": "1F1EC-1F1F3",
            "k": [
                2,
                17
            ]
        },
        "wilted_flower": {
            "a": "Wilted Flower",
            "b": "1F940",
            "j": [
                "plant",
                "nature",
                "flower"
            ],
            "k": [
                41,
                36
            ],
            "o": 9
        },
        "mailbox_with_mail": {
            "a": "Open Mailbox with Raised Flag",
            "b": "1F4EC",
            "j": [
                "email",
                "inbox",
                "communication"
            ],
            "k": [
                26,
                35
            ]
        },
        "chopsticks": {
            "a": "Chopsticks",
            "b": "1F962",
            "j": [
                "food"
            ],
            "k": [
                42,
                14
            ],
            "o": 10
        },
        "female_sign": {
            "a": "Female Sign",
            "b": "2640-FE0F",
            "c": "2640",
            "k": [
                47,
                42
            ],
            "o": 1
        },
        "mailbox_with_no_mail": {
            "a": "Open Mailbox with Lowered Flag",
            "b": "1F4ED",
            "j": [
                "email",
                "inbox"
            ],
            "k": [
                26,
                36
            ]
        },
        "knife_fork_plate": {
            "a": "Knife Fork Plate",
            "b": "1F37D-FE0F",
            "c": "1F37D",
            "k": [
                8,
                11
            ],
            "o": 7
        },
        "hibiscus": {
            "a": "Hibiscus",
            "b": "1F33A",
            "j": [
                "plant",
                "vegetable",
                "flowers",
                "beach"
            ],
            "k": [
                6,
                48
            ]
        },
        "flag-gp": {
            "a": "Guadeloupe Flag",
            "b": "1F1EC-1F1F5",
            "k": [
                2,
                18
            ]
        },
        "railway_track": {
            "a": "Railway Track",
            "b": "1F6E4-FE0F",
            "c": "1F6E4",
            "j": [
                "train",
                "transportation"
            ],
            "k": [
                37,
                12
            ],
            "o": 7
        },
        "male_sign": {
            "a": "Male Sign",
            "b": "2642-FE0F",
            "c": "2642",
            "k": [
                47,
                43
            ],
            "o": 1
        },
        "joy_cat": {
            "a": "Cat Face with Tears of Joy",
            "b": "1F639",
            "j": [
                "animal",
                "cats",
                "haha",
                "happy",
                "tears"
            ],
            "k": [
                31,
                29
            ]
        },
        "fuelpump": {
            "a": "Fuel Pump",
            "b": "26FD",
            "j": [
                "gas station",
                "petroleum"
            ],
            "k": [
                49,
                13
            ],
            "o": 5
        },
        "sunflower": {
            "a": "Sunflower",
            "b": "1F33B",
            "j": [
                "nature",
                "plant",
                "fall"
            ],
            "k": [
                6,
                49
            ]
        },
        "postbox": {
            "a": "Postbox",
            "b": "1F4EE",
            "j": [
                "email",
                "letter",
                "envelope"
            ],
            "k": [
                26,
                37
            ]
        },
        "flag-gq": {
            "a": "Equatorial Guinea Flag",
            "b": "1F1EC-1F1F6",
            "k": [
                2,
                19
            ]
        },
        "heart_eyes_cat": {
            "a": "Smiling Cat Face with Heart-Shaped Eyes",
            "b": "1F63B",
            "j": [
                "animal",
                "love",
                "like",
                "affection",
                "cats",
                "valentines",
                "heart"
            ],
            "k": [
                31,
                31
            ]
        },
        "fork_and_knife": {
            "a": "Fork and Knife",
            "b": "1F374",
            "j": [
                "cutlery",
                "kitchen"
            ],
            "k": [
                8,
                2
            ]
        },
        "medical_symbol": {
            "a": "Medical Symbol",
            "b": "2695-FE0F",
            "c": "2695",
            "k": [
                48,
                14
            ],
            "n": [
                "staff_of_aesculapius"
            ],
            "o": 4
        },
        "recycle": {
            "a": "Black Universal Recycling Symbol",
            "b": "267B-FE0F",
            "c": "267B",
            "j": [
                "arrow",
                "environment",
                "garbage",
                "trash"
            ],
            "k": [
                48,
                9
            ],
            "o": 3
        },
        "spoon": {
            "a": "Spoon",
            "b": "1F944",
            "j": [
                "cutlery",
                "kitchen",
                "tableware"
            ],
            "k": [
                41,
                40
            ],
            "o": 9
        },
        "blossom": {
            "a": "Blossom",
            "b": "1F33C",
            "j": [
                "nature",
                "flowers",
                "yellow"
            ],
            "k": [
                6,
                50
            ]
        },
        "rotating_light": {
            "a": "Police Cars Revolving Light",
            "b": "1F6A8",
            "j": [
                "police",
                "ambulance",
                "911",
                "emergency",
                "alert",
                "error",
                "pinged",
                "law",
                "legal"
            ],
            "k": [
                35,
                13
            ]
        },
        "smirk_cat": {
            "a": "Cat Face with Wry Smile",
            "b": "1F63C",
            "j": [
                "animal",
                "cats",
                "smirk"
            ],
            "k": [
                31,
                32
            ]
        },
        "ballot_box_with_ballot": {
            "a": "Ballot Box with Ballot",
            "b": "1F5F3-FE0F",
            "c": "1F5F3",
            "k": [
                30,
                17
            ],
            "o": 7
        },
        "flag-gr": {
            "a": "Greece Flag",
            "b": "1F1EC-1F1F7",
            "k": [
                2,
                20
            ]
        },
        "kissing_cat": {
            "a": "Kissing Cat Face with Closed Eyes",
            "b": "1F63D",
            "j": [
                "animal",
                "cats",
                "kiss"
            ],
            "k": [
                31,
                33
            ]
        },
        "pencil2": {
            "a": "Pencil",
            "b": "270F-FE0F",
            "c": "270F",
            "j": [
                "stationery",
                "write",
                "paper",
                "writing",
                "school",
                "study"
            ],
            "k": [
                49,
                42
            ],
            "o": 1
        },
        "traffic_light": {
            "a": "Horizontal Traffic Light",
            "b": "1F6A5",
            "j": [
                "transportation",
                "signal"
            ],
            "k": [
                35,
                10
            ]
        },
        "fleur_de_lis": {
            "a": "Fleur De Lis",
            "b": "269C-FE0F",
            "c": "269C",
            "j": [
                "decorative",
                "scout"
            ],
            "k": [
                48,
                19
            ],
            "o": 4
        },
        "tulip": {
            "a": "Tulip",
            "b": "1F337",
            "j": [
                "flowers",
                "plant",
                "nature",
                "summer",
                "spring"
            ],
            "k": [
                6,
                45
            ]
        },
        "hocho": {
            "a": "Hocho",
            "b": "1F52A",
            "j": [
                "knife",
                "blade",
                "cutlery",
                "kitchen",
                "weapon"
            ],
            "k": [
                27,
                44
            ],
            "n": [
                "knife"
            ]
        },
        "flag-gs": {
            "a": "South Georgia & South Sandwich Islands Flag",
            "b": "1F1EC-1F1F8",
            "k": [
                2,
                21
            ]
        },
        "seedling": {
            "a": "Seedling",
            "b": "1F331",
            "j": [
                "plant",
                "nature",
                "grass",
                "lawn",
                "spring"
            ],
            "k": [
                6,
                39
            ]
        },
        "amphora": {
            "a": "Amphora",
            "b": "1F3FA",
            "j": [
                "vase",
                "jar"
            ],
            "k": [
                12,
                24
            ],
            "o": 8
        },
        "scream_cat": {
            "a": "Weary Cat Face",
            "b": "1F640",
            "j": [
                "animal",
                "cats",
                "munch",
                "scared",
                "scream"
            ],
            "k": [
                31,
                36
            ]
        },
        "vertical_traffic_light": {
            "a": "Vertical Traffic Light",
            "b": "1F6A6",
            "j": [
                "transportation",
                "driving"
            ],
            "k": [
                35,
                11
            ]
        },
        "black_nib": {
            "a": "Black Nib",
            "b": "2712-FE0F",
            "c": "2712",
            "j": [
                "pen",
                "stationery",
                "writing",
                "write"
            ],
            "k": [
                49,
                43
            ],
            "o": 1
        },
        "flag-gt": {
            "a": "Guatemala Flag",
            "b": "1F1EC-1F1F9",
            "k": [
                2,
                22
            ]
        },
        "trident": {
            "a": "Trident Emblem",
            "b": "1F531",
            "j": [
                "weapon",
                "spear"
            ],
            "k": [
                27,
                51
            ]
        },
        "flag-gu": {
            "a": "Guam Flag",
            "b": "1F1EC-1F1FA",
            "k": [
                2,
                23
            ]
        },
        "name_badge": {
            "a": "Name Badge",
            "b": "1F4DB",
            "j": [
                "fire",
                "forbid"
            ],
            "k": [
                26,
                18
            ]
        },
        "construction": {
            "a": "Construction Sign",
            "b": "1F6A7",
            "j": [
                "wip",
                "progress",
                "caution",
                "warning"
            ],
            "k": [
                35,
                12
            ]
        },
        "lower_left_fountain_pen": {
            "a": "Lower Left Fountain Pen",
            "b": "1F58B-FE0F",
            "c": "1F58B",
            "k": [
                29,
                29
            ],
            "o": 7
        },
        "evergreen_tree": {
            "a": "Evergreen Tree",
            "b": "1F332",
            "j": [
                "plant",
                "nature"
            ],
            "k": [
                6,
                40
            ]
        },
        "crying_cat_face": {
            "a": "Crying Cat Face",
            "b": "1F63F",
            "j": [
                "animal",
                "tears",
                "weep",
                "sad",
                "cats",
                "upset",
                "cry"
            ],
            "k": [
                31,
                35
            ]
        },
        "flag-gw": {
            "a": "Guinea-Bissau Flag",
            "b": "1F1EC-1F1FC",
            "k": [
                2,
                24
            ]
        },
        "lower_left_ballpoint_pen": {
            "a": "Lower Left Ballpoint Pen",
            "b": "1F58A-FE0F",
            "c": "1F58A",
            "k": [
                29,
                28
            ],
            "o": 7
        },
        "pouting_cat": {
            "a": "Pouting Cat Face",
            "b": "1F63E",
            "j": [
                "animal",
                "cats"
            ],
            "k": [
                31,
                34
            ]
        },
        "deciduous_tree": {
            "a": "Deciduous Tree",
            "b": "1F333",
            "j": [
                "plant",
                "nature"
            ],
            "k": [
                6,
                41
            ]
        },
        "octagonal_sign": {
            "a": "Octagonal Sign",
            "b": "1F6D1",
            "k": [
                37,
                6
            ],
            "o": 9
        },
        "beginner": {
            "a": "Japanese Symbol for Beginner",
            "b": "1F530",
            "j": [
                "badge",
                "shield"
            ],
            "k": [
                27,
                50
            ]
        },
        "flag-gy": {
            "a": "Guyana Flag",
            "b": "1F1EC-1F1FE",
            "k": [
                2,
                25
            ]
        },
        "lower_left_paintbrush": {
            "a": "Lower Left Paintbrush",
            "b": "1F58C-FE0F",
            "c": "1F58C",
            "k": [
                29,
                30
            ],
            "o": 7
        },
        "o": {
            "a": "Heavy Large Circle",
            "b": "2B55",
            "j": [
                "circle",
                "round"
            ],
            "k": [
                50,
                23
            ],
            "o": 5
        },
        "palm_tree": {
            "a": "Palm Tree",
            "b": "1F334",
            "j": [
                "plant",
                "vegetable",
                "nature",
                "summer",
                "beach",
                "mojito",
                "tropical"
            ],
            "k": [
                6,
                42
            ]
        },
        "anchor": {
            "a": "Anchor",
            "b": "2693",
            "j": [
                "ship",
                "ferry",
                "sea",
                "boat"
            ],
            "k": [
                48,
                12
            ],
            "o": 4
        },
        "see_no_evil": {
            "a": "See-No-Evil Monkey",
            "b": "1F648",
            "j": [
                "monkey",
                "animal",
                "nature",
                "haha"
            ],
            "k": [
                32,
                43
            ]
        },
        "boat": {
            "a": "Sailboat",
            "b": "26F5",
            "k": [
                48,
                43
            ],
            "n": [
                "sailboat"
            ],
            "o": 5
        },
        "white_check_mark": {
            "a": "White Heavy Check Mark",
            "b": "2705",
            "j": [
                "green-square",
                "ok",
                "agree",
                "vote",
                "election",
                "answer",
                "tick"
            ],
            "k": [
                49,
                15
            ]
        },
        "flag-hk": {
            "a": "Hong Kong Sar China Flag",
            "b": "1F1ED-1F1F0",
            "k": [
                2,
                26
            ]
        },
        "lower_left_crayon": {
            "a": "Lower Left Crayon",
            "b": "1F58D-FE0F",
            "c": "1F58D",
            "k": [
                29,
                31
            ],
            "o": 7
        },
        "hear_no_evil": {
            "a": "Hear-No-Evil Monkey",
            "b": "1F649",
            "j": [
                "animal",
                "monkey",
                "nature"
            ],
            "k": [
                32,
                44
            ]
        },
        "cactus": {
            "a": "Cactus",
            "b": "1F335",
            "j": [
                "vegetable",
                "plant",
                "nature"
            ],
            "k": [
                6,
                43
            ]
        },
        "ear_of_rice": {
            "a": "Ear of Rice",
            "b": "1F33E",
            "j": [
                "nature",
                "plant"
            ],
            "k": [
                7,
                0
            ]
        },
        "speak_no_evil": {
            "a": "Speak-No-Evil Monkey",
            "b": "1F64A",
            "j": [
                "monkey",
                "animal",
                "nature",
                "omg"
            ],
            "k": [
                32,
                45
            ]
        },
        "flag-hm": {
            "a": "Heard & Mcdonald Islands Flag",
            "b": "1F1ED-1F1F2",
            "k": [
                2,
                27
            ]
        },
        "ballot_box_with_check": {
            "a": "Ballot Box with Check",
            "b": "2611-FE0F",
            "c": "2611",
            "j": [
                "ok",
                "agree",
                "confirm",
                "black-square",
                "vote",
                "election",
                "yes",
                "tick"
            ],
            "k": [
                47,
                22
            ],
            "o": 1
        },
        "canoe": {
            "a": "Canoe",
            "b": "1F6F6",
            "j": [
                "boat",
                "paddle",
                "water",
                "ship"
            ],
            "k": [
                37,
                21
            ],
            "o": 9
        },
        "memo": {
            "a": "Memo",
            "b": "1F4DD",
            "j": [
                "write",
                "documents",
                "stationery",
                "pencil",
                "paper",
                "writing",
                "legal",
                "exam",
                "quiz",
                "test",
                "study",
                "compose"
            ],
            "k": [
                26,
                20
            ],
            "n": [
                "pencil"
            ]
        },
        "herb": {
            "a": "Herb",
            "b": "1F33F",
            "j": [
                "vegetable",
                "plant",
                "medicine",
                "weed",
                "grass",
                "lawn"
            ],
            "k": [
                7,
                1
            ]
        },
        "flag-hn": {
            "a": "Honduras Flag",
            "b": "1F1ED-1F1F3",
            "k": [
                2,
                28
            ]
        },
        "heavy_check_mark": {
            "a": "Heavy Check Mark",
            "b": "2714-FE0F",
            "c": "2714",
            "j": [
                "ok",
                "nike",
                "answer",
                "yes",
                "tick"
            ],
            "k": [
                49,
                44
            ],
            "o": 1
        },
        "briefcase": {
            "a": "Briefcase",
            "b": "1F4BC",
            "j": [
                "business",
                "documents",
                "work",
                "law",
                "legal",
                "job",
                "career"
            ],
            "k": [
                25,
                39
            ]
        },
        "speedboat": {
            "a": "Speedboat",
            "b": "1F6A4",
            "j": [
                "ship",
                "transportation",
                "vehicle",
                "summer"
            ],
            "k": [
                35,
                9
            ]
        },
        "baby": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F476-1F3FB",
                    "non_qualified": null,
                    "image": "1f476-1f3fb.png",
                    "sheet_x": 22,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F476-1F3FC",
                    "non_qualified": null,
                    "image": "1f476-1f3fc.png",
                    "sheet_x": 22,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F476-1F3FD",
                    "non_qualified": null,
                    "image": "1f476-1f3fd.png",
                    "sheet_x": 22,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F476-1F3FE",
                    "non_qualified": null,
                    "image": "1f476-1f3fe.png",
                    "sheet_x": 22,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F476-1F3FF",
                    "non_qualified": null,
                    "image": "1f476-1f3ff.png",
                    "sheet_x": 22,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Baby",
            "b": "1F476",
            "j": [
                "child",
                "boy",
                "girl",
                "toddler"
            ],
            "k": [
                22,
                10
            ]
        },
        "heavy_multiplication_x": {
            "a": "Heavy Multiplication X",
            "b": "2716-FE0F",
            "c": "2716",
            "j": [
                "math",
                "calculation"
            ],
            "k": [
                49,
                45
            ],
            "o": 1
        },
        "child": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D2-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d2-1f3fb.png",
                    "sheet_x": 43,
                    "sheet_y": 5,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D2-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d2-1f3fc.png",
                    "sheet_x": 43,
                    "sheet_y": 6,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D2-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d2-1f3fd.png",
                    "sheet_x": 43,
                    "sheet_y": 7,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D2-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d2-1f3fe.png",
                    "sheet_x": 43,
                    "sheet_y": 8,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D2-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d2-1f3ff.png",
                    "sheet_x": 43,
                    "sheet_y": 9,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Child",
            "b": "1F9D2",
            "j": [
                "gender-neutral",
                "young"
            ],
            "k": [
                43,
                4
            ],
            "o": 10
        },
        "shamrock": {
            "a": "Shamrock",
            "b": "2618-FE0F",
            "c": "2618",
            "j": [
                "vegetable",
                "plant",
                "nature",
                "irish",
                "clover"
            ],
            "k": [
                47,
                25
            ],
            "o": 4
        },
        "passenger_ship": {
            "a": "Passenger Ship",
            "b": "1F6F3-FE0F",
            "c": "1F6F3",
            "j": [
                "yacht",
                "cruise",
                "ferry"
            ],
            "k": [
                37,
                18
            ],
            "o": 7
        },
        "flag-hr": {
            "a": "Croatia Flag",
            "b": "1F1ED-1F1F7",
            "k": [
                2,
                29
            ]
        },
        "file_folder": {
            "a": "File Folder",
            "b": "1F4C1",
            "j": [
                "documents",
                "business",
                "office"
            ],
            "k": [
                25,
                44
            ]
        },
        "x": {
            "a": "Cross Mark",
            "b": "274C",
            "j": [
                "no",
                "delete",
                "remove",
                "cancel"
            ],
            "k": [
                50,
                1
            ]
        },
        "four_leaf_clover": {
            "a": "Four Leaf Clover",
            "b": "1F340",
            "j": [
                "vegetable",
                "plant",
                "nature",
                "lucky",
                "irish"
            ],
            "k": [
                7,
                2
            ]
        },
        "open_file_folder": {
            "a": "Open File Folder",
            "b": "1F4C2",
            "j": [
                "documents",
                "load"
            ],
            "k": [
                25,
                45
            ]
        },
        "boy": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F466-1F3FB",
                    "non_qualified": null,
                    "image": "1f466-1f3fb.png",
                    "sheet_x": 15,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F466-1F3FC",
                    "non_qualified": null,
                    "image": "1f466-1f3fc.png",
                    "sheet_x": 15,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F466-1F3FD",
                    "non_qualified": null,
                    "image": "1f466-1f3fd.png",
                    "sheet_x": 15,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F466-1F3FE",
                    "non_qualified": null,
                    "image": "1f466-1f3fe.png",
                    "sheet_x": 15,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F466-1F3FF",
                    "non_qualified": null,
                    "image": "1f466-1f3ff.png",
                    "sheet_x": 15,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Boy",
            "b": "1F466",
            "j": [
                "man",
                "male",
                "guy",
                "teenager"
            ],
            "k": [
                15,
                42
            ]
        },
        "ferry": {
            "a": "Ferry",
            "b": "26F4-FE0F",
            "c": "26F4",
            "j": [
                "boat",
                "ship",
                "yacht"
            ],
            "k": [
                48,
                42
            ],
            "o": 5
        },
        "flag-ht": {
            "a": "Haiti Flag",
            "b": "1F1ED-1F1F9",
            "k": [
                2,
                30
            ]
        },
        "girl": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F467-1F3FB",
                    "non_qualified": null,
                    "image": "1f467-1f3fb.png",
                    "sheet_x": 15,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F467-1F3FC",
                    "non_qualified": null,
                    "image": "1f467-1f3fc.png",
                    "sheet_x": 15,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F467-1F3FD",
                    "non_qualified": null,
                    "image": "1f467-1f3fd.png",
                    "sheet_x": 15,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F467-1F3FE",
                    "non_qualified": null,
                    "image": "1f467-1f3fe.png",
                    "sheet_x": 16,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F467-1F3FF",
                    "non_qualified": null,
                    "image": "1f467-1f3ff.png",
                    "sheet_x": 16,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Girl",
            "b": "1F467",
            "j": [
                "female",
                "woman",
                "teenager"
            ],
            "k": [
                15,
                48
            ]
        },
        "negative_squared_cross_mark": {
            "a": "Negative Squared Cross Mark",
            "b": "274E",
            "j": [
                "x",
                "green-square",
                "no",
                "deny"
            ],
            "k": [
                50,
                2
            ]
        },
        "flag-hu": {
            "a": "Hungary Flag",
            "b": "1F1ED-1F1FA",
            "k": [
                2,
                31
            ]
        },
        "card_index_dividers": {
            "a": "Card Index Dividers",
            "b": "1F5C2-FE0F",
            "c": "1F5C2",
            "j": [
                "organizing",
                "business",
                "stationery"
            ],
            "k": [
                30,
                4
            ],
            "o": 7
        },
        "maple_leaf": {
            "a": "Maple Leaf",
            "b": "1F341",
            "j": [
                "nature",
                "plant",
                "vegetable",
                "ca",
                "fall"
            ],
            "k": [
                7,
                3
            ]
        },
        "motor_boat": {
            "a": "Motor Boat",
            "b": "1F6E5-FE0F",
            "c": "1F6E5",
            "j": [
                "ship"
            ],
            "k": [
                37,
                13
            ],
            "o": 7
        },
        "flag-ic": {
            "a": "Canary Islands Flag",
            "b": "1F1EE-1F1E8",
            "k": [
                2,
                32
            ]
        },
        "fallen_leaf": {
            "a": "Fallen Leaf",
            "b": "1F342",
            "j": [
                "nature",
                "plant",
                "vegetable",
                "leaves"
            ],
            "k": [
                7,
                4
            ]
        },
        "adult": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D1-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d1-1f3fb.png",
                    "sheet_x": 42,
                    "sheet_y": 51,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D1-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d1-1f3fc.png",
                    "sheet_x": 43,
                    "sheet_y": 0,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D1-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d1-1f3fd.png",
                    "sheet_x": 43,
                    "sheet_y": 1,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D1-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d1-1f3fe.png",
                    "sheet_x": 43,
                    "sheet_y": 2,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D1-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d1-1f3ff.png",
                    "sheet_x": 43,
                    "sheet_y": 3,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Adult",
            "b": "1F9D1",
            "j": [
                "gender-neutral",
                "person"
            ],
            "k": [
                42,
                50
            ],
            "o": 10
        },
        "ship": {
            "a": "Ship",
            "b": "1F6A2",
            "j": [
                "transportation",
                "titanic",
                "deploy"
            ],
            "k": [
                34,
                42
            ]
        },
        "heavy_plus_sign": {
            "a": "Heavy Plus Sign",
            "b": "2795",
            "j": [
                "math",
                "calculation",
                "addition",
                "more",
                "increase"
            ],
            "k": [
                50,
                9
            ]
        },
        "date": {
            "a": "Calendar",
            "b": "1F4C5",
            "j": [
                "calendar",
                "schedule"
            ],
            "k": [
                25,
                48
            ]
        },
        "man": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB",
                    "non_qualified": null,
                    "image": "1f468-1f3fb.png",
                    "sheet_x": 18,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC",
                    "non_qualified": null,
                    "image": "1f468-1f3fc.png",
                    "sheet_x": 18,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD",
                    "non_qualified": null,
                    "image": "1f468-1f3fd.png",
                    "sheet_x": 18,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE",
                    "non_qualified": null,
                    "image": "1f468-1f3fe.png",
                    "sheet_x": 18,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF",
                    "non_qualified": null,
                    "image": "1f468-1f3ff.png",
                    "sheet_x": 18,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Man",
            "b": "1F468",
            "j": [
                "mustache",
                "father",
                "dad",
                "guy",
                "classy",
                "sir",
                "moustache"
            ],
            "k": [
                18,
                11
            ]
        },
        "flag-id": {
            "a": "Indonesia Flag",
            "b": "1F1EE-1F1E9",
            "k": [
                2,
                33
            ]
        },
        "leaves": {
            "a": "Leaf Fluttering in Wind",
            "b": "1F343",
            "j": [
                "nature",
                "plant",
                "tree",
                "vegetable",
                "grass",
                "lawn",
                "spring"
            ],
            "k": [
                7,
                5
            ]
        },
        "heavy_minus_sign": {
            "a": "Heavy Minus Sign",
            "b": "2796",
            "j": [
                "math",
                "calculation",
                "subtract",
                "less"
            ],
            "k": [
                50,
                10
            ]
        },
        "calendar": {
            "a": "Tear-off Calendar",
            "b": "1F4C6",
            "j": [
                "schedule",
                "date",
                "planning"
            ],
            "k": [
                25,
                49
            ]
        },
        "airplane": {
            "a": "Airplane",
            "b": "2708-FE0F",
            "c": "2708",
            "j": [
                "vehicle",
                "transportation",
                "flight",
                "fly"
            ],
            "k": [
                49,
                16
            ],
            "o": 1
        },
        "spiral_note_pad": {
            "a": "Spiral Note Pad",
            "b": "1F5D2-FE0F",
            "c": "1F5D2",
            "k": [
                30,
                8
            ],
            "o": 7
        },
        "heavy_division_sign": {
            "a": "Heavy Division Sign",
            "b": "2797",
            "j": [
                "divide",
                "math",
                "calculation"
            ],
            "k": [
                50,
                11
            ]
        },
        "small_airplane": {
            "a": "Small Airplane",
            "b": "1F6E9-FE0F",
            "c": "1F6E9",
            "j": [
                "flight",
                "transportation",
                "fly",
                "vehicle"
            ],
            "k": [
                37,
                14
            ],
            "o": 7
        },
        "woman": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB",
                    "non_qualified": null,
                    "image": "1f469-1f3fb.png",
                    "sheet_x": 20,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC",
                    "non_qualified": null,
                    "image": "1f469-1f3fc.png",
                    "sheet_x": 20,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD",
                    "non_qualified": null,
                    "image": "1f469-1f3fd.png",
                    "sheet_x": 20,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE",
                    "non_qualified": null,
                    "image": "1f469-1f3fe.png",
                    "sheet_x": 20,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF",
                    "non_qualified": null,
                    "image": "1f469-1f3ff.png",
                    "sheet_x": 20,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Woman",
            "b": "1F469",
            "j": [
                "female",
                "girls",
                "lady"
            ],
            "k": [
                20,
                23
            ]
        },
        "flag-ie": {
            "a": "Ireland Flag",
            "b": "1F1EE-1F1EA",
            "k": [
                2,
                34
            ]
        },
        "curly_loop": {
            "a": "Curly Loop",
            "b": "27B0",
            "j": [
                "scribble",
                "draw",
                "shape",
                "squiggle"
            ],
            "k": [
                50,
                13
            ]
        },
        "flag-il": {
            "a": "Israel Flag",
            "b": "1F1EE-1F1F1",
            "k": [
                2,
                35
            ]
        },
        "airplane_departure": {
            "a": "Airplane Departure",
            "b": "1F6EB",
            "k": [
                37,
                15
            ],
            "o": 7
        },
        "spiral_calendar_pad": {
            "a": "Spiral Calendar Pad",
            "b": "1F5D3-FE0F",
            "c": "1F5D3",
            "k": [
                30,
                9
            ],
            "o": 7
        },
        "older_adult": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D3-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d3-1f3fb.png",
                    "sheet_x": 43,
                    "sheet_y": 11,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D3-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d3-1f3fc.png",
                    "sheet_x": 43,
                    "sheet_y": 12,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D3-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d3-1f3fd.png",
                    "sheet_x": 43,
                    "sheet_y": 13,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D3-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d3-1f3fe.png",
                    "sheet_x": 43,
                    "sheet_y": 14,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D3-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d3-1f3ff.png",
                    "sheet_x": 43,
                    "sheet_y": 15,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Older Adult",
            "b": "1F9D3",
            "j": [
                "human",
                "elder",
                "senior",
                "gender-neutral"
            ],
            "k": [
                43,
                10
            ],
            "o": 10
        },
        "airplane_arriving": {
            "a": "Airplane Arriving",
            "b": "1F6EC",
            "k": [
                37,
                16
            ],
            "o": 7
        },
        "card_index": {
            "a": "Card Index",
            "b": "1F4C7",
            "j": [
                "business",
                "stationery"
            ],
            "k": [
                25,
                50
            ]
        },
        "loop": {
            "a": "Double Curly Loop",
            "b": "27BF",
            "j": [
                "tape",
                "cassette"
            ],
            "k": [
                50,
                14
            ]
        },
        "older_man": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F474-1F3FB",
                    "non_qualified": null,
                    "image": "1f474-1f3fb.png",
                    "sheet_x": 21,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F474-1F3FC",
                    "non_qualified": null,
                    "image": "1f474-1f3fc.png",
                    "sheet_x": 22,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F474-1F3FD",
                    "non_qualified": null,
                    "image": "1f474-1f3fd.png",
                    "sheet_x": 22,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F474-1F3FE",
                    "non_qualified": null,
                    "image": "1f474-1f3fe.png",
                    "sheet_x": 22,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F474-1F3FF",
                    "non_qualified": null,
                    "image": "1f474-1f3ff.png",
                    "sheet_x": 22,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Older Man",
            "b": "1F474",
            "j": [
                "human",
                "male",
                "men",
                "old",
                "elder",
                "senior"
            ],
            "k": [
                21,
                50
            ]
        },
        "flag-im": {
            "a": "Isle of Man Flag",
            "b": "1F1EE-1F1F2",
            "k": [
                2,
                36
            ]
        },
        "flag-in": {
            "a": "India Flag",
            "b": "1F1EE-1F1F3",
            "j": [
                "india",
                "indian",
            ],
            "k": [
                2,
                37
            ]
        },
        "chart_with_upwards_trend": {
            "a": "Chart with Upwards Trend",
            "b": "1F4C8",
            "j": [
                "graph",
                "presentation",
                "stats",
                "recovery",
                "business",
                "economics",
                "money",
                "sales",
                "good",
                "success"
            ],
            "k": [
                25,
                51
            ]
        },
        "part_alternation_mark": {
            "a": "Part Alternation Mark",
            "b": "303D-FE0F",
            "c": "303D",
            "j": [
                "graph",
                "presentation",
                "stats",
                "business",
                "economics",
                "bad"
            ],
            "k": [
                50,
                25
            ],
            "o": 3
        },
        "seat": {
            "a": "Seat",
            "b": "1F4BA",
            "j": [
                "sit",
                "airplane",
                "transport",
                "bus",
                "flight",
                "fly"
            ],
            "k": [
                25,
                37
            ]
        },
        "older_woman": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F475-1F3FB",
                    "non_qualified": null,
                    "image": "1f475-1f3fb.png",
                    "sheet_x": 22,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F475-1F3FC",
                    "non_qualified": null,
                    "image": "1f475-1f3fc.png",
                    "sheet_x": 22,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F475-1F3FD",
                    "non_qualified": null,
                    "image": "1f475-1f3fd.png",
                    "sheet_x": 22,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F475-1F3FE",
                    "non_qualified": null,
                    "image": "1f475-1f3fe.png",
                    "sheet_x": 22,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F475-1F3FF",
                    "non_qualified": null,
                    "image": "1f475-1f3ff.png",
                    "sheet_x": 22,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Older Woman",
            "b": "1F475",
            "j": [
                "human",
                "female",
                "women",
                "lady",
                "old",
                "elder",
                "senior"
            ],
            "k": [
                22,
                4
            ]
        },
        "eight_spoked_asterisk": {
            "a": "Eight Spoked Asterisk",
            "b": "2733-FE0F",
            "c": "2733",
            "j": [
                "star",
                "sparkle",
                "green-square"
            ],
            "k": [
                49,
                49
            ],
            "o": 1
        },
        "chart_with_downwards_trend": {
            "a": "Chart with Downwards Trend",
            "b": "1F4C9",
            "j": [
                "graph",
                "presentation",
                "stats",
                "recession",
                "business",
                "economics",
                "money",
                "sales",
                "bad",
                "failure"
            ],
            "k": [
                26,
                0
            ]
        },
        "flag-io": {
            "a": "British Indian Ocean Territory Flag",
            "b": "1F1EE-1F1F4",
            "k": [
                2,
                38
            ]
        },
        "male-doctor": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-2695-FE0F",
                    "non_qualified": "1F468-1F3FB-200D-2695",
                    "image": "1f468-1f3fb-200d-2695-fe0f.png",
                    "sheet_x": 17,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-2695-FE0F",
                    "non_qualified": "1F468-1F3FC-200D-2695",
                    "image": "1f468-1f3fc-200d-2695-fe0f.png",
                    "sheet_x": 17,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-2695-FE0F",
                    "non_qualified": "1F468-1F3FD-200D-2695",
                    "image": "1f468-1f3fd-200d-2695-fe0f.png",
                    "sheet_x": 17,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-2695-FE0F",
                    "non_qualified": "1F468-1F3FE-200D-2695",
                    "image": "1f468-1f3fe-200d-2695-fe0f.png",
                    "sheet_x": 17,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-2695-FE0F",
                    "non_qualified": "1F468-1F3FF-200D-2695",
                    "image": "1f468-1f3ff-200d-2695-fe0f.png",
                    "sheet_x": 17,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Male Doctor",
            "b": "1F468-200D-2695-FE0F", // d83d dc68 200d 2695
            "c": "1F468-200D-2695", 
            "j": [
                "doctor",
                "male",
               
            ],
            "k": [
                17,
                43
            ]
        },
        "helicopter": {
            "a": "Helicopter",
            "b": "1F681",
            "j": [
                "transportation",
                "vehicle",
                "fly"
            ],
            "k": [
                34,
                9
            ]
        },
        "female-doctor": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-2695-FE0F",
                    "non_qualified": "1F469-1F3FB-200D-2695",
                    "image": "1f469-1f3fb-200d-2695-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-2695-FE0F",
                    "non_qualified": "1F469-1F3FC-200D-2695",
                    "image": "1f469-1f3fc-200d-2695-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-2695-FE0F",
                    "non_qualified": "1F469-1F3FD-200D-2695",
                    "image": "1f469-1f3fd-200d-2695-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-2695-FE0F",
                    "non_qualified": "1F469-1F3FE-200D-2695",
                    "image": "1f469-1f3fe-200d-2695-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-2695-FE0F",
                    "non_qualified": "1F469-1F3FF-200D-2695",
                    "image": "1f469-1f3ff-200d-2695-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Doctor",
            "b": "1F469-200D-2695-FE0F",
            "c": "1F469-200D-2695",
            "k": [
                20,
                1
            ]
        },
        "suspension_railway": {
            "a": "Suspension Railway",
            "b": "1F69F",
            "j": [
                "vehicle",
                "transportation"
            ],
            "k": [
                34,
                39
            ]
        },
        "bar_chart": {
            "a": "Bar Chart",
            "b": "1F4CA",
            "j": [
                "graph",
                "presentation",
                "stats"
            ],
            "k": [
                26,
                1
            ]
        },
        "flag-iq": {
            "a": "Iraq Flag",
            "b": "1F1EE-1F1F6",
            "k": [
                2,
                39
            ]
        },
        "eight_pointed_black_star": {
            "a": "Eight Pointed Black Star",
            "b": "2734-FE0F",
            "c": "2734",
            "j": [
                "orange-square",
                "shape",
                "polygon"
            ],
            "k": [
                49,
                50
            ],
            "o": 1
        },
        "mountain_cableway": {
            "a": "Mountain Cableway",
            "b": "1F6A0",
            "j": [
                "transportation",
                "vehicle",
                "ski"
            ],
            "k": [
                34,
                40
            ]
        },
        "male-student": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F393",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f393.png",
                    "sheet_x": 16,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F393",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f393.png",
                    "sheet_x": 16,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F393",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f393.png",
                    "sheet_x": 16,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F393",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f393.png",
                    "sheet_x": 16,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F393",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f393.png",
                    "sheet_x": 16,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Student",
            "b": "1F468-200D-1F393",
            "k": [
                16,
                14
            ]
        },
        "clipboard": {
            "a": "Clipboard",
            "b": "1F4CB",
            "j": [
                "stationery",
                "documents"
            ],
            "k": [
                26,
                2
            ]
        },
        "flag-ir": {
            "a": "Iran Flag",
            "b": "1F1EE-1F1F7",
            "k": [
                2,
                40
            ]
        },
        "sparkle": {
            "a": "Sparkle",
            "b": "2747-FE0F",
            "c": "2747",
            "j": [
                "stars",
                "green-square",
                "awesome",
                "good",
                "fireworks"
            ],
            "k": [
                50,
                0
            ],
            "o": 1
        },
        "female-student": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F393",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f393.png",
                    "sheet_x": 18,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F393",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f393.png",
                    "sheet_x": 18,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F393",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f393.png",
                    "sheet_x": 18,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F393",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f393.png",
                    "sheet_x": 18,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F393",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f393.png",
                    "sheet_x": 18,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Student",
            "b": "1F469-200D-1F393",
            "k": [
                18,
                29
            ]
        },
        "pushpin": {
            "a": "Pushpin",
            "b": "1F4CC",
            "j": [
                "stationery",
                "mark",
                "here"
            ],
            "k": [
                26,
                3
            ]
        },
        "aerial_tramway": {
            "a": "Aerial Tramway",
            "b": "1F6A1",
            "j": [
                "transportation",
                "vehicle",
                "ski"
            ],
            "k": [
                34,
                41
            ]
        },
        "flag-is": {
            "a": "Iceland Flag",
            "b": "1F1EE-1F1F8",
            "k": [
                2,
                41
            ]
        },
        "bangbang": {
            "a": "Double Exclamation Mark",
            "b": "203C-FE0F",
            "c": "203C",
            "j": [
                "exclamation",
                "surprise"
            ],
            "k": [
                46,
                29
            ],
            "o": 1
        },
        "interrobang": {
            "a": "Exclamation Question Mark",
            "b": "2049-FE0F",
            "c": "2049",
            "j": [
                "wat",
                "punctuation",
                "surprise"
            ],
            "k": [
                46,
                30
            ],
            "o": 3
        },
        "satellite": {
            "a": "Satellite",
            "b": "1F6F0-FE0F",
            "c": "1F6F0",
            "j": [
                "communication",
                "future",
                "radio",
                "space"
            ],
            "k": [
                37,
                17
            ],
            "o": 7
        },
        "it": {
            "a": "Italy Flag",
            "b": "1F1EE-1F1F9",
            "j": [
                "italy",
                "flag",
                "nation",
                "country",
                "banner"
            ],
            "k": [
                2,
                42
            ],
            "n": [
                "flag-it"
            ]
        },
        "male-teacher": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f3eb.png",
                    "sheet_x": 16,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f3eb.png",
                    "sheet_x": 16,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f3eb.png",
                    "sheet_x": 16,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f3eb.png",
                    "sheet_x": 16,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f3eb.png",
                    "sheet_x": 16,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Teacher",
            "b": "1F468-200D-1F3EB",
            "k": [
                16,
                32
            ]
        },
        "round_pushpin": {
            "a": "Round Pushpin",
            "b": "1F4CD",
            "j": [
                "stationery",
                "location",
                "map",
                "here"
            ],
            "k": [
                26,
                4
            ]
        },
        "flag-je": {
            "a": "Jersey Flag",
            "b": "1F1EF-1F1EA",
            "k": [
                2,
                43
            ]
        },
        "question": {
            "a": "Black Question Mark Ornament",
            "b": "2753",
            "j": [
                "doubt",
                "confused"
            ],
            "k": [
                50,
                3
            ]
        },
        "rocket": {
            "a": "Rocket",
            "b": "1F680",
            "j": [
                "launch",
                "ship",
                "staffmode",
                "NASA",
                "outer space",
                "outer_space",
                "fly"
            ],
            "k": [
                34,
                8
            ]
        },
        "female-teacher": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f3eb.png",
                    "sheet_x": 18,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f3eb.png",
                    "sheet_x": 18,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f3eb.png",
                    "sheet_x": 18,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f3eb.png",
                    "sheet_x": 18,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F3EB",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f3eb.png",
                    "sheet_x": 19,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Teacher",
            "b": "1F469-200D-1F3EB",
            "k": [
                18,
                47
            ]
        },
        "paperclip": {
            "a": "Paperclip",
            "b": "1F4CE",
            "j": [
                "documents",
                "stationery"
            ],
            "k": [
                26,
                5
            ]
        },
        "linked_paperclips": {
            "a": "Linked Paperclips",
            "b": "1F587-FE0F",
            "c": "1F587",
            "k": [
                29,
                27
            ],
            "o": 7
        },
        "flying_saucer": {
            "a": "Flying Saucer",
            "b": "1F6F8",
            "j": [
                "transportation",
                "vehicle",
                "ufo"
            ],
            "k": [
                37,
                23
            ],
            "o": 10
        },
        "male-judge": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-2696-FE0F",
                    "non_qualified": "1F468-1F3FB-200D-2696",
                    "image": "1f468-1f3fb-200d-2696-fe0f.png",
                    "sheet_x": 17,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-2696-FE0F",
                    "non_qualified": "1F468-1F3FC-200D-2696",
                    "image": "1f468-1f3fc-200d-2696-fe0f.png",
                    "sheet_x": 17,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-2696-FE0F",
                    "non_qualified": "1F468-1F3FD-200D-2696",
                    "image": "1f468-1f3fd-200d-2696-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-2696-FE0F",
                    "non_qualified": "1F468-1F3FE-200D-2696",
                    "image": "1f468-1f3fe-200d-2696-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-2696-FE0F",
                    "non_qualified": "1F468-1F3FF-200D-2696",
                    "image": "1f468-1f3ff-200d-2696-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Male Judge",
            "b": "1F468-200D-2696-FE0F",
            "c": "1F468-200D-2696",
            "k": [
                17,
                49
            ]
        },
        "grey_question": {
            "a": "White Question Mark Ornament",
            "b": "2754",
            "j": [
                "doubts",
                "gray",
                "huh",
                "confused"
            ],
            "k": [
                50,
                4
            ]
        },
        "flag-jm": {
            "a": "Jamaica Flag",
            "b": "1F1EF-1F1F2",
            "k": [
                2,
                44
            ]
        },
        "bellhop_bell": {
            "a": "Bellhop Bell",
            "b": "1F6CE-FE0F",
            "c": "1F6CE",
            "j": [
                "service"
            ],
            "k": [
                37,
                3
            ],
            "o": 7
        },
        "straight_ruler": {
            "a": "Straight Ruler",
            "b": "1F4CF",
            "j": [
                "stationery",
                "calculate",
                "length",
                "math",
                "school",
                "drawing",
                "architect",
                "sketch"
            ],
            "k": [
                26,
                6
            ]
        },
        "flag-jo": {
            "a": "Jordan Flag",
            "b": "1F1EF-1F1F4",
            "k": [
                2,
                45
            ]
        },
        "female-judge": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-2696-FE0F",
                    "non_qualified": "1F469-1F3FB-200D-2696",
                    "image": "1f469-1f3fb-200d-2696-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-2696-FE0F",
                    "non_qualified": "1F469-1F3FC-200D-2696",
                    "image": "1f469-1f3fc-200d-2696-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-2696-FE0F",
                    "non_qualified": "1F469-1F3FD-200D-2696",
                    "image": "1f469-1f3fd-200d-2696-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-2696-FE0F",
                    "non_qualified": "1F469-1F3FE-200D-2696",
                    "image": "1f469-1f3fe-200d-2696-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-2696-FE0F",
                    "non_qualified": "1F469-1F3FF-200D-2696",
                    "image": "1f469-1f3ff-200d-2696-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Judge",
            "b": "1F469-200D-2696-FE0F",
            "c": "1F469-200D-2696",
            "k": [
                20,
                7
            ]
        },
        "grey_exclamation": {
            "a": "White Exclamation Mark Ornament",
            "b": "2755",
            "j": [
                "surprise",
                "punctuation",
                "gray",
                "wow",
                "warning"
            ],
            "k": [
                50,
                5
            ]
        },
        "door": {
            "a": "Door",
            "b": "1F6AA",
            "j": [
                "house",
                "entry",
                "exit"
            ],
            "k": [
                35,
                15
            ]
        },
        "male-farmer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f33e.png",
                    "sheet_x": 16,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f33e.png",
                    "sheet_x": 16,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f33e.png",
                    "sheet_x": 16,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f33e.png",
                    "sheet_x": 16,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f33e.png",
                    "sheet_x": 16,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Farmer",
            "b": "1F468-200D-1F33E",
            "k": [
                16,
                2
            ]
        },
        "jp": {
            "a": "Japan Flag",
            "b": "1F1EF-1F1F5",
            "j": [
                "japanese",
                "nation",
                "flag",
                "country",
                "banner"
            ],
            "k": [
                2,
                46
            ],
            "n": [
                "flag-jp"
            ]
        },
        "triangular_ruler": {
            "a": "Triangular Ruler",
            "b": "1F4D0",
            "j": [
                "stationery",
                "math",
                "architect",
                "sketch"
            ],
            "k": [
                26,
                7
            ]
        },
        "exclamation": {
            "a": "Heavy Exclamation Mark Symbol",
            "b": "2757",
            "j": [
                "heavy_exclamation_mark",
                "danger",
                "surprise",
                "punctuation",
                "wow",
                "warning"
            ],
            "k": [
                50,
                6
            ],
            "n": [
                "heavy_exclamation_mark"
            ],
            "o": 5
        },
        "bed": {
            "a": "Bed",
            "b": "1F6CF-FE0F",
            "c": "1F6CF",
            "j": [
                "sleep",
                "rest"
            ],
            "k": [
                37,
                4
            ],
            "o": 7
        },
        "female-farmer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f33e.png",
                    "sheet_x": 18,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f33e.png",
                    "sheet_x": 18,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f33e.png",
                    "sheet_x": 18,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f33e.png",
                    "sheet_x": 18,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F33E",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f33e.png",
                    "sheet_x": 18,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Farmer",
            "b": "1F469-200D-1F33E",
            "k": [
                18,
                17
            ]
        },
        "scissors": {
            "a": "Black Scissors",
            "b": "2702-FE0F",
            "c": "2702",
            "j": [
                "stationery",
                "cut"
            ],
            "k": [
                49,
                14
            ],
            "o": 1
        },
        "wavy_dash": {
            "a": "Wavy Dash",
            "b": "3030-FE0F",
            "c": "3030",
            "j": [
                "draw",
                "line",
                "moustache",
                "mustache",
                "squiggle",
                "scribble"
            ],
            "k": [
                50,
                24
            ],
            "o": 1
        },
        "flag-ke": {
            "a": "Kenya Flag",
            "b": "1F1F0-1F1EA",
            "k": [
                2,
                47
            ]
        },
        "flag-kg": {
            "a": "Kyrgyzstan Flag",
            "b": "1F1F0-1F1EC",
            "k": [
                2,
                48
            ]
        },
        "couch_and_lamp": {
            "a": "Couch and Lamp",
            "b": "1F6CB-FE0F",
            "c": "1F6CB",
            "j": [
                "read",
                "chill"
            ],
            "k": [
                36,
                47
            ],
            "o": 7
        },
        "male-cook": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F373",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f373.png",
                    "sheet_x": 16,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F373",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f373.png",
                    "sheet_x": 16,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F373",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f373.png",
                    "sheet_x": 16,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F373",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f373.png",
                    "sheet_x": 16,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F373",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f373.png",
                    "sheet_x": 16,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Cook",
            "b": "1F468-200D-1F373",
            "k": [
                16,
                8
            ]
        },
        "card_file_box": {
            "a": "Card File Box",
            "b": "1F5C3-FE0F",
            "c": "1F5C3",
            "j": [
                "business",
                "stationery"
            ],
            "k": [
                30,
                5
            ],
            "o": 7
        },
        "file_cabinet": {
            "a": "File Cabinet",
            "b": "1F5C4-FE0F",
            "c": "1F5C4",
            "j": [
                "filing",
                "organizing"
            ],
            "k": [
                30,
                6
            ],
            "o": 7
        },
        "flag-kh": {
            "a": "Cambodia Flag",
            "b": "1F1F0-1F1ED",
            "k": [
                2,
                49
            ]
        },
        "female-cook": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F373",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f373.png",
                    "sheet_x": 18,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F373",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f373.png",
                    "sheet_x": 18,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F373",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f373.png",
                    "sheet_x": 18,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F373",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f373.png",
                    "sheet_x": 18,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F373",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f373.png",
                    "sheet_x": 18,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Cook",
            "b": "1F469-200D-1F373",
            "k": [
                18,
                23
            ]
        },
        "toilet": {
            "a": "Toilet",
            "b": "1F6BD",
            "j": [
                "restroom",
                "wc",
                "washroom",
                "bathroom",
                "potty"
            ],
            "k": [
                36,
                33
            ]
        },
        "wastebasket": {
            "a": "Wastebasket",
            "b": "1F5D1-FE0F",
            "c": "1F5D1",
            "j": [
                "bin",
                "trash",
                "rubbish",
                "garbage",
                "toss"
            ],
            "k": [
                30,
                7
            ],
            "o": 7
        },
        "flag-ki": {
            "a": "Kiribati Flag",
            "b": "1F1F0-1F1EE",
            "k": [
                2,
                50
            ]
        },
        "shower": {
            "a": "Shower",
            "b": "1F6BF",
            "j": [
                "clean",
                "water",
                "bathroom"
            ],
            "k": [
                36,
                35
            ]
        },
        "male-mechanic": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F527",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f527.png",
                    "sheet_x": 17,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F527",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f527.png",
                    "sheet_x": 17,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F527",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f527.png",
                    "sheet_x": 17,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F527",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f527.png",
                    "sheet_x": 17,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F527",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f527.png",
                    "sheet_x": 17,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Mechanic",
            "b": "1F468-200D-1F527",
            "k": [
                17,
                19
            ]
        },
        "tm": {
            "a": "Trade Mark Sign",
            "b": "2122-FE0F",
            "c": "2122",
            "j": [
                "trademark",
                "brand",
                "law",
                "legal"
            ],
            "k": [
                46,
                31
            ],
            "o": 1
        },
        "hash": {
            "a": "Hash Key",
            "b": "0023-FE0F-20E3",
            "c": "0023-20E3",
            "j": [
                "symbol",
                "blue-square",
                "twitter"
            ],
            "k": [
                0,
                0
            ],
            "o": 3
        },
        "flag-km": {
            "a": "Comoros Flag",
            "b": "1F1F0-1F1F2",
            "k": [
                2,
                51
            ]
        },
        "bathtub": {
            "a": "Bathtub",
            "b": "1F6C1",
            "j": [
                "clean",
                "shower",
                "bathroom"
            ],
            "k": [
                36,
                42
            ]
        },
        "female-mechanic": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F527",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f527.png",
                    "sheet_x": 19,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F527",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f527.png",
                    "sheet_x": 19,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F527",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f527.png",
                    "sheet_x": 19,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F527",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f527.png",
                    "sheet_x": 19,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F527",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f527.png",
                    "sheet_x": 19,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Mechanic",
            "b": "1F469-200D-1F527",
            "k": [
                19,
                29
            ]
        },
        "lock": {
            "a": "Lock",
            "b": "1F512",
            "j": [
                "security",
                "password",
                "padlock"
            ],
            "k": [
                27,
                20
            ]
        },
        "male-factory-worker": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f3ed.png",
                    "sheet_x": 16,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f3ed.png",
                    "sheet_x": 16,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f3ed.png",
                    "sheet_x": 16,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f3ed.png",
                    "sheet_x": 16,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f3ed.png",
                    "sheet_x": 16,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Factory Worker",
            "b": "1F468-200D-1F3ED",
            "k": [
                16,
                38
            ]
        },
        "flag-kn": {
            "a": "St. Kitts & Nevis Flag",
            "b": "1F1F0-1F1F3",
            "k": [
                3,
                0
            ]
        },
        "hourglass": {
            "a": "Hourglass",
            "b": "231B",
            "j": [
                "time",
                "clock",
                "oldschool",
                "limit",
                "exam",
                "quiz",
                "test"
            ],
            "k": [
                46,
                42
            ],
            "o": 1
        },
        "keycap_star": {
            "a": "Keycap Star",
            "b": "002A-FE0F-20E3",
            "c": "002A-20E3",
            "k": [
                0,
                1
            ],
            "o": 3
        },
        "unlock": {
            "a": "Open Lock",
            "b": "1F513",
            "j": [
                "privacy",
                "security"
            ],
            "k": [
                27,
                21
            ]
        },
        "flag-kp": {
            "a": "North Korea Flag",
            "b": "1F1F0-1F1F5",
            "k": [
                3,
                1
            ]
        },
        "female-factory-worker": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f3ed.png",
                    "sheet_x": 19,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f3ed.png",
                    "sheet_x": 19,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f3ed.png",
                    "sheet_x": 19,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f3ed.png",
                    "sheet_x": 19,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F3ED",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f3ed.png",
                    "sheet_x": 19,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Factory Worker",
            "b": "1F469-200D-1F3ED",
            "k": [
                19,
                1
            ]
        },
        "zero": {
            "a": "Keycap 0",
            "b": "0030-FE0F-20E3",
            "c": "0030-20E3",
            "j": [
                "0",
                "numbers",
                "blue-square",
                "null"
            ],
            "k": [
                0,
                2
            ],
            "o": 3
        },
        "lock_with_ink_pen": {
            "a": "Lock with Ink Pen",
            "b": "1F50F",
            "j": [
                "security",
                "secret"
            ],
            "k": [
                27,
                17
            ]
        },
        "hourglass_flowing_sand": {
            "a": "Hourglass with Flowing Sand",
            "b": "23F3",
            "j": [
                "oldschool",
                "time",
                "countdown"
            ],
            "k": [
                47,
                3
            ]
        },
        "one": {
            "a": "Keycap 1",
            "b": "0031-FE0F-20E3",
            "c": "0031-20E3",
            "j": [
                "blue-square",
                "numbers",
                "1"
            ],
            "k": [
                0,
                3
            ],
            "o": 3
        },
        "kr": {
            "a": "South Korea Flag",
            "b": "1F1F0-1F1F7",
            "j": [
                "south",
                "korea",
                "nation",
                "flag",
                "country",
                "banner"
            ],
            "k": [
                3,
                2
            ],
            "n": [
                "flag-kr"
            ]
        },
        "watch": {
            "a": "Watch",
            "b": "231A",
            "j": [
                "time",
                "accessories"
            ],
            "k": [
                46,
                41
            ],
            "o": 1
        },
        "male-office-worker": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f4bc.png",
                    "sheet_x": 17,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f4bc.png",
                    "sheet_x": 17,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f4bc.png",
                    "sheet_x": 17,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f4bc.png",
                    "sheet_x": 17,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f4bc.png",
                    "sheet_x": 17,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Office Worker",
            "b": "1F468-200D-1F4BC",
            "k": [
                17,
                13
            ]
        },
        "closed_lock_with_key": {
            "a": "Closed Lock with Key",
            "b": "1F510",
            "j": [
                "security",
                "privacy"
            ],
            "k": [
                27,
                18
            ]
        },
        "female-office-worker": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f4bc.png",
                    "sheet_x": 19,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f4bc.png",
                    "sheet_x": 19,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f4bc.png",
                    "sheet_x": 19,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f4bc.png",
                    "sheet_x": 19,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F4BC",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f4bc.png",
                    "sheet_x": 19,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Office Worker",
            "b": "1F469-200D-1F4BC",
            "k": [
                19,
                23
            ]
        },
        "two": {
            "a": "Keycap 2",
            "b": "0032-FE0F-20E3",
            "c": "0032-20E3",
            "j": [
                "numbers",
                "2",
                "prime",
                "blue-square"
            ],
            "k": [
                0,
                4
            ],
            "o": 3
        },
        "alarm_clock": {
            "a": "Alarm Clock",
            "b": "23F0",
            "j": [
                "time",
                "wake"
            ],
            "k": [
                47,
                0
            ]
        },
        "key": {
            "a": "Key",
            "b": "1F511",
            "j": [
                "lock",
                "door",
                "password"
            ],
            "k": [
                27,
                19
            ]
        },
        "flag-kw": {
            "a": "Kuwait Flag",
            "b": "1F1F0-1F1FC",
            "k": [
                3,
                3
            ]
        },
        "stopwatch": {
            "a": "Stopwatch",
            "b": "23F1-FE0F",
            "c": "23F1",
            "j": [
                "time",
                "deadline"
            ],
            "k": [
                47,
                1
            ]
        },
        "male-scientist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f52c.png",
                    "sheet_x": 17,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f52c.png",
                    "sheet_x": 17,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f52c.png",
                    "sheet_x": 17,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f52c.png",
                    "sheet_x": 17,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f52c.png",
                    "sheet_x": 17,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Scientist",
            "b": "1F468-200D-1F52C",
            "k": [
                17,
                25
            ]
        },
        "three": {
            "a": "Keycap 3",
            "b": "0033-FE0F-20E3",
            "c": "0033-20E3",
            "j": [
                "3",
                "numbers",
                "prime",
                "blue-square"
            ],
            "k": [
                0,
                5
            ],
            "o": 3
        },
        "flag-ky": {
            "a": "Cayman Islands Flag",
            "b": "1F1F0-1F1FE",
            "k": [
                3,
                4
            ]
        },
        "old_key": {
            "a": "Old Key",
            "b": "1F5DD-FE0F",
            "c": "1F5DD",
            "j": [
                "lock",
                "door",
                "password"
            ],
            "k": [
                30,
                11
            ],
            "o": 7
        },
        "flag-kz": {
            "a": "Kazakhstan Flag",
            "b": "1F1F0-1F1FF",
            "k": [
                3,
                5
            ]
        },
        "hammer": {
            "a": "Hammer",
            "b": "1F528",
            "j": [
                "tools",
                "build",
                "create"
            ],
            "k": [
                27,
                42
            ]
        },
        "female-scientist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f52c.png",
                    "sheet_x": 19,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f52c.png",
                    "sheet_x": 19,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f52c.png",
                    "sheet_x": 19,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f52c.png",
                    "sheet_x": 19,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F52C",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f52c.png",
                    "sheet_x": 19,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Scientist",
            "b": "1F469-200D-1F52C",
            "k": [
                19,
                35
            ]
        },
        "timer_clock": {
            "a": "Timer Clock",
            "b": "23F2-FE0F",
            "c": "23F2",
            "j": [
                "alarm"
            ],
            "k": [
                47,
                2
            ]
        },
        "four": {
            "a": "Keycap 4",
            "b": "0034-FE0F-20E3",
            "c": "0034-20E3",
            "j": [
                "4",
                "numbers",
                "blue-square"
            ],
            "k": [
                0,
                6
            ],
            "o": 3
        },
        "male-technologist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f4bb.png",
                    "sheet_x": 17,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f4bb.png",
                    "sheet_x": 17,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f4bb.png",
                    "sheet_x": 17,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f4bb.png",
                    "sheet_x": 17,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f4bb.png",
                    "sheet_x": 17,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Technologist",
            "b": "1F468-200D-1F4BB",
            "k": [
                17,
                7
            ]
        },
        "mantelpiece_clock": {
            "a": "Mantelpiece Clock",
            "b": "1F570-FE0F",
            "c": "1F570",
            "j": [
                "time"
            ],
            "k": [
                28,
                43
            ],
            "o": 7
        },
        "five": {
            "a": "Keycap 5",
            "b": "0035-FE0F-20E3",
            "c": "0035-20E3",
            "j": [
                "5",
                "numbers",
                "blue-square",
                "prime"
            ],
            "k": [
                0,
                7
            ],
            "o": 3
        },
        "flag-la": {
            "a": "Laos Flag",
            "b": "1F1F1-1F1E6",
            "k": [
                3,
                6
            ]
        },
        "pick": {
            "a": "Pick",
            "b": "26CF-FE0F",
            "c": "26CF",
            "j": [
                "tools",
                "dig"
            ],
            "k": [
                48,
                32
            ],
            "o": 5
        },
        "flag-lb": {
            "a": "Lebanon Flag",
            "b": "1F1F1-1F1E7",
            "k": [
                3,
                7
            ]
        },
        "clock12": {
            "a": "Clock Face Twelve Oclock",
            "b": "1F55B",
            "j": [
                "time",
                "noon",
                "midnight",
                "midday",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                29
            ]
        },
        "hammer_and_pick": {
            "a": "Hammer and Pick",
            "b": "2692-FE0F",
            "c": "2692",
            "j": [
                "tools",
                "build",
                "create"
            ],
            "k": [
                48,
                11
            ],
            "o": 4
        },
        "six": {
            "a": "Keycap 6",
            "b": "0036-FE0F-20E3",
            "c": "0036-20E3",
            "j": [
                "6",
                "numbers",
                "blue-square"
            ],
            "k": [
                0,
                8
            ],
            "o": 3
        },
        "female-technologist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f4bb.png",
                    "sheet_x": 19,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f4bb.png",
                    "sheet_x": 19,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f4bb.png",
                    "sheet_x": 19,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f4bb.png",
                    "sheet_x": 19,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F4BB",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f4bb.png",
                    "sheet_x": 19,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Technologist",
            "b": "1F469-200D-1F4BB",
            "k": [
                19,
                17
            ]
        },
        "hammer_and_wrench": {
            "a": "Hammer and Wrench",
            "b": "1F6E0-FE0F",
            "c": "1F6E0",
            "j": [
                "tools",
                "build",
                "create"
            ],
            "k": [
                37,
                8
            ],
            "o": 7
        },
        "flag-lc": {
            "a": "St. Lucia Flag",
            "b": "1F1F1-1F1E8",
            "k": [
                3,
                8
            ]
        },
        "clock1230": {
            "a": "Clock Face Twelve-Thirty",
            "b": "1F567",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                41
            ]
        },
        "seven": {
            "a": "Keycap 7",
            "b": "0037-FE0F-20E3",
            "c": "0037-20E3",
            "j": [
                "7",
                "numbers",
                "blue-square",
                "prime"
            ],
            "k": [
                0,
                9
            ],
            "o": 3
        },
        "male-singer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f3a4.png",
                    "sheet_x": 16,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f3a4.png",
                    "sheet_x": 16,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f3a4.png",
                    "sheet_x": 16,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f3a4.png",
                    "sheet_x": 16,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f3a4.png",
                    "sheet_x": 16,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Singer",
            "b": "1F468-200D-1F3A4",
            "k": [
                16,
                20
            ]
        },
        "eight": {
            "a": "Keycap 8",
            "b": "0038-FE0F-20E3",
            "c": "0038-20E3",
            "j": [
                "8",
                "blue-square",
                "numbers"
            ],
            "k": [
                0,
                10
            ],
            "o": 3
        },
        "flag-li": {
            "a": "Liechtenstein Flag",
            "b": "1F1F1-1F1EE",
            "k": [
                3,
                9
            ]
        },
        "dagger_knife": {
            "a": "Dagger Knife",
            "b": "1F5E1-FE0F",
            "c": "1F5E1",
            "k": [
                30,
                13
            ],
            "o": 7
        },
        "clock1": {
            "a": "Clock Face One Oclock",
            "b": "1F550",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                18
            ]
        },
        "female-singer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f3a4.png",
                    "sheet_x": 18,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f3a4.png",
                    "sheet_x": 18,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f3a4.png",
                    "sheet_x": 18,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f3a4.png",
                    "sheet_x": 18,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F3A4",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f3a4.png",
                    "sheet_x": 18,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Singer",
            "b": "1F469-200D-1F3A4",
            "k": [
                18,
                35
            ]
        },
        "male-artist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f3a8.png",
                    "sheet_x": 16,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f3a8.png",
                    "sheet_x": 16,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f3a8.png",
                    "sheet_x": 16,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f3a8.png",
                    "sheet_x": 16,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f3a8.png",
                    "sheet_x": 16,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Artist",
            "b": "1F468-200D-1F3A8",
            "k": [
                16,
                26
            ]
        },
        "crossed_swords": {
            "a": "Crossed Swords",
            "b": "2694-FE0F",
            "c": "2694",
            "j": [
                "weapon"
            ],
            "k": [
                48,
                13
            ],
            "o": 4
        },
        "nine": {
            "a": "Keycap 9",
            "b": "0039-FE0F-20E3",
            "c": "0039-20E3",
            "j": [
                "blue-square",
                "numbers",
                "9"
            ],
            "k": [
                0,
                11
            ],
            "o": 3
        },
        "flag-lk": {
            "a": "Sri Lanka Flag",
            "b": "1F1F1-1F1F0",
            "k": [
                3,
                10
            ]
        },
        "clock130": {
            "a": "Clock Face One-Thirty",
            "b": "1F55C",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                30
            ]
        },
        "clock2": {
            "a": "Clock Face Two Oclock",
            "b": "1F551",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                19
            ]
        },
        "gun": {
            "a": "Pistol",
            "b": "1F52B",
            "j": [
                "violence",
                "weapon",
                "pistol",
                "revolver"
            ],
            "k": [
                27,
                45
            ]
        },
        "keycap_ten": {
            "a": "Keycap Ten",
            "b": "1F51F",
            "j": [
                "numbers",
                "10",
                "blue-square"
            ],
            "k": [
                27,
                33
            ]
        },
        "female-artist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f3a8.png",
                    "sheet_x": 18,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f3a8.png",
                    "sheet_x": 18,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f3a8.png",
                    "sheet_x": 18,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f3a8.png",
                    "sheet_x": 18,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F3A8",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f3a8.png",
                    "sheet_x": 18,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Artist",
            "b": "1F469-200D-1F3A8",
            "k": [
                18,
                41
            ]
        },
        "flag-lr": {
            "a": "Liberia Flag",
            "b": "1F1F1-1F1F7",
            "k": [
                3,
                11
            ]
        },
        "clock230": {
            "a": "Clock Face Two-Thirty",
            "b": "1F55D",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                31
            ]
        },
        "bow_and_arrow": {
            "a": "Bow and Arrow",
            "b": "1F3F9",
            "j": [
                "sports"
            ],
            "k": [
                12,
                23
            ],
            "o": 8
        },
        "male-pilot": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-2708-FE0F",
                    "non_qualified": "1F468-1F3FB-200D-2708",
                    "image": "1f468-1f3fb-200d-2708-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-2708-FE0F",
                    "non_qualified": "1F468-1F3FC-200D-2708",
                    "image": "1f468-1f3fc-200d-2708-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-2708-FE0F",
                    "non_qualified": "1F468-1F3FD-200D-2708",
                    "image": "1f468-1f3fd-200d-2708-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-2708-FE0F",
                    "non_qualified": "1F468-1F3FE-200D-2708",
                    "image": "1f468-1f3fe-200d-2708-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-2708-FE0F",
                    "non_qualified": "1F468-1F3FF-200D-2708",
                    "image": "1f468-1f3ff-200d-2708-fe0f.png",
                    "sheet_x": 18,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Male Pilot",
            "b": "1F468-200D-2708-FE0F",
            "c": "1F468-200D-2708",
            "k": [
                18,
                3
            ]
        },
        "flag-ls": {
            "a": "Lesotho Flag",
            "b": "1F1F1-1F1F8",
            "k": [
                3,
                12
            ]
        },
        "flag-lt": {
            "a": "Lithuania Flag",
            "b": "1F1F1-1F1F9",
            "k": [
                3,
                13
            ]
        },
        "capital_abcd": {
            "a": "Input Symbol for Latin Capital Letters",
            "b": "1F520",
            "j": [
                "alphabet",
                "words",
                "blue-square"
            ],
            "k": [
                27,
                34
            ]
        },
        "female-pilot": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-2708-FE0F",
                    "non_qualified": "1F469-1F3FB-200D-2708",
                    "image": "1f469-1f3fb-200d-2708-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-2708-FE0F",
                    "non_qualified": "1F469-1F3FC-200D-2708",
                    "image": "1f469-1f3fc-200d-2708-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-2708-FE0F",
                    "non_qualified": "1F469-1F3FD-200D-2708",
                    "image": "1f469-1f3fd-200d-2708-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-2708-FE0F",
                    "non_qualified": "1F469-1F3FE-200D-2708",
                    "image": "1f469-1f3fe-200d-2708-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-2708-FE0F",
                    "non_qualified": "1F469-1F3FF-200D-2708",
                    "image": "1f469-1f3ff-200d-2708-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Pilot",
            "b": "1F469-200D-2708-FE0F",
            "c": "1F469-200D-2708",
            "k": [
                20,
                13
            ]
        },
        "clock3": {
            "a": "Clock Face Three Oclock",
            "b": "1F552",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                20
            ]
        },
        "shield": {
            "a": "Shield",
            "b": "1F6E1-FE0F",
            "c": "1F6E1",
            "j": [
                "protection",
                "security"
            ],
            "k": [
                37,
                9
            ],
            "o": 7
        },
        "male-astronaut": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F680",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f680.png",
                    "sheet_x": 17,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F680",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f680.png",
                    "sheet_x": 17,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F680",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f680.png",
                    "sheet_x": 17,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F680",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f680.png",
                    "sheet_x": 17,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F680",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f680.png",
                    "sheet_x": 17,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Astronaut",
            "b": "1F468-200D-1F680",
            "k": [
                17,
                31
            ]
        },
        "abcd": {
            "a": "Input Symbol for Latin Small Letters",
            "b": "1F521",
            "j": [
                "blue-square",
                "alphabet"
            ],
            "k": [
                27,
                35
            ]
        },
        "clock330": {
            "a": "Clock Face Three-Thirty",
            "b": "1F55E",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                32
            ]
        },
        "flag-lu": {
            "a": "Luxembourg Flag",
            "b": "1F1F1-1F1FA",
            "k": [
                3,
                14
            ]
        },
        "wrench": {
            "a": "Wrench",
            "b": "1F527",
            "j": [
                "tools",
                "diy",
                "ikea",
                "fix",
                "maintainer"
            ],
            "k": [
                27,
                41
            ]
        },
        "nut_and_bolt": {
            "a": "Nut and Bolt",
            "b": "1F529",
            "j": [
                "handy",
                "tools",
                "fix"
            ],
            "k": [
                27,
                43
            ]
        },
        "clock4": {
            "a": "Clock Face Four Oclock",
            "b": "1F553",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                21
            ]
        },
        "female-astronaut": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F680",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f680.png",
                    "sheet_x": 19,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F680",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f680.png",
                    "sheet_x": 19,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F680",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f680.png",
                    "sheet_x": 19,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F680",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f680.png",
                    "sheet_x": 19,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F680",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f680.png",
                    "sheet_x": 19,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Astronaut",
            "b": "1F469-200D-1F680",
            "k": [
                19,
                41
            ]
        },
        "flag-lv": {
            "a": "Latvia Flag",
            "b": "1F1F1-1F1FB",
            "k": [
                3,
                15
            ]
        },
        "gear": {
            "a": "Gear",
            "b": "2699-FE0F",
            "c": "2699",
            "j": [
                "cog"
            ],
            "k": [
                48,
                17
            ],
            "o": 4
        },
        "male-firefighter": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F468-1F3FB-200D-1F692",
                    "non_qualified": null,
                    "image": "1f468-1f3fb-200d-1f692.png",
                    "sheet_x": 17,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F468-1F3FC-200D-1F692",
                    "non_qualified": null,
                    "image": "1f468-1f3fc-200d-1f692.png",
                    "sheet_x": 17,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F468-1F3FD-200D-1F692",
                    "non_qualified": null,
                    "image": "1f468-1f3fd-200d-1f692.png",
                    "sheet_x": 17,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F468-1F3FE-200D-1F692",
                    "non_qualified": null,
                    "image": "1f468-1f3fe-200d-1f692.png",
                    "sheet_x": 17,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F468-1F3FF-200D-1F692",
                    "non_qualified": null,
                    "image": "1f468-1f3ff-200d-1f692.png",
                    "sheet_x": 17,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Male Firefighter",
            "b": "1F468-200D-1F692",
            "k": [
                17,
                37
            ]
        },
        "flag-ly": {
            "a": "Libya Flag",
            "b": "1F1F1-1F1FE",
            "k": [
                3,
                16
            ]
        },
        "symbols": {
            "a": "Input Symbol for Symbols",
            "b": "1F523",
            "j": [
                "blue-square",
                "music",
                "note",
                "ampersand",
                "percent",
                "glyphs",
                "characters"
            ],
            "k": [
                27,
                37
            ]
        },
        "clock430": {
            "a": "Clock Face Four-Thirty",
            "b": "1F55F",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                33
            ]
        },
        "flag-ma": {
            "a": "Morocco Flag",
            "b": "1F1F2-1F1E6",
            "k": [
                3,
                17
            ]
        },
        "compression": {
            "a": "Compression",
            "b": "1F5DC-FE0F",
            "c": "1F5DC",
            "k": [
                30,
                10
            ],
            "o": 7
        },
        "female-firefighter": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F469-1F3FB-200D-1F692",
                    "non_qualified": null,
                    "image": "1f469-1f3fb-200d-1f692.png",
                    "sheet_x": 19,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F469-1F3FC-200D-1F692",
                    "non_qualified": null,
                    "image": "1f469-1f3fc-200d-1f692.png",
                    "sheet_x": 19,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F469-1F3FD-200D-1F692",
                    "non_qualified": null,
                    "image": "1f469-1f3fd-200d-1f692.png",
                    "sheet_x": 19,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F469-1F3FE-200D-1F692",
                    "non_qualified": null,
                    "image": "1f469-1f3fe-200d-1f692.png",
                    "sheet_x": 19,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F469-1F3FF-200D-1F692",
                    "non_qualified": null,
                    "image": "1f469-1f3ff-200d-1f692.png",
                    "sheet_x": 20,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Female Firefighter",
            "b": "1F469-200D-1F692",
            "k": [
                19,
                47
            ]
        },
        "abc": {
            "a": "Input Symbol for Latin Letters",
            "b": "1F524",
            "j": [
                "blue-square",
                "alphabet"
            ],
            "k": [
                27,
                38
            ]
        },
        "clock5": {
            "a": "Clock Face Five Oclock",
            "b": "1F554",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                22
            ]
        },
        "clock530": {
            "a": "Clock Face Five-Thirty",
            "b": "1F560",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                34
            ]
        },
        "a": {
            "a": "Negative Squared Latin Capital Letter a",
            "b": "1F170-FE0F",
            "c": "1F170",
            "j": [
                "red-square",
                "alphabet",
                "letter"
            ],
            "k": [
                0,
                16
            ]
        },
        "alembic": {
            "a": "Alembic",
            "b": "2697-FE0F",
            "c": "2697",
            "j": [
                "distilling",
                "science",
                "experiment",
                "chemistry"
            ],
            "k": [
                48,
                16
            ],
            "o": 4
        },
        "flag-mc": {
            "a": "Monaco Flag",
            "b": "1F1F2-1F1E8",
            "k": [
                3,
                18
            ]
        },
        "cop": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F46E-1F3FB",
                    "non_qualified": null,
                    "image": "1f46e-1f3fb.png",
                    "sheet_x": 20,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F46E-1F3FC",
                    "non_qualified": null,
                    "image": "1f46e-1f3fc.png",
                    "sheet_x": 20,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F46E-1F3FD",
                    "non_qualified": null,
                    "image": "1f46e-1f3fd.png",
                    "sheet_x": 20,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F46E-1F3FE",
                    "non_qualified": null,
                    "image": "1f46e-1f3fe.png",
                    "sheet_x": 20,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F46E-1F3FF",
                    "non_qualified": null,
                    "image": "1f46e-1f3ff.png",
                    "sheet_x": 20,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F46E-200D-2642-FE0F",
            "a": "Police Officer",
            "b": "1F46E",
            "k": [
                20,
                45
            ]
        },
        "scales": {
            "a": "Scales",
            "b": "2696-FE0F",
            "c": "2696",
            "k": [
                48,
                15
            ],
            "o": 4
        },
        "clock6": {
            "a": "Clock Face Six Oclock",
            "b": "1F555",
            "j": [
                "time",
                "late",
                "early",
                "schedule",
                "dawn",
                "dusk"
            ],
            "k": [
                28,
                23
            ]
        },
        "flag-md": {
            "a": "Moldova Flag",
            "b": "1F1F2-1F1E9",
            "k": [
                3,
                19
            ]
        },
        "ab": {
            "a": "Negative Squared Ab",
            "b": "1F18E",
            "j": [
                "red-square",
                "alphabet"
            ],
            "k": [
                0,
                20
            ]
        },
        "male-police-officer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F46E-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F46E-1F3FB-200D-2642",
                    "image": "1f46e-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F46E-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F46E-1F3FC-200D-2642",
                    "image": "1f46e-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F46E-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F46E-1F3FD-200D-2642",
                    "image": "1f46e-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F46E-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F46E-1F3FE-200D-2642",
                    "image": "1f46e-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F46E-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F46E-1F3FF-200D-2642",
                    "image": "1f46e-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F46E",
            "a": "Male Police Officer",
            "b": "1F46E-200D-2642-FE0F",
            "c": "1F46E-200D-2642",
            "k": [
                20,
                39
            ]
        },
        "link": {
            "a": "Link Symbol",
            "b": "1F517",
            "j": [
                "rings",
                "url"
            ],
            "k": [
                27,
                25
            ]
        },
        "flag-me": {
            "a": "Montenegro Flag",
            "b": "1F1F2-1F1EA",
            "k": [
                3,
                20
            ]
        },
        "clock630": {
            "a": "Clock Face Six-Thirty",
            "b": "1F561",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                35
            ]
        },
        "b": {
            "a": "Negative Squared Latin Capital Letter B",
            "b": "1F171-FE0F",
            "c": "1F171",
            "j": [
                "red-square",
                "alphabet",
                "letter"
            ],
            "k": [
                0,
                17
            ]
        },
        "female-police-officer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F46E-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F46E-1F3FB-200D-2640",
                    "image": "1f46e-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F46E-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F46E-1F3FC-200D-2640",
                    "image": "1f46e-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F46E-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F46E-1F3FD-200D-2640",
                    "image": "1f46e-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F46E-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F46E-1F3FE-200D-2640",
                    "image": "1f46e-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F46E-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F46E-1F3FF-200D-2640",
                    "image": "1f46e-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 20,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Police Officer",
            "b": "1F46E-200D-2640-FE0F",
            "c": "1F46E-200D-2640",
            "k": [
                20,
                33
            ]
        },
        "clock7": {
            "a": "Clock Face Seven Oclock",
            "b": "1F556",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                24
            ]
        },
        "cl": {
            "a": "Squared Cl",
            "b": "1F191",
            "j": [
                "alphabet",
                "words",
                "red-square"
            ],
            "k": [
                0,
                21
            ]
        },
        "sleuth_or_spy": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F575-1F3FB",
                    "non_qualified": null,
                    "image": "1f575-1f3fb.png",
                    "sheet_x": 29,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F575-1F3FC",
                    "non_qualified": null,
                    "image": "1f575-1f3fc.png",
                    "sheet_x": 29,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F575-1F3FD",
                    "non_qualified": null,
                    "image": "1f575-1f3fd.png",
                    "sheet_x": 29,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F575-1F3FE",
                    "non_qualified": null,
                    "image": "1f575-1f3fe.png",
                    "sheet_x": 29,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F575-1F3FF",
                    "non_qualified": null,
                    "image": "1f575-1f3ff.png",
                    "sheet_x": 29,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoleted_by": "1F575-FE0F-200D-2642-FE0F",
            "a": "Sleuth or Spy",
            "b": "1F575-FE0F",
            "c": "1F575",
            "k": [
                29,
                11
            ],
            "o": 7
        },
        "flag-mf": {
            "a": "St. Martin Flag",
            "b": "1F1F2-1F1EB",
            "k": [
                3,
                21
            ]
        },
        "chains": {
            "a": "Chains",
            "b": "26D3-FE0F",
            "c": "26D3",
            "j": [
                "lock",
                "arrest"
            ],
            "k": [
                48,
                34
            ],
            "o": 5
        },
        "syringe": {
            "a": "Syringe",
            "b": "1F489",
            "j": [
                "health",
                "hospital",
                "drugs",
                "blood",
                "medicine",
                "needle",
                "doctor",
                "nurse"
            ],
            "k": [
                24,
                35
            ]
        },
        "male-detective": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F575-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F575-1F3FB-200D-2642",
                    "image": "1f575-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F575-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F575-1F3FC-200D-2642",
                    "image": "1f575-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F575-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F575-1F3FD-200D-2642",
                    "image": "1f575-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F575-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F575-1F3FE-200D-2642",
                    "image": "1f575-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F575-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F575-1F3FF-200D-2642",
                    "image": "1f575-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F575-FE0F",
            "a": "Male Detective",
            "b": "1F575-FE0F-200D-2642-FE0F",
            "k": [
                29,
                5
            ],
            "o": 7
        },
        "cool": {
            "a": "Squared Cool",
            "b": "1F192",
            "j": [
                "words",
                "blue-square"
            ],
            "k": [
                0,
                22
            ]
        },
        "clock730": {
            "a": "Clock Face Seven-Thirty",
            "b": "1F562",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                36
            ]
        },
        "flag-mg": {
            "a": "Madagascar Flag",
            "b": "1F1F2-1F1EC",
            "k": [
                3,
                22
            ]
        },
        "free": {
            "a": "Squared Free",
            "b": "1F193",
            "j": [
                "blue-square",
                "words"
            ],
            "k": [
                0,
                23
            ]
        },
        "flag-mh": {
            "a": "Marshall Islands Flag",
            "b": "1F1F2-1F1ED",
            "k": [
                3,
                23
            ]
        },
        "clock8": {
            "a": "Clock Face Eight Oclock",
            "b": "1F557",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                25
            ]
        },
        "pill": {
            "a": "Pill",
            "b": "1F48A",
            "j": [
                "health",
                "medicine",
                "doctor",
                "pharmacy",
                "drug"
            ],
            "k": [
                24,
                36
            ]
        },
        "female-detective": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F575-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F575-1F3FB-200D-2640",
                    "image": "1f575-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F575-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F575-1F3FC-200D-2640",
                    "image": "1f575-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F575-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F575-1F3FD-200D-2640",
                    "image": "1f575-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F575-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F575-1F3FE-200D-2640",
                    "image": "1f575-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F575-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F575-1F3FF-200D-2640",
                    "image": "1f575-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 29,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Detective",
            "b": "1F575-FE0F-200D-2640-FE0F",
            "k": [
                28,
                51
            ],
            "o": 7
        },
        "clock830": {
            "a": "Clock Face Eight-Thirty",
            "b": "1F563",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                37
            ]
        },
        "guardsman": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F482-1F3FB",
                    "non_qualified": null,
                    "image": "1f482-1f3fb.png",
                    "sheet_x": 23,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F482-1F3FC",
                    "non_qualified": null,
                    "image": "1f482-1f3fc.png",
                    "sheet_x": 23,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F482-1F3FD",
                    "non_qualified": null,
                    "image": "1f482-1f3fd.png",
                    "sheet_x": 23,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F482-1F3FE",
                    "non_qualified": null,
                    "image": "1f482-1f3fe.png",
                    "sheet_x": 23,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F482-1F3FF",
                    "non_qualified": null,
                    "image": "1f482-1f3ff.png",
                    "sheet_x": 23,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F482-200D-2642-FE0F",
            "a": "Guardsman",
            "b": "1F482",
            "j": [
                "uk",
                "gb",
                "british",
                "male",
                "guy",
                "royal"
            ],
            "k": [
                23,
                31
            ]
        },
        "information_source": {
            "a": "Information Source",
            "b": "2139-FE0F",
            "c": "2139",
            "j": [
                "blue-square",
                "alphabet",
                "letter"
            ],
            "k": [
                46,
                32
            ],
            "o": 3
        },
        "flag-mk": {
            "a": "Macedonia Flag",
            "b": "1F1F2-1F1F0",
            "k": [
                3,
                24
            ]
        },
        "smoking": {
            "a": "Smoking Symbol",
            "b": "1F6AC",
            "j": [
                "kills",
                "tobacco",
                "cigarette",
                "joint",
                "smoke"
            ],
            "k": [
                35,
                17
            ]
        },
        "id": {
            "a": "Squared Id",
            "b": "1F194",
            "j": [
                "purple-square",
                "words"
            ],
            "k": [
                0,
                24
            ]
        },
        "clock9": {
            "a": "Clock Face Nine Oclock",
            "b": "1F558",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                26
            ]
        },
        "flag-ml": {
            "a": "Mali Flag",
            "b": "1F1F2-1F1F1",
            "k": [
                3,
                25
            ]
        },
        "coffin": {
            "a": "Coffin",
            "b": "26B0-FE0F",
            "c": "26B0",
            "j": [
                "vampire",
                "dead",
                "die",
                "death",
                "rip",
                "graveyard",
                "cemetery",
                "casket",
                "funeral",
                "box"
            ],
            "k": [
                48,
                24
            ],
            "o": 4
        },
        "male-guard": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F482-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F482-1F3FB-200D-2642",
                    "image": "1f482-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F482-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F482-1F3FC-200D-2642",
                    "image": "1f482-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F482-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F482-1F3FD-200D-2642",
                    "image": "1f482-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F482-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F482-1F3FE-200D-2642",
                    "image": "1f482-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F482-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F482-1F3FF-200D-2642",
                    "image": "1f482-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F482",
            "a": "Male Guard",
            "b": "1F482-200D-2642-FE0F",
            "c": "1F482-200D-2642",
            "k": [
                23,
                25
            ]
        },
        "m": {
            "a": "Circled Latin Capital Letter M",
            "b": "24C2-FE0F",
            "c": "24C2",
            "j": [
                "alphabet",
                "blue-circle",
                "letter"
            ],
            "k": [
                47,
                7
            ],
            "o": 1
        },
        "funeral_urn": {
            "a": "Funeral Urn",
            "b": "26B1-FE0F",
            "c": "26B1",
            "j": [
                "dead",
                "die",
                "death",
                "rip",
                "ashes"
            ],
            "k": [
                48,
                25
            ],
            "o": 4
        },
        "female-guard": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F482-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F482-1F3FB-200D-2640",
                    "image": "1f482-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F482-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F482-1F3FC-200D-2640",
                    "image": "1f482-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F482-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F482-1F3FD-200D-2640",
                    "image": "1f482-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F482-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F482-1F3FE-200D-2640",
                    "image": "1f482-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F482-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F482-1F3FF-200D-2640",
                    "image": "1f482-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Guard",
            "b": "1F482-200D-2640-FE0F",
            "c": "1F482-200D-2640",
            "k": [
                23,
                19
            ]
        },
        "flag-mm": {
            "a": "Myanmar (burma) Flag",
            "b": "1F1F2-1F1F2",
            "k": [
                3,
                26
            ]
        },
        "clock930": {
            "a": "Clock Face Nine-Thirty",
            "b": "1F564",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                38
            ]
        },
        "moyai": {
            "a": "Moyai",
            "b": "1F5FF",
            "j": [
                "rock",
                "easter island",
                "moai"
            ],
            "k": [
                30,
                23
            ]
        },
        "new": {
            "a": "Squared New",
            "b": "1F195",
            "j": [
                "blue-square",
                "words",
                "start"
            ],
            "k": [
                0,
                25
            ]
        },
        "flag-mn": {
            "a": "Mongolia Flag",
            "b": "1F1F2-1F1F3",
            "k": [
                3,
                27
            ]
        },
        "construction_worker": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F477-1F3FB",
                    "non_qualified": null,
                    "image": "1f477-1f3fb.png",
                    "sheet_x": 22,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F477-1F3FC",
                    "non_qualified": null,
                    "image": "1f477-1f3fc.png",
                    "sheet_x": 22,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F477-1F3FD",
                    "non_qualified": null,
                    "image": "1f477-1f3fd.png",
                    "sheet_x": 22,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F477-1F3FE",
                    "non_qualified": null,
                    "image": "1f477-1f3fe.png",
                    "sheet_x": 22,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F477-1F3FF",
                    "non_qualified": null,
                    "image": "1f477-1f3ff.png",
                    "sheet_x": 22,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F477-200D-2642-FE0F",
            "a": "Construction Worker",
            "b": "1F477",
            "k": [
                22,
                28
            ]
        },
        "clock10": {
            "a": "Clock Face Ten Oclock",
            "b": "1F559",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                27
            ]
        },
        "clock1030": {
            "a": "Clock Face Ten-Thirty",
            "b": "1F565",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                39
            ]
        },
        "ng": {
            "a": "Squared Ng",
            "b": "1F196",
            "j": [
                "blue-square",
                "words",
                "shape",
                "icon"
            ],
            "k": [
                0,
                26
            ]
        },
        "male-construction-worker": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F477-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F477-1F3FB-200D-2642",
                    "image": "1f477-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F477-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F477-1F3FC-200D-2642",
                    "image": "1f477-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F477-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F477-1F3FD-200D-2642",
                    "image": "1f477-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F477-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F477-1F3FE-200D-2642",
                    "image": "1f477-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F477-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F477-1F3FF-200D-2642",
                    "image": "1f477-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F477",
            "a": "Male Construction Worker",
            "b": "1F477-200D-2642-FE0F",
            "c": "1F477-200D-2642",
            "k": [
                22,
                22
            ]
        },
        "flag-mo": {
            "a": "Macau Sar China Flag",
            "b": "1F1F2-1F1F4",
            "k": [
                3,
                28
            ]
        },
        "oil_drum": {
            "a": "Oil Drum",
            "b": "1F6E2-FE0F",
            "c": "1F6E2",
            "j": [
                "barrell"
            ],
            "k": [
                37,
                10
            ],
            "o": 7
        },
        "o2": {
            "a": "Negative Squared Latin Capital Letter O",
            "b": "1F17E-FE0F",
            "c": "1F17E",
            "j": [
                "alphabet",
                "red-square",
                "letter"
            ],
            "k": [
                0,
                18
            ]
        },
        "female-construction-worker": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F477-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F477-1F3FB-200D-2640",
                    "image": "1f477-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F477-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F477-1F3FC-200D-2640",
                    "image": "1f477-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F477-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F477-1F3FD-200D-2640",
                    "image": "1f477-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F477-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F477-1F3FE-200D-2640",
                    "image": "1f477-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F477-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F477-1F3FF-200D-2640",
                    "image": "1f477-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 22,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Construction Worker",
            "b": "1F477-200D-2640-FE0F",
            "c": "1F477-200D-2640",
            "k": [
                22,
                16
            ]
        },
        "clock11": {
            "a": "Clock Face Eleven Oclock",
            "b": "1F55A",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                28
            ]
        },
        "crystal_ball": {
            "a": "Crystal Ball",
            "b": "1F52E",
            "j": [
                "disco",
                "party",
                "magic",
                "circus",
                "fortune_teller"
            ],
            "k": [
                27,
                48
            ]
        },
        "flag-mp": {
            "a": "Northern Mariana Islands Flag",
            "b": "1F1F2-1F1F5",
            "k": [
                3,
                29
            ]
        },
        "flag-mq": {
            "a": "Martinique Flag",
            "b": "1F1F2-1F1F6",
            "k": [
                3,
                30
            ]
        },
        "prince": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F934-1F3FB",
                    "non_qualified": null,
                    "image": "1f934-1f3fb.png",
                    "sheet_x": 39,
                    "sheet_y": 29,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F934-1F3FC",
                    "non_qualified": null,
                    "image": "1f934-1f3fc.png",
                    "sheet_x": 39,
                    "sheet_y": 30,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F934-1F3FD",
                    "non_qualified": null,
                    "image": "1f934-1f3fd.png",
                    "sheet_x": 39,
                    "sheet_y": 31,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F934-1F3FE",
                    "non_qualified": null,
                    "image": "1f934-1f3fe.png",
                    "sheet_x": 39,
                    "sheet_y": 32,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F934-1F3FF",
                    "non_qualified": null,
                    "image": "1f934-1f3ff.png",
                    "sheet_x": 39,
                    "sheet_y": 33,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Prince",
            "b": "1F934",
            "j": [
                "boy",
                "man",
                "male",
                "crown",
                "royal",
                "king"
            ],
            "k": [
                39,
                28
            ],
            "o": 9
        },
        "ok": {
            "a": "Squared Ok",
            "b": "1F197",
            "j": [
                "good",
                "agree",
                "yes",
                "blue-square"
            ],
            "k": [
                0,
                27
            ]
        },
        "clock1130": {
            "a": "Clock Face Eleven-Thirty",
            "b": "1F566",
            "j": [
                "time",
                "late",
                "early",
                "schedule"
            ],
            "k": [
                28,
                40
            ]
        },
        "shopping_trolley": {
            "a": "Shopping Trolley",
            "b": "1F6D2",
            "k": [
                37,
                7
            ],
            "o": 9
        },
        "flag-mr": {
            "a": "Mauritania Flag",
            "b": "1F1F2-1F1F7",
            "k": [
                3,
                31
            ]
        },
        "princess": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F478-1F3FB",
                    "non_qualified": null,
                    "image": "1f478-1f3fb.png",
                    "sheet_x": 22,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F478-1F3FC",
                    "non_qualified": null,
                    "image": "1f478-1f3fc.png",
                    "sheet_x": 22,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F478-1F3FD",
                    "non_qualified": null,
                    "image": "1f478-1f3fd.png",
                    "sheet_x": 22,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F478-1F3FE",
                    "non_qualified": null,
                    "image": "1f478-1f3fe.png",
                    "sheet_x": 22,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F478-1F3FF",
                    "non_qualified": null,
                    "image": "1f478-1f3ff.png",
                    "sheet_x": 22,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Princess",
            "b": "1F478",
            "j": [
                "girl",
                "woman",
                "female",
                "blond",
                "crown",
                "royal",
                "queen"
            ],
            "k": [
                22,
                34
            ]
        },
        "new_moon": {
            "a": "New Moon Symbol",
            "b": "1F311",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                9
            ]
        },
        "parking": {
            "a": "Negative Squared Latin Capital Letter P",
            "b": "1F17F-FE0F",
            "c": "1F17F",
            "j": [
                "cars",
                "blue-square",
                "alphabet",
                "letter"
            ],
            "k": [
                0,
                19
            ],
            "o": 5
        },
        "sos": {
            "a": "Squared Sos",
            "b": "1F198",
            "j": [
                "help",
                "red-square",
                "words",
                "emergency",
                "911"
            ],
            "k": [
                0,
                28
            ]
        },
        "man_with_turban": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F473-1F3FB",
                    "non_qualified": null,
                    "image": "1f473-1f3fb.png",
                    "sheet_x": 21,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F473-1F3FC",
                    "non_qualified": null,
                    "image": "1f473-1f3fc.png",
                    "sheet_x": 21,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F473-1F3FD",
                    "non_qualified": null,
                    "image": "1f473-1f3fd.png",
                    "sheet_x": 21,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F473-1F3FE",
                    "non_qualified": null,
                    "image": "1f473-1f3fe.png",
                    "sheet_x": 21,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F473-1F3FF",
                    "non_qualified": null,
                    "image": "1f473-1f3ff.png",
                    "sheet_x": 21,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F473-200D-2642-FE0F",
            "a": "Man with Turban",
            "b": "1F473",
            "j": [
                "male",
                "indian",
                "hinduism",
                "arabs"
            ],
            "k": [
                21,
                44
            ]
        },
        "flag-ms": {
            "a": "Montserrat Flag",
            "b": "1F1F2-1F1F8",
            "k": [
                3,
                32
            ]
        },
        "waxing_crescent_moon": {
            "a": "Waxing Crescent Moon Symbol",
            "b": "1F312",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                10
            ]
        },
        "up": {
            "a": "Squared Up with Exclamation Mark",
            "b": "1F199",
            "j": [
                "blue-square",
                "above",
                "high"
            ],
            "k": [
                0,
                29
            ]
        },
        "first_quarter_moon": {
            "a": "First Quarter Moon Symbol",
            "b": "1F313",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                11
            ]
        },
        "flag-mt": {
            "a": "Malta Flag",
            "b": "1F1F2-1F1F9",
            "k": [
                3,
                33
            ]
        },
        "man-wearing-turban": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F473-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F473-1F3FB-200D-2642",
                    "image": "1f473-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F473-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F473-1F3FC-200D-2642",
                    "image": "1f473-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F473-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F473-1F3FD-200D-2642",
                    "image": "1f473-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F473-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F473-1F3FE-200D-2642",
                    "image": "1f473-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F473-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F473-1F3FF-200D-2642",
                    "image": "1f473-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F473",
            "a": "Man Wearing Turban",
            "b": "1F473-200D-2642-FE0F",
            "c": "1F473-200D-2642",
            "k": [
                21,
                38
            ]
        },
        "moon": {
            "a": "Waxing Gibbous Moon Symbol",
            "b": "1F314",
            "k": [
                6,
                12
            ],
            "n": [
                "waxing_gibbous_moon"
            ]
        },
        "woman-wearing-turban": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F473-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F473-1F3FB-200D-2640",
                    "image": "1f473-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F473-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F473-1F3FC-200D-2640",
                    "image": "1f473-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F473-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F473-1F3FD-200D-2640",
                    "image": "1f473-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F473-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F473-1F3FE-200D-2640",
                    "image": "1f473-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F473-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F473-1F3FF-200D-2640",
                    "image": "1f473-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Wearing Turban",
            "b": "1F473-200D-2640-FE0F",
            "c": "1F473-200D-2640",
            "k": [
                21,
                32
            ]
        },
        "vs": {
            "a": "Squared Vs",
            "b": "1F19A",
            "j": [
                "words",
                "orange-square"
            ],
            "k": [
                0,
                30
            ]
        },
        "flag-mu": {
            "a": "Mauritius Flag",
            "b": "1F1F2-1F1FA",
            "k": [
                3,
                34
            ]
        },
        "man_with_gua_pi_mao": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F472-1F3FB",
                    "non_qualified": null,
                    "image": "1f472-1f3fb.png",
                    "sheet_x": 21,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F472-1F3FC",
                    "non_qualified": null,
                    "image": "1f472-1f3fc.png",
                    "sheet_x": 21,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F472-1F3FD",
                    "non_qualified": null,
                    "image": "1f472-1f3fd.png",
                    "sheet_x": 21,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F472-1F3FE",
                    "non_qualified": null,
                    "image": "1f472-1f3fe.png",
                    "sheet_x": 21,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F472-1F3FF",
                    "non_qualified": null,
                    "image": "1f472-1f3ff.png",
                    "sheet_x": 21,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Man with Gua Pi Mao",
            "b": "1F472",
            "j": [
                "male",
                "boy",
                "chinese"
            ],
            "k": [
                21,
                26
            ]
        },
        "koko": {
            "a": "Squared Katakana Koko",
            "b": "1F201",
            "j": [
                "blue-square",
                "here",
                "katakana",
                "japanese",
                "destination"
            ],
            "k": [
                5,
                29
            ]
        },
        "full_moon": {
            "a": "Full Moon Symbol",
            "b": "1F315",
            "j": [
                "nature",
                "yellow",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                13
            ]
        },
        "flag-mv": {
            "a": "Maldives Flag",
            "b": "1F1F2-1F1FB",
            "k": [
                3,
                35
            ]
        },
        "person_with_headscarf": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D5-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d5-1f3fb.png",
                    "sheet_x": 43,
                    "sheet_y": 23,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D5-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d5-1f3fc.png",
                    "sheet_x": 43,
                    "sheet_y": 24,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D5-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d5-1f3fd.png",
                    "sheet_x": 43,
                    "sheet_y": 25,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D5-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d5-1f3fe.png",
                    "sheet_x": 43,
                    "sheet_y": 26,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D5-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d5-1f3ff.png",
                    "sheet_x": 43,
                    "sheet_y": 27,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Person with Headscarf",
            "b": "1F9D5",
            "k": [
                43,
                22
            ],
            "o": 10
        },
        "waning_gibbous_moon": {
            "a": "Waning Gibbous Moon Symbol",
            "b": "1F316",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep",
                "waxing_gibbous_moon"
            ],
            "k": [
                6,
                14
            ]
        },
        "sa": {
            "a": "Squared Katakana Sa",
            "b": "1F202-FE0F",
            "c": "1F202",
            "j": [
                "japanese",
                "blue-square",
                "katakana"
            ],
            "k": [
                5,
                30
            ]
        },
        "flag-mw": {
            "a": "Malawi Flag",
            "b": "1F1F2-1F1FC",
            "k": [
                3,
                36
            ]
        },
        "last_quarter_moon": {
            "a": "Last Quarter Moon Symbol",
            "b": "1F317",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                15
            ]
        },
        "u6708": {
            "a": "Squared Cjk Unified Ideograph-6708",
            "b": "1F237-FE0F",
            "c": "1F237",
            "j": [
                "chinese",
                "month",
                "moon",
                "japanese",
                "orange-square",
                "kanji"
            ],
            "k": [
                5,
                38
            ]
        },
        "bearded_person": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D4-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d4-1f3fb.png",
                    "sheet_x": 43,
                    "sheet_y": 17,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D4-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d4-1f3fc.png",
                    "sheet_x": 43,
                    "sheet_y": 18,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D4-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d4-1f3fd.png",
                    "sheet_x": 43,
                    "sheet_y": 19,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D4-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d4-1f3fe.png",
                    "sheet_x": 43,
                    "sheet_y": 20,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D4-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d4-1f3ff.png",
                    "sheet_x": 43,
                    "sheet_y": 21,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Bearded Person",
            "b": "1F9D4",
            "j": [
                "person",
                "bewhiskered"
            ],
            "k": [
                43,
                16
            ],
            "o": 10
        },
        "flag-mx": {
            "a": "Mexico Flag",
            "b": "1F1F2-1F1FD",
            "k": [
                3,
                37
            ]
        },
        "u6709": {
            "a": "Squared Cjk Unified Ideograph-6709",
            "b": "1F236",
            "j": [
                "orange-square",
                "chinese",
                "have",
                "kanji"
            ],
            "k": [
                5,
                37
            ]
        },
        "person_with_blond_hair": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F471-1F3FB",
                    "non_qualified": null,
                    "image": "1f471-1f3fb.png",
                    "sheet_x": 21,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F471-1F3FC",
                    "non_qualified": null,
                    "image": "1f471-1f3fc.png",
                    "sheet_x": 21,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F471-1F3FD",
                    "non_qualified": null,
                    "image": "1f471-1f3fd.png",
                    "sheet_x": 21,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F471-1F3FE",
                    "non_qualified": null,
                    "image": "1f471-1f3fe.png",
                    "sheet_x": 21,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F471-1F3FF",
                    "non_qualified": null,
                    "image": "1f471-1f3ff.png",
                    "sheet_x": 21,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F471-200D-2642-FE0F",
            "a": "Person with Blond Hair",
            "b": "1F471",
            "k": [
                21,
                20
            ]
        },
        "waning_crescent_moon": {
            "a": "Waning Crescent Moon Symbol",
            "b": "1F318",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                16
            ]
        },
        "flag-my": {
            "a": "Malaysia Flag",
            "b": "1F1F2-1F1FE",
            "k": [
                3,
                38
            ]
        },
        "u6307": {
            "a": "Squared Cjk Unified Ideograph-6307",
            "b": "1F22F",
            "j": [
                "chinese",
                "point",
                "green-square",
                "kanji"
            ],
            "k": [
                5,
                32
            ],
            "o": 5
        },
        "blond-haired-man": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F471-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F471-1F3FB-200D-2642",
                    "image": "1f471-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F471-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F471-1F3FC-200D-2642",
                    "image": "1f471-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F471-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F471-1F3FD-200D-2642",
                    "image": "1f471-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F471-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F471-1F3FE-200D-2642",
                    "image": "1f471-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F471-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F471-1F3FF-200D-2642",
                    "image": "1f471-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F471",
            "a": "Blond Haired Man",
            "b": "1F471-200D-2642-FE0F",
            "c": "1F471-200D-2642",
            "k": [
                21,
                14
            ]
        },
        "crescent_moon": {
            "a": "Crescent Moon",
            "b": "1F319",
            "j": [
                "night",
                "sleep",
                "sky",
                "evening",
                "magic"
            ],
            "k": [
                6,
                17
            ]
        },
        "flag-mz": {
            "a": "Mozambique Flag",
            "b": "1F1F2-1F1FF",
            "k": [
                3,
                39
            ]
        },
        "new_moon_with_face": {
            "a": "New Moon with Face",
            "b": "1F31A",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                18
            ]
        },
        "flag-na": {
            "a": "Namibia Flag",
            "b": "1F1F3-1F1E6",
            "k": [
                3,
                40
            ]
        },
        "blond-haired-woman": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F471-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F471-1F3FB-200D-2640",
                    "image": "1f471-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F471-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F471-1F3FC-200D-2640",
                    "image": "1f471-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F471-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F471-1F3FD-200D-2640",
                    "image": "1f471-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F471-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F471-1F3FE-200D-2640",
                    "image": "1f471-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F471-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F471-1F3FF-200D-2640",
                    "image": "1f471-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 21,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Blond Haired Woman",
            "b": "1F471-200D-2640-FE0F",
            "c": "1F471-200D-2640",
            "k": [
                21,
                8
            ]
        },
        "ideograph_advantage": {
            "a": "Circled Ideograph Advantage",
            "b": "1F250",
            "j": [
                "chinese",
                "kanji",
                "obtain",
                "get",
                "circle"
            ],
            "k": [
                5,
                42
            ]
        },
        "first_quarter_moon_with_face": {
            "a": "First Quarter Moon with Face",
            "b": "1F31B",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                19
            ]
        },
        "man_in_tuxedo": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F935-1F3FB",
                    "non_qualified": null,
                    "image": "1f935-1f3fb.png",
                    "sheet_x": 39,
                    "sheet_y": 35,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F935-1F3FC",
                    "non_qualified": null,
                    "image": "1f935-1f3fc.png",
                    "sheet_x": 39,
                    "sheet_y": 36,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F935-1F3FD",
                    "non_qualified": null,
                    "image": "1f935-1f3fd.png",
                    "sheet_x": 39,
                    "sheet_y": 37,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F935-1F3FE",
                    "non_qualified": null,
                    "image": "1f935-1f3fe.png",
                    "sheet_x": 39,
                    "sheet_y": 38,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F935-1F3FF",
                    "non_qualified": null,
                    "image": "1f935-1f3ff.png",
                    "sheet_x": 39,
                    "sheet_y": 39,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Man in Tuxedo",
            "b": "1F935",
            "j": [
                "couple",
                "marriage",
                "wedding",
                "groom"
            ],
            "k": [
                39,
                34
            ],
            "o": 9
        },
        "flag-nc": {
            "a": "New Caledonia Flag",
            "b": "1F1F3-1F1E8",
            "k": [
                3,
                41
            ]
        },
        "u5272": {
            "a": "Squared Cjk Unified Ideograph-5272",
            "b": "1F239",
            "j": [
                "cut",
                "divide",
                "chinese",
                "kanji",
                "pink-square"
            ],
            "k": [
                5,
                40
            ]
        },
        "flag-ne": {
            "a": "Niger Flag",
            "b": "1F1F3-1F1EA",
            "k": [
                3,
                42
            ]
        },
        "last_quarter_moon_with_face": {
            "a": "Last Quarter Moon with Face",
            "b": "1F31C",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                20
            ]
        },
        "u7121": {
            "a": "Squared Cjk Unified Ideograph-7121",
            "b": "1F21A",
            "j": [
                "nothing",
                "chinese",
                "kanji",
                "japanese",
                "orange-square"
            ],
            "k": [
                5,
                31
            ],
            "o": 5
        },
        "bride_with_veil": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F470-1F3FB",
                    "non_qualified": null,
                    "image": "1f470-1f3fb.png",
                    "sheet_x": 21,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F470-1F3FC",
                    "non_qualified": null,
                    "image": "1f470-1f3fc.png",
                    "sheet_x": 21,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F470-1F3FD",
                    "non_qualified": null,
                    "image": "1f470-1f3fd.png",
                    "sheet_x": 21,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F470-1F3FE",
                    "non_qualified": null,
                    "image": "1f470-1f3fe.png",
                    "sheet_x": 21,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F470-1F3FF",
                    "non_qualified": null,
                    "image": "1f470-1f3ff.png",
                    "sheet_x": 21,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Bride with Veil",
            "b": "1F470",
            "j": [
                "couple",
                "marriage",
                "wedding",
                "woman",
                "bride"
            ],
            "k": [
                21,
                2
            ]
        },
        "u7981": {
            "a": "Squared Cjk Unified Ideograph-7981",
            "b": "1F232",
            "j": [
                "kanji",
                "japanese",
                "chinese",
                "forbidden",
                "limit",
                "restricted",
                "red-square"
            ],
            "k": [
                5,
                33
            ]
        },
        "pregnant_woman": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F930-1F3FB",
                    "non_qualified": null,
                    "image": "1f930-1f3fb.png",
                    "sheet_x": 39,
                    "sheet_y": 5,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F930-1F3FC",
                    "non_qualified": null,
                    "image": "1f930-1f3fc.png",
                    "sheet_x": 39,
                    "sheet_y": 6,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F930-1F3FD",
                    "non_qualified": null,
                    "image": "1f930-1f3fd.png",
                    "sheet_x": 39,
                    "sheet_y": 7,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F930-1F3FE",
                    "non_qualified": null,
                    "image": "1f930-1f3fe.png",
                    "sheet_x": 39,
                    "sheet_y": 8,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F930-1F3FF",
                    "non_qualified": null,
                    "image": "1f930-1f3ff.png",
                    "sheet_x": 39,
                    "sheet_y": 9,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Pregnant Woman",
            "b": "1F930",
            "j": [
                "baby"
            ],
            "k": [
                39,
                4
            ],
            "o": 9
        },
        "thermometer": {
            "a": "Thermometer",
            "b": "1F321-FE0F",
            "c": "1F321",
            "j": [
                "weather",
                "temperature",
                "hot",
                "cold"
            ],
            "k": [
                6,
                25
            ],
            "o": 7
        },
        "flag-nf": {
            "a": "Norfolk Island Flag",
            "b": "1F1F3-1F1EB",
            "k": [
                3,
                43
            ]
        },
        "sunny": {
            "a": "Black Sun with Rays",
            "b": "2600-FE0F",
            "c": "2600",
            "j": [
                "weather",
                "nature",
                "brightness",
                "summer",
                "beach",
                "spring"
            ],
            "k": [
                47,
                16
            ],
            "o": 1
        },
        "accept": {
            "a": "Circled Ideograph Accept",
            "b": "1F251",
            "j": [
                "ok",
                "good",
                "chinese",
                "kanji",
                "agree",
                "yes",
                "orange-circle"
            ],
            "k": [
                5,
                43
            ]
        },
        "flag-ng": {
            "a": "Nigeria Flag",
            "b": "1F1F3-1F1EC",
            "k": [
                3,
                44
            ]
        },
        "breast-feeding": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F931-1F3FB",
                    "non_qualified": null,
                    "image": "1f931-1f3fb.png",
                    "sheet_x": 39,
                    "sheet_y": 11,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F931-1F3FC",
                    "non_qualified": null,
                    "image": "1f931-1f3fc.png",
                    "sheet_x": 39,
                    "sheet_y": 12,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F931-1F3FD",
                    "non_qualified": null,
                    "image": "1f931-1f3fd.png",
                    "sheet_x": 39,
                    "sheet_y": 13,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F931-1F3FE",
                    "non_qualified": null,
                    "image": "1f931-1f3fe.png",
                    "sheet_x": 39,
                    "sheet_y": 14,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F931-1F3FF",
                    "non_qualified": null,
                    "image": "1f931-1f3ff.png",
                    "sheet_x": 39,
                    "sheet_y": 15,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Breast-Feeding",
            "b": "1F931",
            "k": [
                39,
                10
            ],
            "o": 10
        },
        "full_moon_with_face": {
            "a": "Full Moon with Face",
            "b": "1F31D",
            "j": [
                "nature",
                "twilight",
                "planet",
                "space",
                "night",
                "evening",
                "sleep"
            ],
            "k": [
                6,
                21
            ]
        },
        "flag-ni": {
            "a": "Nicaragua Flag",
            "b": "1F1F3-1F1EE",
            "k": [
                3,
                45
            ]
        },
        "u7533": {
            "a": "Squared Cjk Unified Ideograph-7533",
            "b": "1F238",
            "j": [
                "chinese",
                "japanese",
                "kanji",
                "orange-square"
            ],
            "k": [
                5,
                39
            ]
        },
        "angel": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F47C-1F3FB",
                    "non_qualified": null,
                    "image": "1f47c-1f3fb.png",
                    "sheet_x": 22,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F47C-1F3FC",
                    "non_qualified": null,
                    "image": "1f47c-1f3fc.png",
                    "sheet_x": 22,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F47C-1F3FD",
                    "non_qualified": null,
                    "image": "1f47c-1f3fd.png",
                    "sheet_x": 22,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F47C-1F3FE",
                    "non_qualified": null,
                    "image": "1f47c-1f3fe.png",
                    "sheet_x": 22,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F47C-1F3FF",
                    "non_qualified": null,
                    "image": "1f47c-1f3ff.png",
                    "sheet_x": 22,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Baby Angel",
            "b": "1F47C",
            "j": [
                "heaven",
                "wings",
                "halo"
            ],
            "k": [
                22,
                43
            ]
        },
        "sun_with_face": {
            "a": "Sun with Face",
            "b": "1F31E",
            "j": [
                "nature",
                "morning",
                "sky"
            ],
            "k": [
                6,
                22
            ]
        },
        "santa": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F385-1F3FB",
                    "non_qualified": null,
                    "image": "1f385-1f3fb.png",
                    "sheet_x": 8,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F385-1F3FC",
                    "non_qualified": null,
                    "image": "1f385-1f3fc.png",
                    "sheet_x": 8,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F385-1F3FD",
                    "non_qualified": null,
                    "image": "1f385-1f3fd.png",
                    "sheet_x": 8,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F385-1F3FE",
                    "non_qualified": null,
                    "image": "1f385-1f3fe.png",
                    "sheet_x": 8,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F385-1F3FF",
                    "non_qualified": null,
                    "image": "1f385-1f3ff.png",
                    "sheet_x": 8,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Father Christmas",
            "b": "1F385",
            "j": [
                "festival",
                "man",
                "male",
                "xmas",
                "father christmas"
            ],
            "k": [
                8,
                19
            ]
        },
        "u5408": {
            "a": "Squared Cjk Unified Ideograph-5408",
            "b": "1F234",
            "j": [
                "japanese",
                "chinese",
                "join",
                "kanji",
                "red-square"
            ],
            "k": [
                5,
                35
            ]
        },
        "flag-nl": {
            "a": "Netherlands Flag",
            "b": "1F1F3-1F1F1",
            "k": [
                3,
                46
            ]
        },
        "mrs_claus": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F936-1F3FB",
                    "non_qualified": null,
                    "image": "1f936-1f3fb.png",
                    "sheet_x": 39,
                    "sheet_y": 41,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F936-1F3FC",
                    "non_qualified": null,
                    "image": "1f936-1f3fc.png",
                    "sheet_x": 39,
                    "sheet_y": 42,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F936-1F3FD",
                    "non_qualified": null,
                    "image": "1f936-1f3fd.png",
                    "sheet_x": 39,
                    "sheet_y": 43,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F936-1F3FE",
                    "non_qualified": null,
                    "image": "1f936-1f3fe.png",
                    "sheet_x": 39,
                    "sheet_y": 44,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F936-1F3FF",
                    "non_qualified": null,
                    "image": "1f936-1f3ff.png",
                    "sheet_x": 39,
                    "sheet_y": 45,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Mother Christmas",
            "b": "1F936",
            "j": [
                "woman",
                "female",
                "xmas",
                "mother christmas"
            ],
            "k": [
                39,
                40
            ],
            "n": [
                "mother_christmas"
            ],
            "o": 9
        },
        "u7a7a": {
            "a": "Squared Cjk Unified Ideograph-7a7a",
            "b": "1F233",
            "j": [
                "kanji",
                "japanese",
                "chinese",
                "empty",
                "sky",
                "blue-square"
            ],
            "k": [
                5,
                34
            ]
        },
        "star": {
            "a": "White Medium Star",
            "b": "2B50",
            "j": [
                "night",
                "yellow"
            ],
            "k": [
                50,
                22
            ],
            "o": 5
        },
        "flag-no": {
            "a": "Norway Flag",
            "b": "1F1F3-1F1F4",
            "k": [
                3,
                47
            ]
        },
        "mage": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D9-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d9-1f3fb.png",
                    "sheet_x": 44,
                    "sheet_y": 43,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D9-1F3FB-200D-2640-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9D9-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d9-1f3fc.png",
                    "sheet_x": 44,
                    "sheet_y": 44,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D9-1F3FC-200D-2640-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9D9-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d9-1f3fd.png",
                    "sheet_x": 44,
                    "sheet_y": 45,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D9-1F3FD-200D-2640-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9D9-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d9-1f3fe.png",
                    "sheet_x": 44,
                    "sheet_y": 46,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D9-1F3FE-200D-2640-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9D9-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d9-1f3ff.png",
                    "sheet_x": 44,
                    "sheet_y": 47,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D9-1F3FF-200D-2640-FE0F"
                }
            },
            "obsoleted_by": "1F9D9-200D-2640-FE0F",
            "a": "Mage",
            "b": "1F9D9",
            "k": [
                44,
                42
            ],
            "o": 10
        },
        "star2": {
            "a": "Glowing Star",
            "b": "1F31F",
            "j": [
                "night",
                "sparkle",
                "awesome",
                "good",
                "magic"
            ],
            "k": [
                6,
                23
            ]
        },
        "flag-np": {
            "a": "Nepal Flag",
            "b": "1F1F3-1F1F5",
            "k": [
                3,
                48
            ]
        },
        "congratulations": {
            "a": "Circled Ideograph Congratulation",
            "b": "3297-FE0F",
            "c": "3297",
            "j": [
                "chinese",
                "kanji",
                "japanese",
                "red-circle"
            ],
            "k": [
                50,
                26
            ],
            "o": 1
        },
        "flag-nr": {
            "a": "Nauru Flag",
            "b": "1F1F3-1F1F7",
            "k": [
                3,
                49
            ]
        },
        "stars": {
            "a": "Shooting Star",
            "b": "1F320",
            "j": [
                "night",
                "photo"
            ],
            "k": [
                6,
                24
            ]
        },
        "female_mage": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D9-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9D9-1F3FB-200D-2640",
                    "image": "1f9d9-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 31,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D9-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9D9-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9D9-1F3FC-200D-2640",
                    "image": "1f9d9-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 32,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D9-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9D9-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9D9-1F3FD-200D-2640",
                    "image": "1f9d9-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 33,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D9-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9D9-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9D9-1F3FE-200D-2640",
                    "image": "1f9d9-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 34,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D9-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9D9-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9D9-1F3FF-200D-2640",
                    "image": "1f9d9-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 35,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D9-1F3FF"
                }
            },
            "obsoletes": "1F9D9",
            "a": "Female Mage",
            "b": "1F9D9-200D-2640-FE0F",
            "c": "1F9D9-200D-2640",
            "k": [
                44,
                30
            ],
            "o": 10
        },
        "secret": {
            "a": "Circled Ideograph Secret",
            "b": "3299-FE0F",
            "c": "3299",
            "j": [
                "privacy",
                "chinese",
                "sshh",
                "kanji",
                "red-circle"
            ],
            "k": [
                50,
                27
            ],
            "o": 1
        },
        "flag-nu": {
            "a": "Niue Flag",
            "b": "1F1F3-1F1FA",
            "k": [
                3,
                50
            ]
        },
        "u55b6": {
            "a": "Squared Cjk Unified Ideograph-55b6",
            "b": "1F23A",
            "j": [
                "japanese",
                "opening hours",
                "orange-square"
            ],
            "k": [
                5,
                41
            ]
        },
        "male_mage": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D9-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9D9-1F3FB-200D-2642",
                    "image": "1f9d9-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 37,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D9-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9D9-1F3FC-200D-2642",
                    "image": "1f9d9-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 38,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D9-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9D9-1F3FD-200D-2642",
                    "image": "1f9d9-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 39,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D9-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9D9-1F3FE-200D-2642",
                    "image": "1f9d9-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 40,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D9-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9D9-1F3FF-200D-2642",
                    "image": "1f9d9-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 41,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Male Mage",
            "b": "1F9D9-200D-2642-FE0F",
            "c": "1F9D9-200D-2642",
            "k": [
                44,
                36
            ],
            "o": 10
        },
        "cloud": {
            "a": "Cloud",
            "b": "2601-FE0F",
            "c": "2601",
            "j": [
                "weather",
                "sky"
            ],
            "k": [
                47,
                17
            ],
            "o": 1
        },
        "flag-nz": {
            "a": "New Zealand Flag",
            "b": "1F1F3-1F1FF",
            "k": [
                3,
                51
            ]
        },
        "partly_sunny": {
            "a": "Sun Behind Cloud",
            "b": "26C5",
            "j": [
                "weather",
                "nature",
                "cloudy",
                "morning",
                "fall",
                "spring"
            ],
            "k": [
                48,
                29
            ],
            "o": 5
        },
        "fairy": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DA-1F3FB",
                    "non_qualified": null,
                    "image": "1f9da-1f3fb.png",
                    "sheet_x": 45,
                    "sheet_y": 9,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DA-1F3FB-200D-2640-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9DA-1F3FC",
                    "non_qualified": null,
                    "image": "1f9da-1f3fc.png",
                    "sheet_x": 45,
                    "sheet_y": 10,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DA-1F3FC-200D-2640-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9DA-1F3FD",
                    "non_qualified": null,
                    "image": "1f9da-1f3fd.png",
                    "sheet_x": 45,
                    "sheet_y": 11,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DA-1F3FD-200D-2640-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9DA-1F3FE",
                    "non_qualified": null,
                    "image": "1f9da-1f3fe.png",
                    "sheet_x": 45,
                    "sheet_y": 12,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DA-1F3FE-200D-2640-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9DA-1F3FF",
                    "non_qualified": null,
                    "image": "1f9da-1f3ff.png",
                    "sheet_x": 45,
                    "sheet_y": 13,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DA-1F3FF-200D-2640-FE0F"
                }
            },
            "obsoleted_by": "1F9DA-200D-2640-FE0F",
            "a": "Fairy",
            "b": "1F9DA",
            "k": [
                45,
                8
            ],
            "o": 10
        },
        "u6e80": {
            "a": "Squared Cjk Unified Ideograph-6e80",
            "b": "1F235",
            "j": [
                "full",
                "chinese",
                "japanese",
                "red-square",
                "kanji"
            ],
            "k": [
                5,
                36
            ]
        },
        "black_small_square": {
            "a": "Black Small Square",
            "b": "25AA-FE0F",
            "c": "25AA",
            "j": [
                "shape",
                "icon"
            ],
            "k": [
                47,
                8
            ],
            "o": 1
        },
        "thunder_cloud_and_rain": {
            "a": "Thunder Cloud and Rain",
            "b": "26C8-FE0F",
            "c": "26C8",
            "k": [
                48,
                30
            ],
            "o": 5
        },
        "female_fairy": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DA-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9DA-1F3FB-200D-2640",
                    "image": "1f9da-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 49,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DA-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9DA-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9DA-1F3FC-200D-2640",
                    "image": "1f9da-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 50,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DA-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9DA-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9DA-1F3FD-200D-2640",
                    "image": "1f9da-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 51,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DA-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9DA-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9DA-1F3FE-200D-2640",
                    "image": "1f9da-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 0,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DA-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9DA-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9DA-1F3FF-200D-2640",
                    "image": "1f9da-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 1,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DA-1F3FF"
                }
            },
            "obsoletes": "1F9DA",
            "a": "Female Fairy",
            "b": "1F9DA-200D-2640-FE0F",
            "c": "1F9DA-200D-2640",
            "k": [
                44,
                48
            ],
            "o": 10
        },
        "flag-om": {
            "a": "Oman Flag",
            "b": "1F1F4-1F1F2",
            "k": [
                4,
                0
            ]
        },
        "white_small_square": {
            "a": "White Small Square",
            "b": "25AB-FE0F",
            "c": "25AB",
            "j": [
                "shape",
                "icon"
            ],
            "k": [
                47,
                9
            ],
            "o": 1
        },
        "flag-pa": {
            "a": "Panama Flag",
            "b": "1F1F5-1F1E6",
            "k": [
                4,
                1
            ]
        },
        "mostly_sunny": {
            "a": "Mostly Sunny",
            "b": "1F324-FE0F",
            "c": "1F324",
            "k": [
                6,
                26
            ],
            "n": [
                "sun_small_cloud"
            ],
            "o": 7
        },
        "male_fairy": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DA-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9DA-1F3FB-200D-2642",
                    "image": "1f9da-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 3,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9DA-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9DA-1F3FC-200D-2642",
                    "image": "1f9da-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 4,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9DA-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9DA-1F3FD-200D-2642",
                    "image": "1f9da-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 5,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9DA-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9DA-1F3FE-200D-2642",
                    "image": "1f9da-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 6,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9DA-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9DA-1F3FF-200D-2642",
                    "image": "1f9da-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 7,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Male Fairy",
            "b": "1F9DA-200D-2642-FE0F",
            "c": "1F9DA-200D-2642",
            "k": [
                45,
                2
            ],
            "o": 10
        },
        "barely_sunny": {
            "a": "Barely Sunny",
            "b": "1F325-FE0F",
            "c": "1F325",
            "k": [
                6,
                27
            ],
            "n": [
                "sun_behind_cloud"
            ],
            "o": 7
        },
        "white_medium_square": {
            "a": "White Medium Square",
            "b": "25FB-FE0F",
            "c": "25FB",
            "j": [
                "shape",
                "stone",
                "icon"
            ],
            "k": [
                47,
                12
            ],
            "o": 3
        },
        "flag-pe": {
            "a": "Peru Flag",
            "b": "1F1F5-1F1EA",
            "k": [
                4,
                2
            ]
        },
        "vampire": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DB-1F3FB",
                    "non_qualified": null,
                    "image": "1f9db-1f3fb.png",
                    "sheet_x": 45,
                    "sheet_y": 27,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DB-1F3FB-200D-2640-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9DB-1F3FC",
                    "non_qualified": null,
                    "image": "1f9db-1f3fc.png",
                    "sheet_x": 45,
                    "sheet_y": 28,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DB-1F3FC-200D-2640-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9DB-1F3FD",
                    "non_qualified": null,
                    "image": "1f9db-1f3fd.png",
                    "sheet_x": 45,
                    "sheet_y": 29,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DB-1F3FD-200D-2640-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9DB-1F3FE",
                    "non_qualified": null,
                    "image": "1f9db-1f3fe.png",
                    "sheet_x": 45,
                    "sheet_y": 30,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DB-1F3FE-200D-2640-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9DB-1F3FF",
                    "non_qualified": null,
                    "image": "1f9db-1f3ff.png",
                    "sheet_x": 45,
                    "sheet_y": 31,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DB-1F3FF-200D-2640-FE0F"
                }
            },
            "obsoleted_by": "1F9DB-200D-2640-FE0F",
            "a": "Vampire",
            "b": "1F9DB",
            "k": [
                45,
                26
            ],
            "o": 10
        },
        "female_vampire": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DB-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9DB-1F3FB-200D-2640",
                    "image": "1f9db-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 15,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DB-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9DB-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9DB-1F3FC-200D-2640",
                    "image": "1f9db-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 16,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DB-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9DB-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9DB-1F3FD-200D-2640",
                    "image": "1f9db-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 17,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DB-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9DB-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9DB-1F3FE-200D-2640",
                    "image": "1f9db-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 18,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DB-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9DB-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9DB-1F3FF-200D-2640",
                    "image": "1f9db-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 19,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DB-1F3FF"
                }
            },
            "obsoletes": "1F9DB",
            "a": "Female Vampire",
            "b": "1F9DB-200D-2640-FE0F",
            "c": "1F9DB-200D-2640",
            "k": [
                45,
                14
            ],
            "o": 10
        },
        "partly_sunny_rain": {
            "a": "Partly Sunny Rain",
            "b": "1F326-FE0F",
            "c": "1F326",
            "k": [
                6,
                28
            ],
            "n": [
                "sun_behind_rain_cloud"
            ],
            "o": 7
        },
        "flag-pf": {
            "a": "French Polynesia Flag",
            "b": "1F1F5-1F1EB",
            "k": [
                4,
                3
            ]
        },
        "black_medium_square": {
            "a": "Black Medium Square",
            "b": "25FC-FE0F",
            "c": "25FC",
            "j": [
                "shape",
                "button",
                "icon"
            ],
            "k": [
                47,
                13
            ],
            "o": 3
        },
        "white_medium_small_square": {
            "a": "White Medium Small Square",
            "b": "25FD",
            "j": [
                "shape",
                "stone",
                "icon",
                "button"
            ],
            "k": [
                47,
                14
            ],
            "o": 3
        },
        "rain_cloud": {
            "a": "Rain Cloud",
            "b": "1F327-FE0F",
            "c": "1F327",
            "k": [
                6,
                29
            ],
            "o": 7
        },
        "flag-pg": {
            "a": "Papua New Guinea Flag",
            "b": "1F1F5-1F1EC",
            "k": [
                4,
                4
            ]
        },
        "male_vampire": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DB-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9DB-1F3FB-200D-2642",
                    "image": "1f9db-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 21,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9DB-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9DB-1F3FC-200D-2642",
                    "image": "1f9db-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 22,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9DB-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9DB-1F3FD-200D-2642",
                    "image": "1f9db-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 23,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9DB-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9DB-1F3FE-200D-2642",
                    "image": "1f9db-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 24,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9DB-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9DB-1F3FF-200D-2642",
                    "image": "1f9db-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 25,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Male Vampire",
            "b": "1F9DB-200D-2642-FE0F",
            "c": "1F9DB-200D-2642",
            "k": [
                45,
                20
            ],
            "o": 10
        },
        "flag-ph": {
            "a": "Philippines Flag",
            "b": "1F1F5-1F1ED",
            "k": [
                4,
                5
            ]
        },
        "merperson": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DC-1F3FB",
                    "non_qualified": null,
                    "image": "1f9dc-1f3fb.png",
                    "sheet_x": 45,
                    "sheet_y": 45,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DC-1F3FB-200D-2642-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9DC-1F3FC",
                    "non_qualified": null,
                    "image": "1f9dc-1f3fc.png",
                    "sheet_x": 45,
                    "sheet_y": 46,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DC-1F3FC-200D-2642-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9DC-1F3FD",
                    "non_qualified": null,
                    "image": "1f9dc-1f3fd.png",
                    "sheet_x": 45,
                    "sheet_y": 47,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DC-1F3FD-200D-2642-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9DC-1F3FE",
                    "non_qualified": null,
                    "image": "1f9dc-1f3fe.png",
                    "sheet_x": 45,
                    "sheet_y": 48,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DC-1F3FE-200D-2642-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9DC-1F3FF",
                    "non_qualified": null,
                    "image": "1f9dc-1f3ff.png",
                    "sheet_x": 45,
                    "sheet_y": 49,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DC-1F3FF-200D-2642-FE0F"
                }
            },
            "obsoleted_by": "1F9DC-200D-2642-FE0F",
            "a": "Merperson",
            "b": "1F9DC",
            "k": [
                45,
                44
            ],
            "o": 10
        },
        "black_medium_small_square": {
            "a": "Black Medium Small Square",
            "b": "25FE",
            "j": [
                "icon",
                "shape",
                "button"
            ],
            "k": [
                47,
                15
            ],
            "o": 3
        },
        "snow_cloud": {
            "a": "Snow Cloud",
            "b": "1F328-FE0F",
            "c": "1F328",
            "k": [
                6,
                30
            ],
            "o": 7
        },
        "lightning": {
            "a": "Lightning",
            "b": "1F329-FE0F",
            "c": "1F329",
            "k": [
                6,
                31
            ],
            "n": [
                "lightning_cloud"
            ],
            "o": 7
        },
        "black_large_square": {
            "a": "Black Large Square",
            "b": "2B1B",
            "j": [
                "shape",
                "icon",
                "button"
            ],
            "k": [
                50,
                20
            ],
            "o": 5
        },
        "mermaid": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DC-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9DC-1F3FB-200D-2640",
                    "image": "1f9dc-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 33,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9DC-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9DC-1F3FC-200D-2640",
                    "image": "1f9dc-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 34,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9DC-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9DC-1F3FD-200D-2640",
                    "image": "1f9dc-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 35,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9DC-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9DC-1F3FE-200D-2640",
                    "image": "1f9dc-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 36,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9DC-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9DC-1F3FF-200D-2640",
                    "image": "1f9dc-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 37,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Mermaid",
            "b": "1F9DC-200D-2640-FE0F",
            "c": "1F9DC-200D-2640",
            "j": [
                "woman",
                "female",
                "merwoman",
                "ariel"
            ],
            "k": [
                45,
                32
            ],
            "o": 10
        },
        "flag-pk": {
            "a": "Pakistan Flag",
            "b": "1F1F5-1F1F0",
            "k": [
                4,
                6
            ]
        },
        "merman": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DC-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9DC-1F3FB-200D-2642",
                    "image": "1f9dc-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 39,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DC-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9DC-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9DC-1F3FC-200D-2642",
                    "image": "1f9dc-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 40,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DC-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9DC-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9DC-1F3FD-200D-2642",
                    "image": "1f9dc-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 41,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DC-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9DC-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9DC-1F3FE-200D-2642",
                    "image": "1f9dc-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 42,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DC-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9DC-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9DC-1F3FF-200D-2642",
                    "image": "1f9dc-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 43,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DC-1F3FF"
                }
            },
            "obsoletes": "1F9DC",
            "a": "Merman",
            "b": "1F9DC-200D-2642-FE0F",
            "c": "1F9DC-200D-2642",
            "j": [
                "man",
                "male",
                "triton"
            ],
            "k": [
                45,
                38
            ],
            "o": 10
        },
        "white_large_square": {
            "a": "White Large Square",
            "b": "2B1C",
            "j": [
                "shape",
                "icon",
                "stone",
                "button"
            ],
            "k": [
                50,
                21
            ],
            "o": 5
        },
        "tornado": {
            "a": "Tornado",
            "b": "1F32A-FE0F",
            "c": "1F32A",
            "j": [
                "weather",
                "cyclone",
                "twister"
            ],
            "k": [
                6,
                32
            ],
            "n": [
                "tornado_cloud"
            ],
            "o": 7
        },
        "flag-pl": {
            "a": "Poland Flag",
            "b": "1F1F5-1F1F1",
            "k": [
                4,
                7
            ]
        },
        "elf": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DD-1F3FB",
                    "non_qualified": null,
                    "image": "1f9dd-1f3fb.png",
                    "sheet_x": 46,
                    "sheet_y": 11,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DD-1F3FB-200D-2642-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9DD-1F3FC",
                    "non_qualified": null,
                    "image": "1f9dd-1f3fc.png",
                    "sheet_x": 46,
                    "sheet_y": 12,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DD-1F3FC-200D-2642-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9DD-1F3FD",
                    "non_qualified": null,
                    "image": "1f9dd-1f3fd.png",
                    "sheet_x": 46,
                    "sheet_y": 13,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DD-1F3FD-200D-2642-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9DD-1F3FE",
                    "non_qualified": null,
                    "image": "1f9dd-1f3fe.png",
                    "sheet_x": 46,
                    "sheet_y": 14,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DD-1F3FE-200D-2642-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9DD-1F3FF",
                    "non_qualified": null,
                    "image": "1f9dd-1f3ff.png",
                    "sheet_x": 46,
                    "sheet_y": 15,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9DD-1F3FF-200D-2642-FE0F"
                }
            },
            "obsoleted_by": "1F9DD-200D-2642-FE0F",
            "a": "Elf",
            "b": "1F9DD",
            "k": [
                46,
                10
            ],
            "o": 10
        },
        "fog": {
            "a": "Fog",
            "b": "1F32B-FE0F",
            "c": "1F32B",
            "j": [
                "weather"
            ],
            "k": [
                6,
                33
            ],
            "o": 7
        },
        "large_orange_diamond": {
            "a": "Large Orange Diamond",
            "b": "1F536",
            "j": [
                "shape",
                "jewel",
                "gem"
            ],
            "k": [
                28,
                4
            ]
        },
        "flag-pm": {
            "a": "St. Pierre & Miquelon Flag",
            "b": "1F1F5-1F1F2",
            "k": [
                4,
                8
            ]
        },
        "flag-pn": {
            "a": "Pitcairn Islands Flag",
            "b": "1F1F5-1F1F3",
            "k": [
                4,
                9
            ]
        },
        "wind_blowing_face": {
            "a": "Wind Blowing Face",
            "b": "1F32C-FE0F",
            "c": "1F32C",
            "k": [
                6,
                34
            ],
            "o": 7
        },
        "female_elf": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DD-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9DD-1F3FB-200D-2640",
                    "image": "1f9dd-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 45,
                    "sheet_y": 51,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9DD-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9DD-1F3FC-200D-2640",
                    "image": "1f9dd-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 0,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9DD-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9DD-1F3FD-200D-2640",
                    "image": "1f9dd-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 1,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9DD-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9DD-1F3FE-200D-2640",
                    "image": "1f9dd-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 2,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9DD-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9DD-1F3FF-200D-2640",
                    "image": "1f9dd-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 3,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Female Elf",
            "b": "1F9DD-200D-2640-FE0F",
            "c": "1F9DD-200D-2640",
            "k": [
                45,
                50
            ],
            "o": 10
        },
        "large_blue_diamond": {
            "a": "Large Blue Diamond",
            "b": "1F537",
            "j": [
                "shape",
                "jewel",
                "gem"
            ],
            "k": [
                28,
                5
            ]
        },
        "male_elf": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9DD-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9DD-1F3FB-200D-2642",
                    "image": "1f9dd-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 5,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DD-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9DD-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9DD-1F3FC-200D-2642",
                    "image": "1f9dd-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 6,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DD-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9DD-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9DD-1F3FD-200D-2642",
                    "image": "1f9dd-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 7,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DD-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9DD-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9DD-1F3FE-200D-2642",
                    "image": "1f9dd-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 8,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DD-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9DD-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9DD-1F3FF-200D-2642",
                    "image": "1f9dd-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 46,
                    "sheet_y": 9,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9DD-1F3FF"
                }
            },
            "obsoletes": "1F9DD",
            "a": "Male Elf",
            "b": "1F9DD-200D-2642-FE0F",
            "c": "1F9DD-200D-2642",
            "k": [
                46,
                4
            ],
            "o": 10
        },
        "small_orange_diamond": {
            "a": "Small Orange Diamond",
            "b": "1F538",
            "j": [
                "shape",
                "jewel",
                "gem"
            ],
            "k": [
                28,
                6
            ]
        },
        "flag-pr": {
            "a": "Puerto Rico Flag",
            "b": "1F1F5-1F1F7",
            "k": [
                4,
                10
            ]
        },
        "cyclone": {
            "a": "Cyclone",
            "b": "1F300",
            "j": [
                "weather",
                "swirl",
                "blue",
                "cloud",
                "vortex",
                "spiral",
                "whirlpool",
                "spin",
                "tornado",
                "hurricane",
                "typhoon"
            ],
            "k": [
                5,
                44
            ]
        },
        "rainbow": {
            "a": "Rainbow",
            "b": "1F308",
            "j": [
                "nature",
                "happy",
                "unicorn_face",
                "photo",
                "sky",
                "spring"
            ],
            "k": [
                6,
                0
            ]
        },
        "small_blue_diamond": {
            "a": "Small Blue Diamond",
            "b": "1F539",
            "j": [
                "shape",
                "jewel",
                "gem"
            ],
            "k": [
                28,
                7
            ]
        },
        "genie": {
            "obsoleted_by": "1F9DE-200D-2642-FE0F",
            "a": "Genie",
            "b": "1F9DE",
            "k": [
                46,
                18
            ],
            "o": 10
        },
        "flag-ps": {
            "a": "Palestinian Territories Flag",
            "b": "1F1F5-1F1F8",
            "k": [
                4,
                11
            ]
        },
        "small_red_triangle": {
            "a": "Up-Pointing Red Triangle",
            "b": "1F53A",
            "j": [
                "shape",
                "direction",
                "up",
                "top"
            ],
            "k": [
                28,
                8
            ]
        },
        "closed_umbrella": {
            "a": "Closed Umbrella",
            "b": "1F302",
            "j": [
                "weather",
                "rain",
                "drizzle"
            ],
            "k": [
                5,
                46
            ]
        },
        "female_genie": {
            "a": "Female Genie",
            "b": "1F9DE-200D-2640-FE0F",
            "c": "1F9DE-200D-2640",
            "k": [
                46,
                16
            ],
            "o": 10
        },
        "flag-pt": {
            "a": "Portugal Flag",
            "b": "1F1F5-1F1F9",
            "k": [
                4,
                12
            ]
        },
        "flag-pw": {
            "a": "Palau Flag",
            "b": "1F1F5-1F1FC",
            "k": [
                4,
                13
            ]
        },
        "small_red_triangle_down": {
            "a": "Down-Pointing Red Triangle",
            "b": "1F53B",
            "j": [
                "shape",
                "direction",
                "bottom"
            ],
            "k": [
                28,
                9
            ]
        },
        "umbrella": {
            "a": "Umbrella",
            "b": "2602-FE0F",
            "c": "2602",
            "j": [
                "rainy",
                "weather",
                "spring"
            ],
            "k": [
                47,
                18
            ],
            "o": 1
        },
        "male_genie": {
            "obsoletes": "1F9DE",
            "a": "Male Genie",
            "b": "1F9DE-200D-2642-FE0F",
            "c": "1F9DE-200D-2642",
            "k": [
                46,
                17
            ],
            "o": 10
        },
        "zombie": {
            "obsoleted_by": "1F9DF-200D-2642-FE0F",
            "a": "Zombie",
            "b": "1F9DF",
            "k": [
                46,
                21
            ],
            "o": 10
        },
        "flag-py": {
            "a": "Paraguay Flag",
            "b": "1F1F5-1F1FE",
            "k": [
                4,
                14
            ]
        },
        "diamond_shape_with_a_dot_inside": {
            "a": "Diamond Shape with a Dot Inside",
            "b": "1F4A0",
            "j": [
                "jewel",
                "blue",
                "gem",
                "crystal",
                "fancy"
            ],
            "k": [
                25,
                6
            ]
        },
        "umbrella_with_rain_drops": {
            "a": "Umbrella with Rain Drops",
            "b": "2614",
            "k": [
                47,
                23
            ],
            "o": 4
        },
        "radio_button": {
            "a": "Radio Button",
            "b": "1F518",
            "j": [
                "input",
                "old",
                "music",
                "circle"
            ],
            "k": [
                27,
                26
            ]
        },
        "female_zombie": {
            "a": "Female Zombie",
            "b": "1F9DF-200D-2640-FE0F",
            "c": "1F9DF-200D-2640",
            "k": [
                46,
                19
            ],
            "o": 10
        },
        "flag-qa": {
            "a": "Qatar Flag",
            "b": "1F1F6-1F1E6",
            "k": [
                4,
                15
            ]
        },
        "umbrella_on_ground": {
            "a": "Umbrella on Ground",
            "b": "26F1-FE0F",
            "c": "26F1",
            "k": [
                48,
                39
            ],
            "o": 5
        },
        "black_square_button": {
            "a": "Black Square Button",
            "b": "1F532",
            "j": [
                "shape",
                "input",
                "frame"
            ],
            "k": [
                28,
                0
            ]
        },
        "zap": {
            "a": "High Voltage Sign",
            "b": "26A1",
            "j": [
                "thunder",
                "weather",
                "lightning bolt",
                "fast"
            ],
            "k": [
                48,
                21
            ],
            "o": 4
        },
        "male_zombie": {
            "obsoletes": "1F9DF",
            "a": "Male Zombie",
            "b": "1F9DF-200D-2642-FE0F",
            "c": "1F9DF-200D-2642",
            "k": [
                46,
                20
            ],
            "o": 10
        },
        "flag-re": {
            "a": "Réunion Flag",
            "b": "1F1F7-1F1EA",
            "k": [
                4,
                16
            ]
        },
        "flag-ro": {
            "a": "Romania Flag",
            "b": "1F1F7-1F1F4",
            "k": [
                4,
                17
            ]
        },
        "snowflake": {
            "a": "Snowflake",
            "b": "2744-FE0F",
            "c": "2744",
            "j": [
                "winter",
                "season",
                "cold",
                "weather",
                "christmas",
                "xmas"
            ],
            "k": [
                49,
                51
            ],
            "o": 1
        },
        "white_square_button": {
            "a": "White Square Button",
            "b": "1F533",
            "j": [
                "shape",
                "input"
            ],
            "k": [
                28,
                1
            ]
        },
        "person_frowning": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64D-1F3FB",
                    "non_qualified": null,
                    "image": "1f64d-1f3fb.png",
                    "sheet_x": 33,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F64D-1F3FC",
                    "non_qualified": null,
                    "image": "1f64d-1f3fc.png",
                    "sheet_x": 33,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F64D-1F3FD",
                    "non_qualified": null,
                    "image": "1f64d-1f3fd.png",
                    "sheet_x": 33,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F64D-1F3FE",
                    "non_qualified": null,
                    "image": "1f64d-1f3fe.png",
                    "sheet_x": 33,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F64D-1F3FF",
                    "non_qualified": null,
                    "image": "1f64d-1f3ff.png",
                    "sheet_x": 33,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F64D-200D-2640-FE0F",
            "a": "Person Frowning",
            "b": "1F64D",
            "k": [
                33,
                30
            ]
        },
        "flag-rs": {
            "a": "Serbia Flag",
            "b": "1F1F7-1F1F8",
            "k": [
                4,
                18
            ]
        },
        "man-frowning": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64D-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F64D-1F3FB-200D-2642",
                    "image": "1f64d-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F64D-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F64D-1F3FC-200D-2642",
                    "image": "1f64d-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F64D-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F64D-1F3FD-200D-2642",
                    "image": "1f64d-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F64D-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F64D-1F3FE-200D-2642",
                    "image": "1f64d-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F64D-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F64D-1F3FF-200D-2642",
                    "image": "1f64d-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Frowning",
            "b": "1F64D-200D-2642-FE0F",
            "c": "1F64D-200D-2642",
            "k": [
                33,
                24
            ]
        },
        "white_circle": {
            "a": "Medium White Circle",
            "b": "26AA",
            "j": [
                "shape",
                "round"
            ],
            "k": [
                48,
                22
            ],
            "o": 4
        },
        "snowman": {
            "a": "Snowman",
            "b": "2603-FE0F",
            "c": "2603",
            "j": [
                "winter",
                "season",
                "cold",
                "weather",
                "christmas",
                "xmas",
                "frozen",
                "without_snow"
            ],
            "k": [
                47,
                19
            ],
            "o": 1
        },
        "snowman_without_snow": {
            "a": "Snowman Without Snow",
            "b": "26C4",
            "k": [
                48,
                28
            ],
            "o": 5
        },
        "ru": {
            "a": "Russia Flag",
            "b": "1F1F7-1F1FA",
            "j": [
                "russian",
                "federation",
                "flag",
                "nation",
                "country",
                "banner"
            ],
            "k": [
                4,
                19
            ],
            "n": [
                "flag-ru"
            ]
        },
        "black_circle": {
            "a": "Medium Black Circle",
            "b": "26AB",
            "j": [
                "shape",
                "button",
                "round"
            ],
            "k": [
                48,
                23
            ],
            "o": 4
        },
        "woman-frowning": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64D-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F64D-1F3FB-200D-2640",
                    "image": "1f64d-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F64D-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F64D-1F3FC-200D-2640",
                    "image": "1f64d-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F64D-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F64D-1F3FD-200D-2640",
                    "image": "1f64d-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F64D-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F64D-1F3FE-200D-2640",
                    "image": "1f64d-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F64D-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F64D-1F3FF-200D-2640",
                    "image": "1f64d-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F64D",
            "a": "Woman Frowning",
            "b": "1F64D-200D-2640-FE0F",
            "c": "1F64D-200D-2640",
            "k": [
                33,
                18
            ]
        },
        "flag-rw": {
            "a": "Rwanda Flag",
            "b": "1F1F7-1F1FC",
            "k": [
                4,
                20
            ]
        },
        "comet": {
            "a": "Comet",
            "b": "2604-FE0F",
            "c": "2604",
            "j": [
                "space"
            ],
            "k": [
                47,
                20
            ],
            "o": 1
        },
        "person_with_pouting_face": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64E-1F3FB",
                    "non_qualified": null,
                    "image": "1f64e-1f3fb.png",
                    "sheet_x": 33,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F64E-1F3FC",
                    "non_qualified": null,
                    "image": "1f64e-1f3fc.png",
                    "sheet_x": 33,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F64E-1F3FD",
                    "non_qualified": null,
                    "image": "1f64e-1f3fd.png",
                    "sheet_x": 33,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F64E-1F3FE",
                    "non_qualified": null,
                    "image": "1f64e-1f3fe.png",
                    "sheet_x": 34,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F64E-1F3FF",
                    "non_qualified": null,
                    "image": "1f64e-1f3ff.png",
                    "sheet_x": 34,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F64E-200D-2640-FE0F",
            "a": "Person with Pouting Face",
            "b": "1F64E",
            "k": [
                33,
                48
            ]
        },
        "red_circle": {
            "a": "Large Red Circle",
            "b": "1F534",
            "j": [
                "shape",
                "error",
                "danger"
            ],
            "k": [
                28,
                2
            ]
        },
        "large_blue_circle": {
            "a": "Large Blue Circle",
            "b": "1F535",
            "j": [
                "shape",
                "icon",
                "button"
            ],
            "k": [
                28,
                3
            ]
        },
        "man-pouting": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64E-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F64E-1F3FB-200D-2642",
                    "image": "1f64e-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F64E-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F64E-1F3FC-200D-2642",
                    "image": "1f64e-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F64E-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F64E-1F3FD-200D-2642",
                    "image": "1f64e-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F64E-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F64E-1F3FE-200D-2642",
                    "image": "1f64e-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F64E-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F64E-1F3FF-200D-2642",
                    "image": "1f64e-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Pouting",
            "b": "1F64E-200D-2642-FE0F",
            "c": "1F64E-200D-2642",
            "k": [
                33,
                42
            ]
        },
        "flag-sa": {
            "a": "Saudi Arabia Flag",
            "b": "1F1F8-1F1E6",
            "k": [
                4,
                21
            ]
        },
        "fire": {
            "a": "Fire",
            "b": "1F525",
            "j": [
                "hot",
                "cook",
                "flame"
            ],
            "k": [
                27,
                39
            ]
        },
        "woman-pouting": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64E-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F64E-1F3FB-200D-2640",
                    "image": "1f64e-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F64E-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F64E-1F3FC-200D-2640",
                    "image": "1f64e-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F64E-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F64E-1F3FD-200D-2640",
                    "image": "1f64e-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F64E-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F64E-1F3FE-200D-2640",
                    "image": "1f64e-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F64E-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F64E-1F3FF-200D-2640",
                    "image": "1f64e-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F64E",
            "a": "Woman Pouting",
            "b": "1F64E-200D-2640-FE0F",
            "c": "1F64E-200D-2640",
            "k": [
                33,
                36
            ]
        },
        "flag-sb": {
            "a": "Solomon Islands Flag",
            "b": "1F1F8-1F1E7",
            "k": [
                4,
                22
            ]
        },
        "droplet": {
            "a": "Droplet",
            "b": "1F4A7",
            "j": [
                "water",
                "drip",
                "faucet",
                "spring"
            ],
            "k": [
                25,
                13
            ]
        },
        "no_good": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F645-1F3FB",
                    "non_qualified": null,
                    "image": "1f645-1f3fb.png",
                    "sheet_x": 32,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F645-1F3FC",
                    "non_qualified": null,
                    "image": "1f645-1f3fc.png",
                    "sheet_x": 32,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F645-1F3FD",
                    "non_qualified": null,
                    "image": "1f645-1f3fd.png",
                    "sheet_x": 32,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F645-1F3FE",
                    "non_qualified": null,
                    "image": "1f645-1f3fe.png",
                    "sheet_x": 32,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F645-1F3FF",
                    "non_qualified": null,
                    "image": "1f645-1f3ff.png",
                    "sheet_x": 32,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F645-200D-2640-FE0F",
            "a": "Face with No Good Gesture",
            "b": "1F645",
            "k": [
                32,
                1
            ]
        },
        "flag-sc": {
            "a": "Seychelles Flag",
            "b": "1F1F8-1F1E8",
            "k": [
                4,
                23
            ]
        },
        "ocean": {
            "a": "Water Wave",
            "b": "1F30A",
            "j": [
                "sea",
                "water",
                "wave",
                "nature",
                "tsunami",
                "disaster"
            ],
            "k": [
                6,
                2
            ]
        },
        "man-gesturing-no": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F645-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F645-1F3FB-200D-2642",
                    "image": "1f645-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F645-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F645-1F3FC-200D-2642",
                    "image": "1f645-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F645-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F645-1F3FD-200D-2642",
                    "image": "1f645-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F645-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F645-1F3FE-200D-2642",
                    "image": "1f645-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F645-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F645-1F3FF-200D-2642",
                    "image": "1f645-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Gesturing No",
            "b": "1F645-200D-2642-FE0F",
            "c": "1F645-200D-2642",
            "k": [
                31,
                47
            ]
        },
        "flag-sd": {
            "a": "Sudan Flag",
            "b": "1F1F8-1F1E9",
            "k": [
                4,
                24
            ]
        },
        "woman-gesturing-no": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F645-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F645-1F3FB-200D-2640",
                    "image": "1f645-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F645-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F645-1F3FC-200D-2640",
                    "image": "1f645-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F645-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F645-1F3FD-200D-2640",
                    "image": "1f645-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F645-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F645-1F3FE-200D-2640",
                    "image": "1f645-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F645-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F645-1F3FF-200D-2640",
                    "image": "1f645-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 31,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F645",
            "a": "Woman Gesturing No",
            "b": "1F645-200D-2640-FE0F",
            "c": "1F645-200D-2640",
            "k": [
                31,
                41
            ]
        },
        "flag-se": {
            "a": "Sweden Flag",
            "b": "1F1F8-1F1EA",
            "k": [
                4,
                25
            ]
        },
        "flag-sg": {
            "a": "Singapore Flag",
            "b": "1F1F8-1F1EC",
            "k": [
                4,
                26
            ]
        },
        "ok_woman": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F646-1F3FB",
                    "non_qualified": null,
                    "image": "1f646-1f3fb.png",
                    "sheet_x": 32,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F646-1F3FC",
                    "non_qualified": null,
                    "image": "1f646-1f3fc.png",
                    "sheet_x": 32,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F646-1F3FD",
                    "non_qualified": null,
                    "image": "1f646-1f3fd.png",
                    "sheet_x": 32,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F646-1F3FE",
                    "non_qualified": null,
                    "image": "1f646-1f3fe.png",
                    "sheet_x": 32,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F646-1F3FF",
                    "non_qualified": null,
                    "image": "1f646-1f3ff.png",
                    "sheet_x": 32,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F646-200D-2640-FE0F",
            "a": "Face with Ok Gesture",
            "b": "1F646",
            "j": [
                "women",
                "girl",
                "female",
                "pink",
                "human",
                "woman"
            ],
            "k": [
                32,
                19
            ]
        },
        "flag-sh": {
            "a": "St. Helena Flag",
            "b": "1F1F8-1F1ED",
            "k": [
                4,
                27
            ]
        },
        "man-gesturing-ok": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F646-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F646-1F3FB-200D-2642",
                    "image": "1f646-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F646-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F646-1F3FC-200D-2642",
                    "image": "1f646-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F646-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F646-1F3FD-200D-2642",
                    "image": "1f646-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F646-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F646-1F3FE-200D-2642",
                    "image": "1f646-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F646-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F646-1F3FF-200D-2642",
                    "image": "1f646-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Gesturing Ok",
            "b": "1F646-200D-2642-FE0F",
            "c": "1F646-200D-2642",
            "k": [
                32,
                13
            ]
        },
        "flag-si": {
            "a": "Slovenia Flag",
            "b": "1F1F8-1F1EE",
            "k": [
                4,
                28
            ]
        },
        "woman-gesturing-ok": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F646-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F646-1F3FB-200D-2640",
                    "image": "1f646-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F646-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F646-1F3FC-200D-2640",
                    "image": "1f646-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F646-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F646-1F3FD-200D-2640",
                    "image": "1f646-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F646-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F646-1F3FE-200D-2640",
                    "image": "1f646-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F646-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F646-1F3FF-200D-2640",
                    "image": "1f646-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F646",
            "a": "Woman Gesturing Ok",
            "b": "1F646-200D-2640-FE0F",
            "c": "1F646-200D-2640",
            "k": [
                32,
                7
            ]
        },
        "information_desk_person": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F481-1F3FB",
                    "non_qualified": null,
                    "image": "1f481-1f3fb.png",
                    "sheet_x": 23,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F481-1F3FC",
                    "non_qualified": null,
                    "image": "1f481-1f3fc.png",
                    "sheet_x": 23,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F481-1F3FD",
                    "non_qualified": null,
                    "image": "1f481-1f3fd.png",
                    "sheet_x": 23,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F481-1F3FE",
                    "non_qualified": null,
                    "image": "1f481-1f3fe.png",
                    "sheet_x": 23,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F481-1F3FF",
                    "non_qualified": null,
                    "image": "1f481-1f3ff.png",
                    "sheet_x": 23,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F481-200D-2640-FE0F",
            "a": "Information Desk Person",
            "b": "1F481",
            "k": [
                23,
                13
            ]
        },
        "flag-sj": {
            "a": "Svalbard & Jan Mayen Flag",
            "b": "1F1F8-1F1EF",
            "k": [
                4,
                29
            ]
        },
        "man-tipping-hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F481-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F481-1F3FB-200D-2642",
                    "image": "1f481-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F481-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F481-1F3FC-200D-2642",
                    "image": "1f481-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F481-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F481-1F3FD-200D-2642",
                    "image": "1f481-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F481-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F481-1F3FE-200D-2642",
                    "image": "1f481-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F481-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F481-1F3FF-200D-2642",
                    "image": "1f481-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Tipping Hand",
            "b": "1F481-200D-2642-FE0F",
            "c": "1F481-200D-2642",
            "k": [
                23,
                7
            ]
        },
        "flag-sk": {
            "a": "Slovakia Flag",
            "b": "1F1F8-1F1F0",
            "k": [
                4,
                30
            ]
        },
        "flag-sl": {
            "a": "Sierra Leone Flag",
            "b": "1F1F8-1F1F1",
            "k": [
                4,
                31
            ]
        },
        "woman-tipping-hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F481-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F481-1F3FB-200D-2640",
                    "image": "1f481-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F481-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F481-1F3FC-200D-2640",
                    "image": "1f481-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F481-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F481-1F3FD-200D-2640",
                    "image": "1f481-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F481-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F481-1F3FE-200D-2640",
                    "image": "1f481-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F481-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F481-1F3FF-200D-2640",
                    "image": "1f481-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F481",
            "a": "Woman Tipping Hand",
            "b": "1F481-200D-2640-FE0F",
            "c": "1F481-200D-2640",
            "k": [
                23,
                1
            ]
        },
        "flag-sm": {
            "a": "San Marino Flag",
            "b": "1F1F8-1F1F2",
            "k": [
                4,
                32
            ]
        },
        "raising_hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64B-1F3FB",
                    "non_qualified": null,
                    "image": "1f64b-1f3fb.png",
                    "sheet_x": 33,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F64B-1F3FC",
                    "non_qualified": null,
                    "image": "1f64b-1f3fc.png",
                    "sheet_x": 33,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F64B-1F3FD",
                    "non_qualified": null,
                    "image": "1f64b-1f3fd.png",
                    "sheet_x": 33,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F64B-1F3FE",
                    "non_qualified": null,
                    "image": "1f64b-1f3fe.png",
                    "sheet_x": 33,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F64B-1F3FF",
                    "non_qualified": null,
                    "image": "1f64b-1f3ff.png",
                    "sheet_x": 33,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F64B-200D-2640-FE0F",
            "a": "Happy Person Raising One Hand",
            "b": "1F64B",
            "k": [
                33,
                6
            ]
        },
        "flag-sn": {
            "a": "Senegal Flag",
            "b": "1F1F8-1F1F3",
            "k": [
                4,
                33
            ]
        },
        "man-raising-hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64B-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F64B-1F3FB-200D-2642",
                    "image": "1f64b-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F64B-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F64B-1F3FC-200D-2642",
                    "image": "1f64b-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F64B-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F64B-1F3FD-200D-2642",
                    "image": "1f64b-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F64B-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F64B-1F3FE-200D-2642",
                    "image": "1f64b-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F64B-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F64B-1F3FF-200D-2642",
                    "image": "1f64b-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 33,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Raising Hand",
            "b": "1F64B-200D-2642-FE0F",
            "c": "1F64B-200D-2642",
            "k": [
                33,
                0
            ]
        },
        "flag-so": {
            "a": "Somalia Flag",
            "b": "1F1F8-1F1F4",
            "k": [
                4,
                34
            ]
        },
        "woman-raising-hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64B-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F64B-1F3FB-200D-2640",
                    "image": "1f64b-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F64B-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F64B-1F3FC-200D-2640",
                    "image": "1f64b-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F64B-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F64B-1F3FD-200D-2640",
                    "image": "1f64b-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F64B-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F64B-1F3FE-200D-2640",
                    "image": "1f64b-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F64B-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F64B-1F3FF-200D-2640",
                    "image": "1f64b-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F64B",
            "a": "Woman Raising Hand",
            "b": "1F64B-200D-2640-FE0F",
            "c": "1F64B-200D-2640",
            "k": [
                32,
                46
            ]
        },
        "flag-sr": {
            "a": "Suriname Flag",
            "b": "1F1F8-1F1F7",
            "k": [
                4,
                35
            ]
        },
        "bow": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F647-1F3FB",
                    "non_qualified": null,
                    "image": "1f647-1f3fb.png",
                    "sheet_x": 32,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F647-1F3FC",
                    "non_qualified": null,
                    "image": "1f647-1f3fc.png",
                    "sheet_x": 32,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F647-1F3FD",
                    "non_qualified": null,
                    "image": "1f647-1f3fd.png",
                    "sheet_x": 32,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F647-1F3FE",
                    "non_qualified": null,
                    "image": "1f647-1f3fe.png",
                    "sheet_x": 32,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F647-1F3FF",
                    "non_qualified": null,
                    "image": "1f647-1f3ff.png",
                    "sheet_x": 32,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F647-200D-2642-FE0F",
            "a": "Person Bowing Deeply",
            "b": "1F647",
            "k": [
                32,
                37
            ]
        },
        "man-bowing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F647-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F647-1F3FB-200D-2642",
                    "image": "1f647-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F647-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F647-1F3FC-200D-2642",
                    "image": "1f647-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F647-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F647-1F3FD-200D-2642",
                    "image": "1f647-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F647-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F647-1F3FE-200D-2642",
                    "image": "1f647-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F647-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F647-1F3FF-200D-2642",
                    "image": "1f647-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F647",
            "a": "Man Bowing",
            "b": "1F647-200D-2642-FE0F",
            "c": "1F647-200D-2642",
            "k": [
                32,
                31
            ]
        },
        "flag-ss": {
            "a": "South Sudan Flag",
            "b": "1F1F8-1F1F8",
            "k": [
                4,
                36
            ]
        },
        "woman-bowing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F647-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F647-1F3FB-200D-2640",
                    "image": "1f647-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F647-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F647-1F3FC-200D-2640",
                    "image": "1f647-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F647-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F647-1F3FD-200D-2640",
                    "image": "1f647-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F647-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F647-1F3FE-200D-2640",
                    "image": "1f647-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F647-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F647-1F3FF-200D-2640",
                    "image": "1f647-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 32,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Bowing",
            "b": "1F647-200D-2640-FE0F",
            "c": "1F647-200D-2640",
            "k": [
                32,
                25
            ]
        },
        "flag-st": {
            "a": "São Tomé & Príncipe Flag",
            "b": "1F1F8-1F1F9",
            "k": [
                4,
                37
            ]
        },
        "face_palm": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F926-1F3FB",
                    "non_qualified": null,
                    "image": "1f926-1f3fb.png",
                    "sheet_x": 38,
                    "sheet_y": 42,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F926-1F3FC",
                    "non_qualified": null,
                    "image": "1f926-1f3fc.png",
                    "sheet_x": 38,
                    "sheet_y": 43,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F926-1F3FD",
                    "non_qualified": null,
                    "image": "1f926-1f3fd.png",
                    "sheet_x": 38,
                    "sheet_y": 44,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F926-1F3FE",
                    "non_qualified": null,
                    "image": "1f926-1f3fe.png",
                    "sheet_x": 38,
                    "sheet_y": 45,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F926-1F3FF",
                    "non_qualified": null,
                    "image": "1f926-1f3ff.png",
                    "sheet_x": 38,
                    "sheet_y": 46,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Face Palm",
            "b": "1F926",
            "k": [
                38,
                41
            ],
            "o": 9
        },
        "flag-sv": {
            "a": "El Salvador Flag",
            "b": "1F1F8-1F1FB",
            "k": [
                4,
                38
            ]
        },
        "man-facepalming": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F926-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F926-1F3FB-200D-2642",
                    "image": "1f926-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 36,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F926-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F926-1F3FC-200D-2642",
                    "image": "1f926-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 37,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F926-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F926-1F3FD-200D-2642",
                    "image": "1f926-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 38,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F926-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F926-1F3FE-200D-2642",
                    "image": "1f926-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 39,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F926-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F926-1F3FF-200D-2642",
                    "image": "1f926-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 40,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Facepalming",
            "b": "1F926-200D-2642-FE0F",
            "c": "1F926-200D-2642",
            "k": [
                38,
                35
            ],
            "o": 9
        },
        "flag-sx": {
            "a": "Sint Maarten Flag",
            "b": "1F1F8-1F1FD",
            "k": [
                4,
                39
            ]
        },
        "flag-sy": {
            "a": "Syria Flag",
            "b": "1F1F8-1F1FE",
            "k": [
                4,
                40
            ]
        },
        "woman-facepalming": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F926-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F926-1F3FB-200D-2640",
                    "image": "1f926-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 30,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F926-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F926-1F3FC-200D-2640",
                    "image": "1f926-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 31,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F926-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F926-1F3FD-200D-2640",
                    "image": "1f926-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 32,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F926-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F926-1F3FE-200D-2640",
                    "image": "1f926-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 33,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F926-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F926-1F3FF-200D-2640",
                    "image": "1f926-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 38,
                    "sheet_y": 34,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Facepalming",
            "b": "1F926-200D-2640-FE0F",
            "c": "1F926-200D-2640",
            "k": [
                38,
                29
            ],
            "o": 9
        },
        "shrug": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F937-1F3FB",
                    "non_qualified": null,
                    "image": "1f937-1f3fb.png",
                    "sheet_x": 40,
                    "sheet_y": 7,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F937-1F3FC",
                    "non_qualified": null,
                    "image": "1f937-1f3fc.png",
                    "sheet_x": 40,
                    "sheet_y": 8,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F937-1F3FD",
                    "non_qualified": null,
                    "image": "1f937-1f3fd.png",
                    "sheet_x": 40,
                    "sheet_y": 9,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F937-1F3FE",
                    "non_qualified": null,
                    "image": "1f937-1f3fe.png",
                    "sheet_x": 40,
                    "sheet_y": 10,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F937-1F3FF",
                    "non_qualified": null,
                    "image": "1f937-1f3ff.png",
                    "sheet_x": 40,
                    "sheet_y": 11,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Shrug",
            "b": "1F937",
            "k": [
                40,
                6
            ],
            "o": 9
        },
        "flag-sz": {
            "a": "Swaziland Flag",
            "b": "1F1F8-1F1FF",
            "k": [
                4,
                41
            ]
        },
        "flag-ta": {
            "a": "Tristan Da Cunha Flag",
            "b": "1F1F9-1F1E6",
            "k": [
                4,
                42
            ]
        },
        "man-shrugging": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F937-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F937-1F3FB-200D-2642",
                    "image": "1f937-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 1,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F937-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F937-1F3FC-200D-2642",
                    "image": "1f937-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 2,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F937-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F937-1F3FD-200D-2642",
                    "image": "1f937-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 3,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F937-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F937-1F3FE-200D-2642",
                    "image": "1f937-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 4,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F937-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F937-1F3FF-200D-2642",
                    "image": "1f937-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 5,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Shrugging",
            "b": "1F937-200D-2642-FE0F",
            "c": "1F937-200D-2642",
            "k": [
                40,
                0
            ],
            "o": 9
        },
        "woman-shrugging": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F937-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F937-1F3FB-200D-2640",
                    "image": "1f937-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 39,
                    "sheet_y": 47,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F937-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F937-1F3FC-200D-2640",
                    "image": "1f937-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 39,
                    "sheet_y": 48,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F937-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F937-1F3FD-200D-2640",
                    "image": "1f937-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 39,
                    "sheet_y": 49,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F937-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F937-1F3FE-200D-2640",
                    "image": "1f937-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 39,
                    "sheet_y": 50,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F937-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F937-1F3FF-200D-2640",
                    "image": "1f937-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 39,
                    "sheet_y": 51,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Shrugging",
            "b": "1F937-200D-2640-FE0F",
            "c": "1F937-200D-2640",
            "k": [
                39,
                46
            ],
            "o": 9
        },
        "flag-tc": {
            "a": "Turks & Caicos Islands Flag",
            "b": "1F1F9-1F1E8",
            "k": [
                4,
                43
            ]
        },
        "massage": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F486-1F3FB",
                    "non_qualified": null,
                    "image": "1f486-1f3fb.png",
                    "sheet_x": 24,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F486-1F3FC",
                    "non_qualified": null,
                    "image": "1f486-1f3fc.png",
                    "sheet_x": 24,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F486-1F3FD",
                    "non_qualified": null,
                    "image": "1f486-1f3fd.png",
                    "sheet_x": 24,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F486-1F3FE",
                    "non_qualified": null,
                    "image": "1f486-1f3fe.png",
                    "sheet_x": 24,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F486-1F3FF",
                    "non_qualified": null,
                    "image": "1f486-1f3ff.png",
                    "sheet_x": 24,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F486-200D-2640-FE0F",
            "a": "Face Massage",
            "b": "1F486",
            "k": [
                24,
                10
            ]
        },
        "flag-td": {
            "a": "Chad Flag",
            "b": "1F1F9-1F1E9",
            "k": [
                4,
                44
            ]
        },
        "man-getting-massage": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F486-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F486-1F3FB-200D-2642",
                    "image": "1f486-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F486-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F486-1F3FC-200D-2642",
                    "image": "1f486-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F486-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F486-1F3FD-200D-2642",
                    "image": "1f486-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F486-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F486-1F3FE-200D-2642",
                    "image": "1f486-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F486-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F486-1F3FF-200D-2642",
                    "image": "1f486-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Getting Massage",
            "b": "1F486-200D-2642-FE0F",
            "c": "1F486-200D-2642",
            "k": [
                24,
                4
            ]
        },
        "flag-tf": {
            "a": "French Southern Territories Flag",
            "b": "1F1F9-1F1EB",
            "k": [
                4,
                45
            ]
        },
        "woman-getting-massage": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F486-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F486-1F3FB-200D-2640",
                    "image": "1f486-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 23,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F486-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F486-1F3FC-200D-2640",
                    "image": "1f486-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F486-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F486-1F3FD-200D-2640",
                    "image": "1f486-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F486-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F486-1F3FE-200D-2640",
                    "image": "1f486-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F486-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F486-1F3FF-200D-2640",
                    "image": "1f486-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F486",
            "a": "Woman Getting Massage",
            "b": "1F486-200D-2640-FE0F",
            "c": "1F486-200D-2640",
            "k": [
                23,
                50
            ]
        },
        "flag-tg": {
            "a": "Togo Flag",
            "b": "1F1F9-1F1EC",
            "k": [
                4,
                46
            ]
        },
        "haircut": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F487-1F3FB",
                    "non_qualified": null,
                    "image": "1f487-1f3fb.png",
                    "sheet_x": 24,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F487-1F3FC",
                    "non_qualified": null,
                    "image": "1f487-1f3fc.png",
                    "sheet_x": 24,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F487-1F3FD",
                    "non_qualified": null,
                    "image": "1f487-1f3fd.png",
                    "sheet_x": 24,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F487-1F3FE",
                    "non_qualified": null,
                    "image": "1f487-1f3fe.png",
                    "sheet_x": 24,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F487-1F3FF",
                    "non_qualified": null,
                    "image": "1f487-1f3ff.png",
                    "sheet_x": 24,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F487-200D-2640-FE0F",
            "a": "Haircut",
            "b": "1F487",
            "k": [
                24,
                28
            ]
        },
        "flag-th": {
            "a": "Thailand Flag",
            "b": "1F1F9-1F1ED",
            "k": [
                4,
                47
            ]
        },
        "man-getting-haircut": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F487-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F487-1F3FB-200D-2642",
                    "image": "1f487-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F487-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F487-1F3FC-200D-2642",
                    "image": "1f487-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F487-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F487-1F3FD-200D-2642",
                    "image": "1f487-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F487-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F487-1F3FE-200D-2642",
                    "image": "1f487-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F487-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F487-1F3FF-200D-2642",
                    "image": "1f487-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Getting Haircut",
            "b": "1F487-200D-2642-FE0F",
            "c": "1F487-200D-2642",
            "k": [
                24,
                22
            ]
        },
        "flag-tj": {
            "a": "Tajikistan Flag",
            "b": "1F1F9-1F1EF",
            "k": [
                4,
                48
            ]
        },
        "flag-tk": {
            "a": "Tokelau Flag",
            "b": "1F1F9-1F1F0",
            "k": [
                4,
                49
            ]
        },
        "woman-getting-haircut": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F487-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F487-1F3FB-200D-2640",
                    "image": "1f487-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F487-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F487-1F3FC-200D-2640",
                    "image": "1f487-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F487-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F487-1F3FD-200D-2640",
                    "image": "1f487-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F487-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F487-1F3FE-200D-2640",
                    "image": "1f487-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F487-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F487-1F3FF-200D-2640",
                    "image": "1f487-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 24,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F487",
            "a": "Woman Getting Haircut",
            "b": "1F487-200D-2640-FE0F",
            "c": "1F487-200D-2640",
            "k": [
                24,
                16
            ]
        },
        "walking": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B6-1F3FB",
                    "non_qualified": null,
                    "image": "1f6b6-1f3fb.png",
                    "sheet_x": 36,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F6B6-1F3FC",
                    "non_qualified": null,
                    "image": "1f6b6-1f3fc.png",
                    "sheet_x": 36,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F6B6-1F3FD",
                    "non_qualified": null,
                    "image": "1f6b6-1f3fd.png",
                    "sheet_x": 36,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F6B6-1F3FE",
                    "non_qualified": null,
                    "image": "1f6b6-1f3fe.png",
                    "sheet_x": 36,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F6B6-1F3FF",
                    "non_qualified": null,
                    "image": "1f6b6-1f3ff.png",
                    "sheet_x": 36,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F6B6-200D-2642-FE0F",
            "a": "Pedestrian",
            "b": "1F6B6",
            "k": [
                36,
                21
            ]
        },
        "flag-tl": {
            "a": "Timor-Leste Flag",
            "b": "1F1F9-1F1F1",
            "k": [
                4,
                50
            ]
        },
        "man-walking": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B6-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F6B6-1F3FB-200D-2642",
                    "image": "1f6b6-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6B6-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F6B6-1F3FC-200D-2642",
                    "image": "1f6b6-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6B6-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F6B6-1F3FD-200D-2642",
                    "image": "1f6b6-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6B6-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F6B6-1F3FE-200D-2642",
                    "image": "1f6b6-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6B6-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F6B6-1F3FF-200D-2642",
                    "image": "1f6b6-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F6B6",
            "a": "Man Walking",
            "b": "1F6B6-200D-2642-FE0F",
            "c": "1F6B6-200D-2642",
            "k": [
                36,
                15
            ]
        },
        "flag-tm": {
            "a": "Turkmenistan Flag",
            "b": "1F1F9-1F1F2",
            "k": [
                4,
                51
            ]
        },
        "woman-walking": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B6-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F6B6-1F3FB-200D-2640",
                    "image": "1f6b6-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6B6-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F6B6-1F3FC-200D-2640",
                    "image": "1f6b6-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6B6-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F6B6-1F3FD-200D-2640",
                    "image": "1f6b6-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6B6-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F6B6-1F3FE-200D-2640",
                    "image": "1f6b6-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6B6-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F6B6-1F3FF-200D-2640",
                    "image": "1f6b6-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Walking",
            "b": "1F6B6-200D-2640-FE0F",
            "c": "1F6B6-200D-2640",
            "k": [
                36,
                9
            ]
        },
        "flag-tn": {
            "a": "Tunisia Flag",
            "b": "1F1F9-1F1F3",
            "k": [
                5,
                0
            ]
        },
        "runner": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C3-1F3FB",
                    "non_qualified": null,
                    "image": "1f3c3-1f3fb.png",
                    "sheet_x": 9,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F3C3-1F3FC",
                    "non_qualified": null,
                    "image": "1f3c3-1f3fc.png",
                    "sheet_x": 9,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F3C3-1F3FD",
                    "non_qualified": null,
                    "image": "1f3c3-1f3fd.png",
                    "sheet_x": 9,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F3C3-1F3FE",
                    "non_qualified": null,
                    "image": "1f3c3-1f3fe.png",
                    "sheet_x": 9,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F3C3-1F3FF",
                    "non_qualified": null,
                    "image": "1f3c3-1f3ff.png",
                    "sheet_x": 9,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F3C3-200D-2642-FE0F",
            "a": "Runner",
            "b": "1F3C3",
            "k": [
                9,
                46
            ],
            "n": [
                "running"
            ]
        },
        "flag-to": {
            "a": "Tonga Flag",
            "b": "1F1F9-1F1F4",
            "k": [
                5,
                1
            ]
        },
        "man-running": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C3-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F3C3-1F3FB-200D-2642",
                    "image": "1f3c3-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3C3-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F3C3-1F3FC-200D-2642",
                    "image": "1f3c3-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3C3-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F3C3-1F3FD-200D-2642",
                    "image": "1f3c3-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3C3-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F3C3-1F3FE-200D-2642",
                    "image": "1f3c3-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3C3-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F3C3-1F3FF-200D-2642",
                    "image": "1f3c3-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F3C3",
            "a": "Man Running",
            "b": "1F3C3-200D-2642-FE0F",
            "c": "1F3C3-200D-2642",
            "k": [
                9,
                40
            ]
        },
        "flag-tr": {
            "a": "Turkey Flag",
            "b": "1F1F9-1F1F7",
            "k": [
                5,
                2
            ]
        },
        "flag-tt": {
            "a": "Trinidad & Tobago Flag",
            "b": "1F1F9-1F1F9",
            "k": [
                5,
                3
            ]
        },
        "woman-running": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C3-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F3C3-1F3FB-200D-2640",
                    "image": "1f3c3-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3C3-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F3C3-1F3FC-200D-2640",
                    "image": "1f3c3-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3C3-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F3C3-1F3FD-200D-2640",
                    "image": "1f3c3-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3C3-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F3C3-1F3FE-200D-2640",
                    "image": "1f3c3-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3C3-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F3C3-1F3FF-200D-2640",
                    "image": "1f3c3-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 9,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Running",
            "b": "1F3C3-200D-2640-FE0F",
            "c": "1F3C3-200D-2640",
            "k": [
                9,
                34
            ]
        },
        "flag-tv": {
            "a": "Tuvalu Flag",
            "b": "1F1F9-1F1FB",
            "k": [
                5,
                4
            ]
        },
        "dancer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F483-1F3FB",
                    "non_qualified": null,
                    "image": "1f483-1f3fb.png",
                    "sheet_x": 23,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F483-1F3FC",
                    "non_qualified": null,
                    "image": "1f483-1f3fc.png",
                    "sheet_x": 23,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F483-1F3FD",
                    "non_qualified": null,
                    "image": "1f483-1f3fd.png",
                    "sheet_x": 23,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F483-1F3FE",
                    "non_qualified": null,
                    "image": "1f483-1f3fe.png",
                    "sheet_x": 23,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F483-1F3FF",
                    "non_qualified": null,
                    "image": "1f483-1f3ff.png",
                    "sheet_x": 23,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Dancer",
            "b": "1F483",
            "j": [
                "female",
                "girl",
                "woman",
                "fun"
            ],
            "k": [
                23,
                37
            ]
        },
        "flag-tw": {
            "a": "Taiwan Flag",
            "b": "1F1F9-1F1FC",
            "k": [
                5,
                5
            ]
        },
        "man_dancing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F57A-1F3FB",
                    "non_qualified": null,
                    "image": "1f57a-1f3fb.png",
                    "sheet_x": 29,
                    "sheet_y": 22,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F57A-1F3FC",
                    "non_qualified": null,
                    "image": "1f57a-1f3fc.png",
                    "sheet_x": 29,
                    "sheet_y": 23,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F57A-1F3FD",
                    "non_qualified": null,
                    "image": "1f57a-1f3fd.png",
                    "sheet_x": 29,
                    "sheet_y": 24,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F57A-1F3FE",
                    "non_qualified": null,
                    "image": "1f57a-1f3fe.png",
                    "sheet_x": 29,
                    "sheet_y": 25,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F57A-1F3FF",
                    "non_qualified": null,
                    "image": "1f57a-1f3ff.png",
                    "sheet_x": 29,
                    "sheet_y": 26,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Man Dancing",
            "b": "1F57A",
            "j": [
                "male",
                "boy",
                "fun",
                "dancer"
            ],
            "k": [
                29,
                21
            ],
            "o": 9
        },
        "dancers": {
            "obsoleted_by": "1F46F-200D-2640-FE0F",
            "a": "Woman with Bunny Ears",
            "b": "1F46F",
            "k": [
                21,
                1
            ]
        },
        "flag-tz": {
            "a": "Tanzania Flag",
            "b": "1F1F9-1F1FF",
            "k": [
                5,
                6
            ]
        },
        "flag-ua": {
            "a": "Ukraine Flag",
            "b": "1F1FA-1F1E6",
            "k": [
                5,
                7
            ]
        },
        "man-with-bunny-ears-partying": {
            "a": "Man with Bunny Ears Partying",
            "b": "1F46F-200D-2642-FE0F",
            "c": "1F46F-200D-2642",
            "k": [
                21,
                0
            ]
        },
        "woman-with-bunny-ears-partying": {
            "obsoletes": "1F46F",
            "a": "Woman with Bunny Ears Partying",
            "b": "1F46F-200D-2640-FE0F",
            "c": "1F46F-200D-2640",
            "k": [
                20,
                51
            ]
        },
        "flag-ug": {
            "a": "Uganda Flag",
            "b": "1F1FA-1F1EC",
            "k": [
                5,
                8
            ]
        },
        "flag-um": {
            "a": "U.s. Outlying Islands Flag",
            "b": "1F1FA-1F1F2",
            "k": [
                5,
                9
            ]
        },
        "person_in_steamy_room": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D6-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d6-1f3fb.png",
                    "sheet_x": 43,
                    "sheet_y": 41,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D6-1F3FB-200D-2642-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9D6-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d6-1f3fc.png",
                    "sheet_x": 43,
                    "sheet_y": 42,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D6-1F3FC-200D-2642-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9D6-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d6-1f3fd.png",
                    "sheet_x": 43,
                    "sheet_y": 43,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D6-1F3FD-200D-2642-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9D6-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d6-1f3fe.png",
                    "sheet_x": 43,
                    "sheet_y": 44,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D6-1F3FE-200D-2642-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9D6-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d6-1f3ff.png",
                    "sheet_x": 43,
                    "sheet_y": 45,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D6-1F3FF-200D-2642-FE0F"
                }
            },
            "obsoleted_by": "1F9D6-200D-2642-FE0F",
            "a": "Person in Steamy Room",
            "b": "1F9D6",
            "k": [
                43,
                40
            ],
            "o": 10
        },
        "woman_in_steamy_room": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D6-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9D6-1F3FB-200D-2640",
                    "image": "1f9d6-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 29,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D6-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9D6-1F3FC-200D-2640",
                    "image": "1f9d6-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 30,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D6-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9D6-1F3FD-200D-2640",
                    "image": "1f9d6-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 31,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D6-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9D6-1F3FE-200D-2640",
                    "image": "1f9d6-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 32,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D6-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9D6-1F3FF-200D-2640",
                    "image": "1f9d6-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 33,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman in Steamy Room",
            "b": "1F9D6-200D-2640-FE0F",
            "c": "1F9D6-200D-2640",
            "j": [
                "female",
                "woman",
                "spa",
                "steamroom",
                "sauna"
            ],
            "k": [
                43,
                28
            ],
            "o": 10
        },
        "flag-un": {
            "a": "United Nations Flag",
            "b": "1F1FA-1F1F3",
            "k": [
                5,
                10
            ]
        },
        "us": {
            "a": "United States Flag",
            "b": "1F1FA-1F1F8",
            "j": [
                "united",
                "states",
                "america",
                "flag",
                "nation",
                "country",
                "banner"
            ],
            "k": [
                5,
                11
            ],
            "n": [
                "flag-us"
            ]
        },
        "man_in_steamy_room": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D6-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9D6-1F3FB-200D-2642",
                    "image": "1f9d6-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 35,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D6-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9D6-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9D6-1F3FC-200D-2642",
                    "image": "1f9d6-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 36,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D6-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9D6-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9D6-1F3FD-200D-2642",
                    "image": "1f9d6-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 37,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D6-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9D6-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9D6-1F3FE-200D-2642",
                    "image": "1f9d6-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 38,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D6-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9D6-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9D6-1F3FF-200D-2642",
                    "image": "1f9d6-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 39,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D6-1F3FF"
                }
            },
            "obsoletes": "1F9D6",
            "a": "Man in Steamy Room",
            "b": "1F9D6-200D-2642-FE0F",
            "c": "1F9D6-200D-2642",
            "j": [
                "male",
                "man",
                "spa",
                "steamroom",
                "sauna"
            ],
            "k": [
                43,
                34
            ],
            "o": 10
        },
        "person_climbing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D7-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d7-1f3fb.png",
                    "sheet_x": 44,
                    "sheet_y": 7,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D7-1F3FB-200D-2640-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9D7-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d7-1f3fc.png",
                    "sheet_x": 44,
                    "sheet_y": 8,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D7-1F3FC-200D-2640-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9D7-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d7-1f3fd.png",
                    "sheet_x": 44,
                    "sheet_y": 9,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D7-1F3FD-200D-2640-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9D7-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d7-1f3fe.png",
                    "sheet_x": 44,
                    "sheet_y": 10,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D7-1F3FE-200D-2640-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9D7-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d7-1f3ff.png",
                    "sheet_x": 44,
                    "sheet_y": 11,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D7-1F3FF-200D-2640-FE0F"
                }
            },
            "obsoleted_by": "1F9D7-200D-2640-FE0F",
            "a": "Person Climbing",
            "b": "1F9D7",
            "k": [
                44,
                6
            ],
            "o": 10
        },
        "flag-uy": {
            "a": "Uruguay Flag",
            "b": "1F1FA-1F1FE",
            "k": [
                5,
                12
            ]
        },
        "woman_climbing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D7-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9D7-1F3FB-200D-2640",
                    "image": "1f9d7-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 47,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D7-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9D7-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9D7-1F3FC-200D-2640",
                    "image": "1f9d7-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 48,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D7-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9D7-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9D7-1F3FD-200D-2640",
                    "image": "1f9d7-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 49,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D7-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9D7-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9D7-1F3FE-200D-2640",
                    "image": "1f9d7-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 50,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D7-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9D7-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9D7-1F3FF-200D-2640",
                    "image": "1f9d7-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 43,
                    "sheet_y": 51,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D7-1F3FF"
                }
            },
            "obsoletes": "1F9D7",
            "a": "Woman Climbing",
            "b": "1F9D7-200D-2640-FE0F",
            "c": "1F9D7-200D-2640",
            "k": [
                43,
                46
            ],
            "o": 10
        },
        "flag-uz": {
            "a": "Uzbekistan Flag",
            "b": "1F1FA-1F1FF",
            "k": [
                5,
                13
            ]
        },
        "man_climbing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D7-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9D7-1F3FB-200D-2642",
                    "image": "1f9d7-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 1,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D7-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9D7-1F3FC-200D-2642",
                    "image": "1f9d7-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 2,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D7-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9D7-1F3FD-200D-2642",
                    "image": "1f9d7-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 3,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D7-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9D7-1F3FE-200D-2642",
                    "image": "1f9d7-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 4,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D7-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9D7-1F3FF-200D-2642",
                    "image": "1f9d7-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 5,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Climbing",
            "b": "1F9D7-200D-2642-FE0F",
            "c": "1F9D7-200D-2642",
            "k": [
                44,
                0
            ],
            "o": 10
        },
        "flag-va": {
            "a": "Vatican City Flag",
            "b": "1F1FB-1F1E6",
            "k": [
                5,
                14
            ]
        },
        "person_in_lotus_position": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D8-1F3FB",
                    "non_qualified": null,
                    "image": "1f9d8-1f3fb.png",
                    "sheet_x": 44,
                    "sheet_y": 25,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D8-1F3FB-200D-2640-FE0F"
                },
                "1F3FC": {
                    "unified": "1F9D8-1F3FC",
                    "non_qualified": null,
                    "image": "1f9d8-1f3fc.png",
                    "sheet_x": 44,
                    "sheet_y": 26,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D8-1F3FC-200D-2640-FE0F"
                },
                "1F3FD": {
                    "unified": "1F9D8-1F3FD",
                    "non_qualified": null,
                    "image": "1f9d8-1f3fd.png",
                    "sheet_x": 44,
                    "sheet_y": 27,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D8-1F3FD-200D-2640-FE0F"
                },
                "1F3FE": {
                    "unified": "1F9D8-1F3FE",
                    "non_qualified": null,
                    "image": "1f9d8-1f3fe.png",
                    "sheet_x": 44,
                    "sheet_y": 28,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D8-1F3FE-200D-2640-FE0F"
                },
                "1F3FF": {
                    "unified": "1F9D8-1F3FF",
                    "non_qualified": null,
                    "image": "1f9d8-1f3ff.png",
                    "sheet_x": 44,
                    "sheet_y": 29,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false,
                    "obsoleted_by": "1F9D8-1F3FF-200D-2640-FE0F"
                }
            },
            "obsoleted_by": "1F9D8-200D-2640-FE0F",
            "a": "Person in Lotus Position",
            "b": "1F9D8",
            "k": [
                44,
                24
            ],
            "o": 10
        },
        "flag-vc": {
            "a": "St. Vincent & Grenadines Flag",
            "b": "1F1FB-1F1E8",
            "k": [
                5,
                15
            ]
        },
        "flag-ve": {
            "a": "Venezuela Flag",
            "b": "1F1FB-1F1EA",
            "k": [
                5,
                16
            ]
        },
        "woman_in_lotus_position": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D8-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F9D8-1F3FB-200D-2640",
                    "image": "1f9d8-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 13,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D8-1F3FB"
                },
                "1F3FC": {
                    "unified": "1F9D8-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F9D8-1F3FC-200D-2640",
                    "image": "1f9d8-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 14,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D8-1F3FC"
                },
                "1F3FD": {
                    "unified": "1F9D8-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F9D8-1F3FD-200D-2640",
                    "image": "1f9d8-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 15,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D8-1F3FD"
                },
                "1F3FE": {
                    "unified": "1F9D8-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F9D8-1F3FE-200D-2640",
                    "image": "1f9d8-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 16,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D8-1F3FE"
                },
                "1F3FF": {
                    "unified": "1F9D8-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F9D8-1F3FF-200D-2640",
                    "image": "1f9d8-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 17,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false,
                    "obsoletes": "1F9D8-1F3FF"
                }
            },
            "obsoletes": "1F9D8",
            "a": "Woman in Lotus Position",
            "b": "1F9D8-200D-2640-FE0F",
            "c": "1F9D8-200D-2640",
            "j": [
                "woman",
                "female",
                "meditation",
                "yoga",
                "serenity",
                "zen",
                "mindfulness"
            ],
            "k": [
                44,
                12
            ],
            "o": 10
        },
        "man_in_lotus_position": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F9D8-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F9D8-1F3FB-200D-2642",
                    "image": "1f9d8-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 19,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F9D8-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F9D8-1F3FC-200D-2642",
                    "image": "1f9d8-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 20,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F9D8-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F9D8-1F3FD-200D-2642",
                    "image": "1f9d8-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 21,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F9D8-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F9D8-1F3FE-200D-2642",
                    "image": "1f9d8-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 22,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F9D8-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F9D8-1F3FF-200D-2642",
                    "image": "1f9d8-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 44,
                    "sheet_y": 23,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man in Lotus Position",
            "b": "1F9D8-200D-2642-FE0F",
            "c": "1F9D8-200D-2642",
            "j": [
                "man",
                "male",
                "meditation",
                "yoga",
                "serenity",
                "zen",
                "mindfulness"
            ],
            "k": [
                44,
                18
            ],
            "o": 10
        },
        "flag-vg": {
            "a": "British Virgin Islands Flag",
            "b": "1F1FB-1F1EC",
            "k": [
                5,
                17
            ]
        },
        "flag-vi": {
            "a": "U.s. Virgin Islands Flag",
            "b": "1F1FB-1F1EE",
            "k": [
                5,
                18
            ]
        },
        "bath": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6C0-1F3FB",
                    "non_qualified": null,
                    "image": "1f6c0-1f3fb.png",
                    "sheet_x": 36,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F6C0-1F3FC",
                    "non_qualified": null,
                    "image": "1f6c0-1f3fc.png",
                    "sheet_x": 36,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F6C0-1F3FD",
                    "non_qualified": null,
                    "image": "1f6c0-1f3fd.png",
                    "sheet_x": 36,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F6C0-1F3FE",
                    "non_qualified": null,
                    "image": "1f6c0-1f3fe.png",
                    "sheet_x": 36,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F6C0-1F3FF",
                    "non_qualified": null,
                    "image": "1f6c0-1f3ff.png",
                    "sheet_x": 36,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Bath",
            "b": "1F6C0",
            "j": [
                "clean",
                "shower",
                "bathroom"
            ],
            "k": [
                36,
                36
            ]
        },
        "sleeping_accommodation": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6CC-1F3FB",
                    "non_qualified": null,
                    "image": "1f6cc-1f3fb.png",
                    "sheet_x": 36,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6CC-1F3FC",
                    "non_qualified": null,
                    "image": "1f6cc-1f3fc.png",
                    "sheet_x": 36,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6CC-1F3FD",
                    "non_qualified": null,
                    "image": "1f6cc-1f3fd.png",
                    "sheet_x": 36,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6CC-1F3FE",
                    "non_qualified": null,
                    "image": "1f6cc-1f3fe.png",
                    "sheet_x": 37,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6CC-1F3FF",
                    "non_qualified": null,
                    "image": "1f6cc-1f3ff.png",
                    "sheet_x": 37,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Sleeping Accommodation",
            "b": "1F6CC",
            "k": [
                36,
                48
            ],
            "o": 7
        },
        "flag-vn": {
            "a": "Vietnam Flag",
            "b": "1F1FB-1F1F3",
            "k": [
                5,
                19
            ]
        },
        "man_in_business_suit_levitating": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F574-1F3FB",
                    "non_qualified": null,
                    "image": "1f574-1f3fb.png",
                    "sheet_x": 28,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F574-1F3FC",
                    "non_qualified": null,
                    "image": "1f574-1f3fc.png",
                    "sheet_x": 28,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F574-1F3FD",
                    "non_qualified": null,
                    "image": "1f574-1f3fd.png",
                    "sheet_x": 28,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F574-1F3FE",
                    "non_qualified": null,
                    "image": "1f574-1f3fe.png",
                    "sheet_x": 28,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F574-1F3FF",
                    "non_qualified": null,
                    "image": "1f574-1f3ff.png",
                    "sheet_x": 28,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Man in Business Suit Levitating",
            "b": "1F574-FE0F",
            "c": "1F574",
            "k": [
                28,
                45
            ],
            "o": 7
        },
        "flag-vu": {
            "a": "Vanuatu Flag",
            "b": "1F1FB-1F1FA",
            "k": [
                5,
                20
            ]
        },
        "flag-wf": {
            "a": "Wallis & Futuna Flag",
            "b": "1F1FC-1F1EB",
            "k": [
                5,
                21
            ]
        },
        "speaking_head_in_silhouette": {
            "a": "Speaking Head in Silhouette",
            "b": "1F5E3-FE0F",
            "c": "1F5E3",
            "k": [
                30,
                14
            ],
            "o": 7
        },
        "bust_in_silhouette": {
            "a": "Bust in Silhouette",
            "b": "1F464",
            "j": [
                "user",
                "person",
                "human"
            ],
            "k": [
                15,
                40
            ]
        },
        "flag-ws": {
            "a": "Samoa Flag",
            "b": "1F1FC-1F1F8",
            "k": [
                5,
                22
            ]
        },
        "busts_in_silhouette": {
            "a": "Busts in Silhouette",
            "b": "1F465",
            "j": [
                "user",
                "person",
                "human",
                "group",
                "team"
            ],
            "k": [
                15,
                41
            ]
        },
        "flag-xk": {
            "a": "Kosovo Flag",
            "b": "1F1FD-1F1F0",
            "k": [
                5,
                23
            ]
        },
        "fencer": {
            "a": "Fencer",
            "b": "1F93A",
            "k": [
                40,
                48
            ],
            "o": 9
        },
        "flag-ye": {
            "a": "Yemen Flag",
            "b": "1F1FE-1F1EA",
            "k": [
                5,
                24
            ]
        },
        "flag-yt": {
            "a": "Mayotte Flag",
            "b": "1F1FE-1F1F9",
            "k": [
                5,
                25
            ]
        },
        "horse_racing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C7-1F3FB",
                    "non_qualified": null,
                    "image": "1f3c7-1f3fb.png",
                    "sheet_x": 10,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F3C7-1F3FC",
                    "non_qualified": null,
                    "image": "1f3c7-1f3fc.png",
                    "sheet_x": 10,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F3C7-1F3FD",
                    "non_qualified": null,
                    "image": "1f3c7-1f3fd.png",
                    "sheet_x": 10,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F3C7-1F3FE",
                    "non_qualified": null,
                    "image": "1f3c7-1f3fe.png",
                    "sheet_x": 10,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F3C7-1F3FF",
                    "non_qualified": null,
                    "image": "1f3c7-1f3ff.png",
                    "sheet_x": 10,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Horse Racing",
            "b": "1F3C7",
            "j": [
                "animal",
                "betting",
                "competition",
                "gambling",
                "luck"
            ],
            "k": [
                10,
                20
            ]
        },
        "flag-za": {
            "a": "South Africa Flag",
            "b": "1F1FF-1F1E6",
            "k": [
                5,
                26
            ]
        },
        "skier": {
            "a": "Skier",
            "b": "26F7-FE0F",
            "c": "26F7",
            "j": [
                "sports",
                "winter",
                "snow"
            ],
            "k": [
                48,
                44
            ],
            "o": 5
        },
        "flag-zm": {
            "a": "Zambia Flag",
            "b": "1F1FF-1F1F2",
            "k": [
                5,
                27
            ]
        },
        "snowboarder": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C2-1F3FB",
                    "non_qualified": null,
                    "image": "1f3c2-1f3fb.png",
                    "sheet_x": 9,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F3C2-1F3FC",
                    "non_qualified": null,
                    "image": "1f3c2-1f3fc.png",
                    "sheet_x": 9,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F3C2-1F3FD",
                    "non_qualified": null,
                    "image": "1f3c2-1f3fd.png",
                    "sheet_x": 9,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F3C2-1F3FE",
                    "non_qualified": null,
                    "image": "1f3c2-1f3fe.png",
                    "sheet_x": 9,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F3C2-1F3FF",
                    "non_qualified": null,
                    "image": "1f3c2-1f3ff.png",
                    "sheet_x": 9,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Snowboarder",
            "b": "1F3C2",
            "j": [
                "sports",
                "winter"
            ],
            "k": [
                9,
                28
            ]
        },
        "golfer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CC-1F3FB",
                    "non_qualified": null,
                    "image": "1f3cc-1f3fb.png",
                    "sheet_x": 11,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CC-1F3FC",
                    "non_qualified": null,
                    "image": "1f3cc-1f3fc.png",
                    "sheet_x": 11,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CC-1F3FD",
                    "non_qualified": null,
                    "image": "1f3cc-1f3fd.png",
                    "sheet_x": 11,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CC-1F3FE",
                    "non_qualified": null,
                    "image": "1f3cc-1f3fe.png",
                    "sheet_x": 11,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CC-1F3FF",
                    "non_qualified": null,
                    "image": "1f3cc-1f3ff.png",
                    "sheet_x": 11,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoleted_by": "1F3CC-FE0F-200D-2642-FE0F",
            "a": "Golfer",
            "b": "1F3CC-FE0F",
            "c": "1F3CC",
            "k": [
                11,
                24
            ],
            "o": 7
        },
        "flag-zw": {
            "a": "Zimbabwe Flag",
            "b": "1F1FF-1F1FC",
            "k": [
                5,
                28
            ]
        },
        "man-golfing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CC-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F3CC-1F3FB-200D-2642",
                    "image": "1f3cc-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CC-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F3CC-1F3FC-200D-2642",
                    "image": "1f3cc-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CC-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F3CC-1F3FD-200D-2642",
                    "image": "1f3cc-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CC-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F3CC-1F3FE-200D-2642",
                    "image": "1f3cc-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CC-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F3CC-1F3FF-200D-2642",
                    "image": "1f3cc-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F3CC-FE0F",
            "a": "Man Golfing",
            "b": "1F3CC-FE0F-200D-2642-FE0F",
            "k": [
                11,
                18
            ],
            "o": 7
        },
        "flag-england": {
            "a": "England Flag",
            "b": "1F3F4-E0067-E0062-E0065-E006E-E0067-E007F",
            "k": [
                12,
                16
            ],
            "o": 7
        },
        "woman-golfing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CC-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F3CC-1F3FB-200D-2640",
                    "image": "1f3cc-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CC-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F3CC-1F3FC-200D-2640",
                    "image": "1f3cc-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CC-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F3CC-1F3FD-200D-2640",
                    "image": "1f3cc-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CC-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F3CC-1F3FE-200D-2640",
                    "image": "1f3cc-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CC-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F3CC-1F3FF-200D-2640",
                    "image": "1f3cc-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Golfing",
            "b": "1F3CC-FE0F-200D-2640-FE0F",
            "k": [
                11,
                12
            ],
            "o": 7
        },
        "flag-scotland": {
            "a": "Scotland Flag",
            "b": "1F3F4-E0067-E0062-E0073-E0063-E0074-E007F",
            "k": [
                12,
                17
            ],
            "o": 7
        },
        "flag-wales": {
            "a": "Wales Flag",
            "b": "1F3F4-E0067-E0062-E0077-E006C-E0073-E007F",
            "k": [
                12,
                18
            ],
            "o": 7
        },
        "surfer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C4-1F3FB",
                    "non_qualified": null,
                    "image": "1f3c4-1f3fb.png",
                    "sheet_x": 10,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F3C4-1F3FC",
                    "non_qualified": null,
                    "image": "1f3c4-1f3fc.png",
                    "sheet_x": 10,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F3C4-1F3FD",
                    "non_qualified": null,
                    "image": "1f3c4-1f3fd.png",
                    "sheet_x": 10,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F3C4-1F3FE",
                    "non_qualified": null,
                    "image": "1f3c4-1f3fe.png",
                    "sheet_x": 10,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F3C4-1F3FF",
                    "non_qualified": null,
                    "image": "1f3c4-1f3ff.png",
                    "sheet_x": 10,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F3C4-200D-2642-FE0F",
            "a": "Surfer",
            "b": "1F3C4",
            "k": [
                10,
                12
            ]
        },
        "man-surfing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C4-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F3C4-1F3FB-200D-2642",
                    "image": "1f3c4-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3C4-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F3C4-1F3FC-200D-2642",
                    "image": "1f3c4-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3C4-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F3C4-1F3FD-200D-2642",
                    "image": "1f3c4-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3C4-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F3C4-1F3FE-200D-2642",
                    "image": "1f3c4-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3C4-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F3C4-1F3FF-200D-2642",
                    "image": "1f3c4-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F3C4",
            "a": "Man Surfing",
            "b": "1F3C4-200D-2642-FE0F",
            "c": "1F3C4-200D-2642",
            "k": [
                10,
                6
            ]
        },
        "woman-surfing": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3C4-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F3C4-1F3FB-200D-2640",
                    "image": "1f3c4-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3C4-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F3C4-1F3FC-200D-2640",
                    "image": "1f3c4-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3C4-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F3C4-1F3FD-200D-2640",
                    "image": "1f3c4-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3C4-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F3C4-1F3FE-200D-2640",
                    "image": "1f3c4-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3C4-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F3C4-1F3FF-200D-2640",
                    "image": "1f3c4-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Surfing",
            "b": "1F3C4-200D-2640-FE0F",
            "c": "1F3C4-200D-2640",
            "k": [
                10,
                0
            ]
        },
        "rowboat": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6A3-1F3FB",
                    "non_qualified": null,
                    "image": "1f6a3-1f3fb.png",
                    "sheet_x": 35,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6A3-1F3FC",
                    "non_qualified": null,
                    "image": "1f6a3-1f3fc.png",
                    "sheet_x": 35,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6A3-1F3FD",
                    "non_qualified": null,
                    "image": "1f6a3-1f3fd.png",
                    "sheet_x": 35,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6A3-1F3FE",
                    "non_qualified": null,
                    "image": "1f6a3-1f3fe.png",
                    "sheet_x": 35,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6A3-1F3FF",
                    "non_qualified": null,
                    "image": "1f6a3-1f3ff.png",
                    "sheet_x": 35,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoleted_by": "1F6A3-200D-2642-FE0F",
            "a": "Rowboat",
            "b": "1F6A3",
            "k": [
                35,
                3
            ]
        },
        "man-rowing-boat": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6A3-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F6A3-1F3FB-200D-2642",
                    "image": "1f6a3-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 34,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6A3-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F6A3-1F3FC-200D-2642",
                    "image": "1f6a3-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 34,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6A3-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F6A3-1F3FD-200D-2642",
                    "image": "1f6a3-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6A3-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F6A3-1F3FE-200D-2642",
                    "image": "1f6a3-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6A3-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F6A3-1F3FF-200D-2642",
                    "image": "1f6a3-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F6A3",
            "a": "Man Rowing Boat",
            "b": "1F6A3-200D-2642-FE0F",
            "c": "1F6A3-200D-2642",
            "k": [
                34,
                49
            ]
        },
        "woman-rowing-boat": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6A3-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F6A3-1F3FB-200D-2640",
                    "image": "1f6a3-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 34,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6A3-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F6A3-1F3FC-200D-2640",
                    "image": "1f6a3-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 34,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6A3-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F6A3-1F3FD-200D-2640",
                    "image": "1f6a3-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 34,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6A3-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F6A3-1F3FE-200D-2640",
                    "image": "1f6a3-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 34,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6A3-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F6A3-1F3FF-200D-2640",
                    "image": "1f6a3-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 34,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Rowing Boat",
            "b": "1F6A3-200D-2640-FE0F",
            "c": "1F6A3-200D-2640",
            "k": [
                34,
                43
            ]
        },
        "swimmer": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CA-1F3FB",
                    "non_qualified": null,
                    "image": "1f3ca-1f3fb.png",
                    "sheet_x": 10,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F3CA-1F3FC",
                    "non_qualified": null,
                    "image": "1f3ca-1f3fc.png",
                    "sheet_x": 10,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F3CA-1F3FD",
                    "non_qualified": null,
                    "image": "1f3ca-1f3fd.png",
                    "sheet_x": 10,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F3CA-1F3FE",
                    "non_qualified": null,
                    "image": "1f3ca-1f3fe.png",
                    "sheet_x": 10,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F3CA-1F3FF",
                    "non_qualified": null,
                    "image": "1f3ca-1f3ff.png",
                    "sheet_x": 10,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F3CA-200D-2642-FE0F",
            "a": "Swimmer",
            "b": "1F3CA",
            "k": [
                10,
                40
            ]
        },
        "man-swimming": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CA-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F3CA-1F3FB-200D-2642",
                    "image": "1f3ca-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CA-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F3CA-1F3FC-200D-2642",
                    "image": "1f3ca-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CA-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F3CA-1F3FD-200D-2642",
                    "image": "1f3ca-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CA-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F3CA-1F3FE-200D-2642",
                    "image": "1f3ca-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CA-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F3CA-1F3FF-200D-2642",
                    "image": "1f3ca-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F3CA",
            "a": "Man Swimming",
            "b": "1F3CA-200D-2642-FE0F",
            "c": "1F3CA-200D-2642",
            "k": [
                10,
                34
            ]
        },
        "woman-swimming": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CA-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F3CA-1F3FB-200D-2640",
                    "image": "1f3ca-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CA-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F3CA-1F3FC-200D-2640",
                    "image": "1f3ca-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CA-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F3CA-1F3FD-200D-2640",
                    "image": "1f3ca-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CA-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F3CA-1F3FE-200D-2640",
                    "image": "1f3ca-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CA-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F3CA-1F3FF-200D-2640",
                    "image": "1f3ca-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Swimming",
            "b": "1F3CA-200D-2640-FE0F",
            "c": "1F3CA-200D-2640",
            "k": [
                10,
                28
            ]
        },
        "person_with_ball": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "26F9-1F3FB",
                    "non_qualified": null,
                    "image": "26f9-1f3fb.png",
                    "sheet_x": 49,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "26F9-1F3FC",
                    "non_qualified": null,
                    "image": "26f9-1f3fc.png",
                    "sheet_x": 49,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "26F9-1F3FD",
                    "non_qualified": null,
                    "image": "26f9-1f3fd.png",
                    "sheet_x": 49,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "26F9-1F3FE",
                    "non_qualified": null,
                    "image": "26f9-1f3fe.png",
                    "sheet_x": 49,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "26F9-1F3FF",
                    "non_qualified": null,
                    "image": "26f9-1f3ff.png",
                    "sheet_x": 49,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoleted_by": "26F9-FE0F-200D-2642-FE0F",
            "a": "Person with Ball",
            "b": "26F9-FE0F",
            "c": "26F9",
            "k": [
                49,
                6
            ],
            "o": 5
        },
        "man-bouncing-ball": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "26F9-1F3FB-200D-2642-FE0F",
                    "non_qualified": "26F9-1F3FB-200D-2642",
                    "image": "26f9-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 49,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "26F9-1F3FC-200D-2642-FE0F",
                    "non_qualified": "26F9-1F3FC-200D-2642",
                    "image": "26f9-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 49,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "26F9-1F3FD-200D-2642-FE0F",
                    "non_qualified": "26F9-1F3FD-200D-2642",
                    "image": "26f9-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 49,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "26F9-1F3FE-200D-2642-FE0F",
                    "non_qualified": "26F9-1F3FE-200D-2642",
                    "image": "26f9-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 49,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "26F9-1F3FF-200D-2642-FE0F",
                    "non_qualified": "26F9-1F3FF-200D-2642",
                    "image": "26f9-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 49,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "26F9-FE0F",
            "a": "Man Bouncing Ball",
            "b": "26F9-FE0F-200D-2642-FE0F",
            "k": [
                49,
                0
            ],
            "o": 5
        },
        "woman-bouncing-ball": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "26F9-1F3FB-200D-2640-FE0F",
                    "non_qualified": "26F9-1F3FB-200D-2640",
                    "image": "26f9-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 48,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "26F9-1F3FC-200D-2640-FE0F",
                    "non_qualified": "26F9-1F3FC-200D-2640",
                    "image": "26f9-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 48,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "26F9-1F3FD-200D-2640-FE0F",
                    "non_qualified": "26F9-1F3FD-200D-2640",
                    "image": "26f9-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 48,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "26F9-1F3FE-200D-2640-FE0F",
                    "non_qualified": "26F9-1F3FE-200D-2640",
                    "image": "26f9-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 48,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "26F9-1F3FF-200D-2640-FE0F",
                    "non_qualified": "26F9-1F3FF-200D-2640",
                    "image": "26f9-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 48,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Bouncing Ball",
            "b": "26F9-FE0F-200D-2640-FE0F",
            "k": [
                48,
                46
            ],
            "o": 5
        },
        "weight_lifter": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CB-1F3FB",
                    "non_qualified": null,
                    "image": "1f3cb-1f3fb.png",
                    "sheet_x": 11,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CB-1F3FC",
                    "non_qualified": null,
                    "image": "1f3cb-1f3fc.png",
                    "sheet_x": 11,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CB-1F3FD",
                    "non_qualified": null,
                    "image": "1f3cb-1f3fd.png",
                    "sheet_x": 11,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CB-1F3FE",
                    "non_qualified": null,
                    "image": "1f3cb-1f3fe.png",
                    "sheet_x": 11,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CB-1F3FF",
                    "non_qualified": null,
                    "image": "1f3cb-1f3ff.png",
                    "sheet_x": 11,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoleted_by": "1F3CB-FE0F-200D-2642-FE0F",
            "a": "Weight Lifter",
            "b": "1F3CB-FE0F",
            "c": "1F3CB",
            "k": [
                11,
                6
            ],
            "o": 7
        },
        "man-lifting-weights": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CB-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F3CB-1F3FB-200D-2642",
                    "image": "1f3cb-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CB-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F3CB-1F3FC-200D-2642",
                    "image": "1f3cb-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CB-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F3CB-1F3FD-200D-2642",
                    "image": "1f3cb-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CB-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F3CB-1F3FE-200D-2642",
                    "image": "1f3cb-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CB-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F3CB-1F3FF-200D-2642",
                    "image": "1f3cb-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 11,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F3CB-FE0F",
            "a": "Man Lifting Weights",
            "b": "1F3CB-FE0F-200D-2642-FE0F",
            "k": [
                11,
                0
            ],
            "o": 7
        },
        "woman-lifting-weights": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F3CB-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F3CB-1F3FB-200D-2640",
                    "image": "1f3cb-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F3CB-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F3CB-1F3FC-200D-2640",
                    "image": "1f3cb-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F3CB-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F3CB-1F3FD-200D-2640",
                    "image": "1f3cb-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F3CB-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F3CB-1F3FE-200D-2640",
                    "image": "1f3cb-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F3CB-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F3CB-1F3FF-200D-2640",
                    "image": "1f3cb-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 10,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Lifting Weights",
            "b": "1F3CB-FE0F-200D-2640-FE0F",
            "k": [
                10,
                46
            ],
            "o": 7
        },
        "bicyclist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B4-1F3FB",
                    "non_qualified": null,
                    "image": "1f6b4-1f3fb.png",
                    "sheet_x": 35,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F6B4-1F3FC",
                    "non_qualified": null,
                    "image": "1f6b4-1f3fc.png",
                    "sheet_x": 35,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F6B4-1F3FD",
                    "non_qualified": null,
                    "image": "1f6b4-1f3fd.png",
                    "sheet_x": 35,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F6B4-1F3FE",
                    "non_qualified": null,
                    "image": "1f6b4-1f3fe.png",
                    "sheet_x": 35,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F6B4-1F3FF",
                    "non_qualified": null,
                    "image": "1f6b4-1f3ff.png",
                    "sheet_x": 35,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F6B4-200D-2642-FE0F",
            "a": "Bicyclist",
            "b": "1F6B4",
            "k": [
                35,
                37
            ]
        },
        "man-biking": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B4-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F6B4-1F3FB-200D-2642",
                    "image": "1f6b4-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6B4-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F6B4-1F3FC-200D-2642",
                    "image": "1f6b4-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6B4-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F6B4-1F3FD-200D-2642",
                    "image": "1f6b4-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6B4-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F6B4-1F3FE-200D-2642",
                    "image": "1f6b4-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6B4-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F6B4-1F3FF-200D-2642",
                    "image": "1f6b4-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F6B4",
            "a": "Man Biking",
            "b": "1F6B4-200D-2642-FE0F",
            "c": "1F6B4-200D-2642",
            "k": [
                35,
                31
            ]
        },
        "woman-biking": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B4-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F6B4-1F3FB-200D-2640",
                    "image": "1f6b4-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6B4-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F6B4-1F3FC-200D-2640",
                    "image": "1f6b4-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6B4-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F6B4-1F3FD-200D-2640",
                    "image": "1f6b4-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6B4-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F6B4-1F3FE-200D-2640",
                    "image": "1f6b4-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6B4-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F6B4-1F3FF-200D-2640",
                    "image": "1f6b4-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Biking",
            "b": "1F6B4-200D-2640-FE0F",
            "c": "1F6B4-200D-2640",
            "k": [
                35,
                25
            ]
        },
        "mountain_bicyclist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B5-1F3FB",
                    "non_qualified": null,
                    "image": "1f6b5-1f3fb.png",
                    "sheet_x": 36,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F6B5-1F3FC",
                    "non_qualified": null,
                    "image": "1f6b5-1f3fc.png",
                    "sheet_x": 36,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F6B5-1F3FD",
                    "non_qualified": null,
                    "image": "1f6b5-1f3fd.png",
                    "sheet_x": 36,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F6B5-1F3FE",
                    "non_qualified": null,
                    "image": "1f6b5-1f3fe.png",
                    "sheet_x": 36,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F6B5-1F3FF",
                    "non_qualified": null,
                    "image": "1f6b5-1f3ff.png",
                    "sheet_x": 36,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": true
                }
            },
            "obsoleted_by": "1F6B5-200D-2642-FE0F",
            "a": "Mountain Bicyclist",
            "b": "1F6B5",
            "k": [
                36,
                3
            ]
        },
        "man-mountain-biking": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B5-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F6B5-1F3FB-200D-2642",
                    "image": "1f6b5-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6B5-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F6B5-1F3FC-200D-2642",
                    "image": "1f6b5-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6B5-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F6B5-1F3FD-200D-2642",
                    "image": "1f6b5-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6B5-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F6B5-1F3FE-200D-2642",
                    "image": "1f6b5-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6B5-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F6B5-1F3FF-200D-2642",
                    "image": "1f6b5-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 36,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "obsoletes": "1F6B5",
            "a": "Man Mountain Biking",
            "b": "1F6B5-200D-2642-FE0F",
            "c": "1F6B5-200D-2642",
            "k": [
                35,
                49
            ]
        },
        "woman-mountain-biking": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F6B5-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F6B5-1F3FB-200D-2640",
                    "image": "1f6b5-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F6B5-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F6B5-1F3FC-200D-2640",
                    "image": "1f6b5-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F6B5-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F6B5-1F3FD-200D-2640",
                    "image": "1f6b5-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F6B5-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F6B5-1F3FE-200D-2640",
                    "image": "1f6b5-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F6B5-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F6B5-1F3FF-200D-2640",
                    "image": "1f6b5-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 35,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Mountain Biking",
            "b": "1F6B5-200D-2640-FE0F",
            "c": "1F6B5-200D-2640",
            "k": [
                35,
                43
            ]
        },
        "racing_car": {
            "a": "Racing Car",
            "b": "1F3CE-FE0F",
            "c": "1F3CE",
            "j": [
                "sports",
                "race",
                "fast",
                "formula",
                "f1"
            ],
            "k": [
                11,
                31
            ],
            "o": 7
        },
        "racing_motorcycle": {
            "a": "Racing Motorcycle",
            "b": "1F3CD-FE0F",
            "c": "1F3CD",
            "k": [
                11,
                30
            ],
            "o": 7
        },
        "person_doing_cartwheel": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F938-1F3FB",
                    "non_qualified": null,
                    "image": "1f938-1f3fb.png",
                    "sheet_x": 40,
                    "sheet_y": 25,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F938-1F3FC",
                    "non_qualified": null,
                    "image": "1f938-1f3fc.png",
                    "sheet_x": 40,
                    "sheet_y": 26,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F938-1F3FD",
                    "non_qualified": null,
                    "image": "1f938-1f3fd.png",
                    "sheet_x": 40,
                    "sheet_y": 27,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F938-1F3FE",
                    "non_qualified": null,
                    "image": "1f938-1f3fe.png",
                    "sheet_x": 40,
                    "sheet_y": 28,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F938-1F3FF",
                    "non_qualified": null,
                    "image": "1f938-1f3ff.png",
                    "sheet_x": 40,
                    "sheet_y": 29,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Person Doing Cartwheel",
            "b": "1F938",
            "k": [
                40,
                24
            ],
            "o": 9
        },
        "man-cartwheeling": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F938-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F938-1F3FB-200D-2642",
                    "image": "1f938-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 19,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F938-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F938-1F3FC-200D-2642",
                    "image": "1f938-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 20,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F938-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F938-1F3FD-200D-2642",
                    "image": "1f938-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 21,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F938-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F938-1F3FE-200D-2642",
                    "image": "1f938-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 22,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F938-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F938-1F3FF-200D-2642",
                    "image": "1f938-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 23,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Cartwheeling",
            "b": "1F938-200D-2642-FE0F",
            "c": "1F938-200D-2642",
            "k": [
                40,
                18
            ],
            "o": 9
        },
        "woman-cartwheeling": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F938-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F938-1F3FB-200D-2640",
                    "image": "1f938-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 13,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F938-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F938-1F3FC-200D-2640",
                    "image": "1f938-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 14,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F938-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F938-1F3FD-200D-2640",
                    "image": "1f938-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 15,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F938-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F938-1F3FE-200D-2640",
                    "image": "1f938-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 16,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F938-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F938-1F3FF-200D-2640",
                    "image": "1f938-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 17,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Cartwheeling",
            "b": "1F938-200D-2640-FE0F",
            "c": "1F938-200D-2640",
            "k": [
                40,
                12
            ],
            "o": 9
        },
        "wrestlers": {
            "a": "Wrestlers",
            "b": "1F93C",
            "k": [
                40,
                51
            ],
            "o": 9
        },
        "man-wrestling": {
            "a": "Man Wrestling",
            "b": "1F93C-200D-2642-FE0F",
            "c": "1F93C-200D-2642",
            "k": [
                40,
                50
            ],
            "o": 9
        },
        "woman-wrestling": {
            "a": "Woman Wrestling",
            "b": "1F93C-200D-2640-FE0F",
            "c": "1F93C-200D-2640",
            "k": [
                40,
                49
            ],
            "o": 9
        },
        "water_polo": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F93D-1F3FB",
                    "non_qualified": null,
                    "image": "1f93d-1f3fb.png",
                    "sheet_x": 41,
                    "sheet_y": 13,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F93D-1F3FC",
                    "non_qualified": null,
                    "image": "1f93d-1f3fc.png",
                    "sheet_x": 41,
                    "sheet_y": 14,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F93D-1F3FD",
                    "non_qualified": null,
                    "image": "1f93d-1f3fd.png",
                    "sheet_x": 41,
                    "sheet_y": 15,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F93D-1F3FE",
                    "non_qualified": null,
                    "image": "1f93d-1f3fe.png",
                    "sheet_x": 41,
                    "sheet_y": 16,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F93D-1F3FF",
                    "non_qualified": null,
                    "image": "1f93d-1f3ff.png",
                    "sheet_x": 41,
                    "sheet_y": 17,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Water Polo",
            "b": "1F93D",
            "k": [
                41,
                12
            ],
            "o": 9
        },
        "man-playing-water-polo": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F93D-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F93D-1F3FB-200D-2642",
                    "image": "1f93d-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 7,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F93D-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F93D-1F3FC-200D-2642",
                    "image": "1f93d-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 8,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F93D-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F93D-1F3FD-200D-2642",
                    "image": "1f93d-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 9,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F93D-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F93D-1F3FE-200D-2642",
                    "image": "1f93d-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 10,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F93D-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F93D-1F3FF-200D-2642",
                    "image": "1f93d-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 11,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Playing Water Polo",
            "b": "1F93D-200D-2642-FE0F",
            "c": "1F93D-200D-2642",
            "k": [
                41,
                6
            ],
            "o": 9
        },
        "woman-playing-water-polo": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F93D-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F93D-1F3FB-200D-2640",
                    "image": "1f93d-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 1,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F93D-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F93D-1F3FC-200D-2640",
                    "image": "1f93d-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 2,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F93D-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F93D-1F3FD-200D-2640",
                    "image": "1f93d-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 3,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F93D-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F93D-1F3FE-200D-2640",
                    "image": "1f93d-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 4,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F93D-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F93D-1F3FF-200D-2640",
                    "image": "1f93d-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 5,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Playing Water Polo",
            "b": "1F93D-200D-2640-FE0F",
            "c": "1F93D-200D-2640",
            "k": [
                41,
                0
            ],
            "o": 9
        },
        "handball": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F93E-1F3FB",
                    "non_qualified": null,
                    "image": "1f93e-1f3fb.png",
                    "sheet_x": 41,
                    "sheet_y": 31,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F93E-1F3FC",
                    "non_qualified": null,
                    "image": "1f93e-1f3fc.png",
                    "sheet_x": 41,
                    "sheet_y": 32,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F93E-1F3FD",
                    "non_qualified": null,
                    "image": "1f93e-1f3fd.png",
                    "sheet_x": 41,
                    "sheet_y": 33,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F93E-1F3FE",
                    "non_qualified": null,
                    "image": "1f93e-1f3fe.png",
                    "sheet_x": 41,
                    "sheet_y": 34,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F93E-1F3FF",
                    "non_qualified": null,
                    "image": "1f93e-1f3ff.png",
                    "sheet_x": 41,
                    "sheet_y": 35,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Handball",
            "b": "1F93E",
            "k": [
                41,
                30
            ],
            "o": 9
        },
        "man-playing-handball": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F93E-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F93E-1F3FB-200D-2642",
                    "image": "1f93e-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 25,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F93E-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F93E-1F3FC-200D-2642",
                    "image": "1f93e-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 26,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F93E-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F93E-1F3FD-200D-2642",
                    "image": "1f93e-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 27,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F93E-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F93E-1F3FE-200D-2642",
                    "image": "1f93e-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 28,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F93E-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F93E-1F3FF-200D-2642",
                    "image": "1f93e-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 29,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Playing Handball",
            "b": "1F93E-200D-2642-FE0F",
            "c": "1F93E-200D-2642",
            "k": [
                41,
                24
            ],
            "o": 9
        },
        "woman-playing-handball": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F93E-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F93E-1F3FB-200D-2640",
                    "image": "1f93e-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 19,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F93E-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F93E-1F3FC-200D-2640",
                    "image": "1f93e-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 20,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F93E-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F93E-1F3FD-200D-2640",
                    "image": "1f93e-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 21,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F93E-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F93E-1F3FE-200D-2640",
                    "image": "1f93e-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 22,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F93E-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F93E-1F3FF-200D-2640",
                    "image": "1f93e-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 41,
                    "sheet_y": 23,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Playing Handball",
            "b": "1F93E-200D-2640-FE0F",
            "c": "1F93E-200D-2640",
            "k": [
                41,
                18
            ],
            "o": 9
        },
        "juggling": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F939-1F3FB",
                    "non_qualified": null,
                    "image": "1f939-1f3fb.png",
                    "sheet_x": 40,
                    "sheet_y": 43,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F939-1F3FC",
                    "non_qualified": null,
                    "image": "1f939-1f3fc.png",
                    "sheet_x": 40,
                    "sheet_y": 44,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F939-1F3FD",
                    "non_qualified": null,
                    "image": "1f939-1f3fd.png",
                    "sheet_x": 40,
                    "sheet_y": 45,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F939-1F3FE",
                    "non_qualified": null,
                    "image": "1f939-1f3fe.png",
                    "sheet_x": 40,
                    "sheet_y": 46,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F939-1F3FF",
                    "non_qualified": null,
                    "image": "1f939-1f3ff.png",
                    "sheet_x": 40,
                    "sheet_y": 47,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Juggling",
            "b": "1F939",
            "k": [
                40,
                42
            ],
            "o": 9
        },
        "man-juggling": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F939-1F3FB-200D-2642-FE0F",
                    "non_qualified": "1F939-1F3FB-200D-2642",
                    "image": "1f939-1f3fb-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 37,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F939-1F3FC-200D-2642-FE0F",
                    "non_qualified": "1F939-1F3FC-200D-2642",
                    "image": "1f939-1f3fc-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 38,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F939-1F3FD-200D-2642-FE0F",
                    "non_qualified": "1F939-1F3FD-200D-2642",
                    "image": "1f939-1f3fd-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 39,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F939-1F3FE-200D-2642-FE0F",
                    "non_qualified": "1F939-1F3FE-200D-2642",
                    "image": "1f939-1f3fe-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 40,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F939-1F3FF-200D-2642-FE0F",
                    "non_qualified": "1F939-1F3FF-200D-2642",
                    "image": "1f939-1f3ff-200d-2642-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 41,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Man Juggling",
            "b": "1F939-200D-2642-FE0F",
            "c": "1F939-200D-2642",
            "k": [
                40,
                36
            ],
            "o": 9
        },
        "woman-juggling": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F939-1F3FB-200D-2640-FE0F",
                    "non_qualified": "1F939-1F3FB-200D-2640",
                    "image": "1f939-1f3fb-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 31,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F939-1F3FC-200D-2640-FE0F",
                    "non_qualified": "1F939-1F3FC-200D-2640",
                    "image": "1f939-1f3fc-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 32,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F939-1F3FD-200D-2640-FE0F",
                    "non_qualified": "1F939-1F3FD-200D-2640",
                    "image": "1f939-1f3fd-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 33,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F939-1F3FE-200D-2640-FE0F",
                    "non_qualified": "1F939-1F3FE-200D-2640",
                    "image": "1f939-1f3fe-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 34,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F939-1F3FF-200D-2640-FE0F",
                    "non_qualified": "1F939-1F3FF-200D-2640",
                    "image": "1f939-1f3ff-200d-2640-fe0f.png",
                    "sheet_x": 40,
                    "sheet_y": 35,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": false,
                    "has_img_messenger": false
                }
            },
            "a": "Woman Juggling",
            "b": "1F939-200D-2640-FE0F",
            "c": "1F939-200D-2640",
            "k": [
                40,
                30
            ],
            "o": 9
        },
        "couple": {
            "a": "Man and Woman Holding Hands",
            "b": "1F46B",
            "j": [
                "pair",
                "people",
                "human",
                "love",
                "date",
                "dating",
                "like",
                "affection",
                "valentines",
                "marriage"
            ],
            "k": [
                20,
                30
            ],
            "n": [
                "man_and_woman_holding_hands"
            ]
        },
        "two_men_holding_hands": {
            "a": "Two Men Holding Hands",
            "b": "1F46C",
            "j": [
                "pair",
                "couple",
                "love",
                "like",
                "bromance",
                "friendship",
                "people",
                "human"
            ],
            "k": [
                20,
                31
            ]
        },
        "two_women_holding_hands": {
            "a": "Two Women Holding Hands",
            "b": "1F46D",
            "j": [
                "pair",
                "friendship",
                "couple",
                "love",
                "like",
                "female",
                "people",
                "human"
            ],
            "k": [
                20,
                32
            ]
        },
        "couplekiss": {
            "obsoleted_by": "1F469-200D-2764-FE0F-200D-1F48B-200D-1F468",
            "a": "Kiss",
            "b": "1F48F",
            "k": [
                24,
                41
            ]
        },
        "woman-kiss-man": {
            "obsoletes": "1F48F",
            "a": "Woman Kiss Man",
            "b": "1F469-200D-2764-FE0F-200D-1F48B-200D-1F468",
            "c": "1F469-200D-2764-200D-1F48B-200D-1F468",
            "k": [
                20,
                21
            ]
        },
        "man-kiss-man": {
            "a": "Man Kiss Man",
            "b": "1F468-200D-2764-FE0F-200D-1F48B-200D-1F468",
            "c": "1F468-200D-2764-200D-1F48B-200D-1F468",
            "k": [
                18,
                10
            ]
        },
        "woman-kiss-woman": {
            "a": "Woman Kiss Woman",
            "b": "1F469-200D-2764-FE0F-200D-1F48B-200D-1F469",
            "c": "1F469-200D-2764-200D-1F48B-200D-1F469",
            "k": [
                20,
                22
            ]
        },
        "couple_with_heart": {
            "obsoleted_by": "1F469-200D-2764-FE0F-200D-1F468",
            "a": "Couple with Heart",
            "b": "1F491",
            "k": [
                24,
                43
            ]
        },
        "woman-heart-man": {
            "obsoletes": "1F491",
            "a": "Woman Heart Man",
            "b": "1F469-200D-2764-FE0F-200D-1F468",
            "c": "1F469-200D-2764-200D-1F468",
            "k": [
                20,
                19
            ]
        },
        "man-heart-man": {
            "a": "Man Heart Man",
            "b": "1F468-200D-2764-FE0F-200D-1F468",
            "c": "1F468-200D-2764-200D-1F468",
            "k": [
                18,
                9
            ]
        },
        "woman-heart-woman": {
            "a": "Woman Heart Woman",
            "b": "1F469-200D-2764-FE0F-200D-1F469",
            "c": "1F469-200D-2764-200D-1F469",
            "k": [
                20,
                20
            ]
        },
        "family": {
            "obsoleted_by": "1F468-200D-1F469-200D-1F466",
            "a": "Family",
            "b": "1F46A",
            "k": [
                20,
                29
            ],
            "n": [
                "man-woman-boy"
            ]
        },
        "man-woman-boy": {
            "obsoletes": "1F46A",
            "a": "Man Woman Boy",
            "b": "1F468-200D-1F469-200D-1F466",
            "k": [
                17,
                2
            ],
            "n": [
                "family"
            ]
        },
        "man-woman-girl": {
            "a": "Man Woman Girl",
            "b": "1F468-200D-1F469-200D-1F467",
            "k": [
                17,
                4
            ]
        },
        "man-woman-girl-boy": {
            "a": "Man Woman Girl Boy",
            "b": "1F468-200D-1F469-200D-1F467-200D-1F466",
            "k": [
                17,
                5
            ]
        },
        "man-woman-boy-boy": {
            "a": "Man Woman Boy Boy",
            "b": "1F468-200D-1F469-200D-1F466-200D-1F466",
            "k": [
                17,
                3
            ]
        },
        "man-woman-girl-girl": {
            "a": "Man Woman Girl Girl",
            "b": "1F468-200D-1F469-200D-1F467-200D-1F467",
            "k": [
                17,
                6
            ]
        },
        "man-man-boy": {
            "a": "Man Man Boy",
            "b": "1F468-200D-1F468-200D-1F466",
            "k": [
                16,
                49
            ]
        },
        "man-man-girl": {
            "a": "Man Man Girl",
            "b": "1F468-200D-1F468-200D-1F467",
            "k": [
                16,
                51
            ]
        },
        "man-man-girl-boy": {
            "a": "Man Man Girl Boy",
            "b": "1F468-200D-1F468-200D-1F467-200D-1F466",
            "k": [
                17,
                0
            ]
        },
        "man-man-boy-boy": {
            "a": "Man Man Boy Boy",
            "b": "1F468-200D-1F468-200D-1F466-200D-1F466",
            "k": [
                16,
                50
            ]
        },
        "man-man-girl-girl": {
            "a": "Man Man Girl Girl",
            "b": "1F468-200D-1F468-200D-1F467-200D-1F467",
            "k": [
                17,
                1
            ]
        },
        "woman-woman-boy": {
            "a": "Woman Woman Boy",
            "b": "1F469-200D-1F469-200D-1F466",
            "k": [
                19,
                12
            ]
        },
        "woman-woman-girl": {
            "a": "Woman Woman Girl",
            "b": "1F469-200D-1F469-200D-1F467",
            "k": [
                19,
                14
            ]
        },
        "woman-woman-girl-boy": {
            "a": "Woman Woman Girl Boy",
            "b": "1F469-200D-1F469-200D-1F467-200D-1F466",
            "k": [
                19,
                15
            ]
        },
        "woman-woman-boy-boy": {
            "a": "Woman Woman Boy Boy",
            "b": "1F469-200D-1F469-200D-1F466-200D-1F466",
            "k": [
                19,
                13
            ]
        },
        "woman-woman-girl-girl": {
            "a": "Woman Woman Girl Girl",
            "b": "1F469-200D-1F469-200D-1F467-200D-1F467",
            "k": [
                19,
                16
            ]
        },
        "man-boy": {
            "a": "Man Boy",
            "b": "1F468-200D-1F466",
            "k": [
                16,
                45
            ]
        },
        "man-boy-boy": {
            "a": "Man Boy Boy",
            "b": "1F468-200D-1F466-200D-1F466",
            "k": [
                16,
                44
            ]
        },
        "man-girl": {
            "a": "Man Girl",
            "b": "1F468-200D-1F467",
            "k": [
                16,
                48
            ]
        },
        "man-girl-boy": {
            "a": "Man Girl Boy",
            "b": "1F468-200D-1F467-200D-1F466",
            "k": [
                16,
                46
            ]
        },
        "man-girl-girl": {
            "a": "Man Girl Girl",
            "b": "1F468-200D-1F467-200D-1F467",
            "k": [
                16,
                47
            ]
        },
        "woman-boy": {
            "a": "Woman Boy",
            "b": "1F469-200D-1F466",
            "k": [
                19,
                8
            ]
        },
        "woman-boy-boy": {
            "a": "Woman Boy Boy",
            "b": "1F469-200D-1F466-200D-1F466",
            "k": [
                19,
                7
            ]
        },
        "woman-girl": {
            "a": "Woman Girl",
            "b": "1F469-200D-1F467",
            "k": [
                19,
                11
            ]
        },
        "woman-girl-boy": {
            "a": "Woman Girl Boy",
            "b": "1F469-200D-1F467-200D-1F466",
            "k": [
                19,
                9
            ]
        },
        "woman-girl-girl": {
            "a": "Woman Girl Girl",
            "b": "1F469-200D-1F467-200D-1F467",
            "k": [
                19,
                10
            ]
        },
        "selfie": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F933-1F3FB",
                    "non_qualified": null,
                    "image": "1f933-1f3fb.png",
                    "sheet_x": 39,
                    "sheet_y": 23,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F933-1F3FC",
                    "non_qualified": null,
                    "image": "1f933-1f3fc.png",
                    "sheet_x": 39,
                    "sheet_y": 24,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F933-1F3FD",
                    "non_qualified": null,
                    "image": "1f933-1f3fd.png",
                    "sheet_x": 39,
                    "sheet_y": 25,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F933-1F3FE",
                    "non_qualified": null,
                    "image": "1f933-1f3fe.png",
                    "sheet_x": 39,
                    "sheet_y": 26,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F933-1F3FF",
                    "non_qualified": null,
                    "image": "1f933-1f3ff.png",
                    "sheet_x": 39,
                    "sheet_y": 27,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Selfie",
            "b": "1F933",
            "j": [
                "camera",
                "phone"
            ],
            "k": [
                39,
                22
            ],
            "o": 9
        },
        "muscle": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F4AA-1F3FB",
                    "non_qualified": null,
                    "image": "1f4aa-1f3fb.png",
                    "sheet_x": 25,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F4AA-1F3FC",
                    "non_qualified": null,
                    "image": "1f4aa-1f3fc.png",
                    "sheet_x": 25,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F4AA-1F3FD",
                    "non_qualified": null,
                    "image": "1f4aa-1f3fd.png",
                    "sheet_x": 25,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F4AA-1F3FE",
                    "non_qualified": null,
                    "image": "1f4aa-1f3fe.png",
                    "sheet_x": 25,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F4AA-1F3FF",
                    "non_qualified": null,
                    "image": "1f4aa-1f3ff.png",
                    "sheet_x": 25,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Flexed Biceps",
            "b": "1F4AA",
            "j": [
                "arm",
                "flex",
                "hand",
                "summer",
                "strong",
                "biceps"
            ],
            "k": [
                25,
                16
            ]
        },
        "point_left": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F448-1F3FB",
                    "non_qualified": null,
                    "image": "1f448-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F448-1F3FC",
                    "non_qualified": null,
                    "image": "1f448-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F448-1F3FD",
                    "non_qualified": null,
                    "image": "1f448-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F448-1F3FE",
                    "non_qualified": null,
                    "image": "1f448-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F448-1F3FF",
                    "non_qualified": null,
                    "image": "1f448-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 24,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "White Left Pointing Backhand Index",
            "b": "1F448",
            "j": [
                "direction",
                "fingers",
                "hand",
                "left"
            ],
            "k": [
                14,
                19
            ]
        },
        "point_right": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F449-1F3FB",
                    "non_qualified": null,
                    "image": "1f449-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F449-1F3FC",
                    "non_qualified": null,
                    "image": "1f449-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F449-1F3FD",
                    "non_qualified": null,
                    "image": "1f449-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F449-1F3FE",
                    "non_qualified": null,
                    "image": "1f449-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F449-1F3FF",
                    "non_qualified": null,
                    "image": "1f449-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "White Right Pointing Backhand Index",
            "b": "1F449",
            "j": [
                "fingers",
                "hand",
                "direction",
                "right"
            ],
            "k": [
                14,
                25
            ]
        },
        "point_up": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "261D-1F3FB",
                    "non_qualified": null,
                    "image": "261d-1f3fb.png",
                    "sheet_x": 47,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "261D-1F3FC",
                    "non_qualified": null,
                    "image": "261d-1f3fc.png",
                    "sheet_x": 47,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "261D-1F3FD",
                    "non_qualified": null,
                    "image": "261d-1f3fd.png",
                    "sheet_x": 47,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "261D-1F3FE",
                    "non_qualified": null,
                    "image": "261d-1f3fe.png",
                    "sheet_x": 47,
                    "sheet_y": 30,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "261D-1F3FF",
                    "non_qualified": null,
                    "image": "261d-1f3ff.png",
                    "sheet_x": 47,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "White Up Pointing Index",
            "b": "261D-FE0F",
            "c": "261D",
            "j": [
                "hand",
                "fingers",
                "direction",
                "up"
            ],
            "k": [
                47,
                26
            ],
            "o": 1
        },
        "point_up_2": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F446-1F3FB",
                    "non_qualified": null,
                    "image": "1f446-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F446-1F3FC",
                    "non_qualified": null,
                    "image": "1f446-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 9,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F446-1F3FD",
                    "non_qualified": null,
                    "image": "1f446-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F446-1F3FE",
                    "non_qualified": null,
                    "image": "1f446-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F446-1F3FF",
                    "non_qualified": null,
                    "image": "1f446-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "White Up Pointing Backhand Index",
            "b": "1F446",
            "j": [
                "fingers",
                "hand",
                "direction",
                "up"
            ],
            "k": [
                14,
                7
            ]
        },
        "middle_finger": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F595-1F3FB",
                    "non_qualified": null,
                    "image": "1f595-1f3fb.png",
                    "sheet_x": 29,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F595-1F3FC",
                    "non_qualified": null,
                    "image": "1f595-1f3fc.png",
                    "sheet_x": 29,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F595-1F3FD",
                    "non_qualified": null,
                    "image": "1f595-1f3fd.png",
                    "sheet_x": 29,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F595-1F3FE",
                    "non_qualified": null,
                    "image": "1f595-1f3fe.png",
                    "sheet_x": 29,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F595-1F3FF",
                    "non_qualified": null,
                    "image": "1f595-1f3ff.png",
                    "sheet_x": 29,
                    "sheet_y": 43,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Reversed Hand with Middle Finger Extended",
            "b": "1F595",
            "k": [
                29,
                38
            ],
            "n": [
                "reversed_hand_with_middle_finger_extended"
            ],
            "o": 7
        },
        "point_down": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F447-1F3FB",
                    "non_qualified": null,
                    "image": "1f447-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F447-1F3FC",
                    "non_qualified": null,
                    "image": "1f447-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F447-1F3FD",
                    "non_qualified": null,
                    "image": "1f447-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F447-1F3FE",
                    "non_qualified": null,
                    "image": "1f447-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F447-1F3FF",
                    "non_qualified": null,
                    "image": "1f447-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "White Down Pointing Backhand Index",
            "b": "1F447",
            "j": [
                "fingers",
                "hand",
                "direction",
                "down"
            ],
            "k": [
                14,
                13
            ]
        },
        "v": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "270C-1F3FB",
                    "non_qualified": null,
                    "image": "270c-1f3fb.png",
                    "sheet_x": 49,
                    "sheet_y": 31,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "270C-1F3FC",
                    "non_qualified": null,
                    "image": "270c-1f3fc.png",
                    "sheet_x": 49,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "270C-1F3FD",
                    "non_qualified": null,
                    "image": "270c-1f3fd.png",
                    "sheet_x": 49,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "270C-1F3FE",
                    "non_qualified": null,
                    "image": "270c-1f3fe.png",
                    "sheet_x": 49,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "270C-1F3FF",
                    "non_qualified": null,
                    "image": "270c-1f3ff.png",
                    "sheet_x": 49,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Victory Hand",
            "b": "270C-FE0F",
            "c": "270C",
            "j": [
                "fingers",
                "ohyeah",
                "hand",
                "peace",
                "victory",
                "two"
            ],
            "k": [
                49,
                30
            ],
            "o": 1
        },
        "crossed_fingers": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F91E-1F3FB",
                    "non_qualified": null,
                    "image": "1f91e-1f3fb.png",
                    "sheet_x": 38,
                    "sheet_y": 12,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F91E-1F3FC",
                    "non_qualified": null,
                    "image": "1f91e-1f3fc.png",
                    "sheet_x": 38,
                    "sheet_y": 13,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F91E-1F3FD",
                    "non_qualified": null,
                    "image": "1f91e-1f3fd.png",
                    "sheet_x": 38,
                    "sheet_y": 14,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F91E-1F3FE",
                    "non_qualified": null,
                    "image": "1f91e-1f3fe.png",
                    "sheet_x": 38,
                    "sheet_y": 15,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F91E-1F3FF",
                    "non_qualified": null,
                    "image": "1f91e-1f3ff.png",
                    "sheet_x": 38,
                    "sheet_y": 16,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Hand with Index and Middle Fingers Crossed",
            "b": "1F91E",
            "j": [
                "good",
                "lucky"
            ],
            "k": [
                38,
                11
            ],
            "n": [
                "hand_with_index_and_middle_fingers_crossed"
            ],
            "o": 9
        },
        "spock-hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F596-1F3FB",
                    "non_qualified": null,
                    "image": "1f596-1f3fb.png",
                    "sheet_x": 29,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F596-1F3FC",
                    "non_qualified": null,
                    "image": "1f596-1f3fc.png",
                    "sheet_x": 29,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F596-1F3FD",
                    "non_qualified": null,
                    "image": "1f596-1f3fd.png",
                    "sheet_x": 29,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F596-1F3FE",
                    "non_qualified": null,
                    "image": "1f596-1f3fe.png",
                    "sheet_x": 29,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F596-1F3FF",
                    "non_qualified": null,
                    "image": "1f596-1f3ff.png",
                    "sheet_x": 29,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Raised Hand with Part Between Middle and Ring Fingers",
            "b": "1F596",
            "k": [
                29,
                44
            ],
            "o": 7
        },
        "the_horns": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F918-1F3FB",
                    "non_qualified": null,
                    "image": "1f918-1f3fb.png",
                    "sheet_x": 37,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F918-1F3FC",
                    "non_qualified": null,
                    "image": "1f918-1f3fc.png",
                    "sheet_x": 37,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F918-1F3FD",
                    "non_qualified": null,
                    "image": "1f918-1f3fd.png",
                    "sheet_x": 37,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F918-1F3FE",
                    "non_qualified": null,
                    "image": "1f918-1f3fe.png",
                    "sheet_x": 37,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F918-1F3FF",
                    "non_qualified": null,
                    "image": "1f918-1f3ff.png",
                    "sheet_x": 37,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Sign of the Horns",
            "b": "1F918",
            "k": [
                37,
                32
            ],
            "n": [
                "sign_of_the_horns"
            ],
            "o": 8
        },
        "call_me_hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F919-1F3FB",
                    "non_qualified": null,
                    "image": "1f919-1f3fb.png",
                    "sheet_x": 37,
                    "sheet_y": 39,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F919-1F3FC",
                    "non_qualified": null,
                    "image": "1f919-1f3fc.png",
                    "sheet_x": 37,
                    "sheet_y": 40,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F919-1F3FD",
                    "non_qualified": null,
                    "image": "1f919-1f3fd.png",
                    "sheet_x": 37,
                    "sheet_y": 41,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F919-1F3FE",
                    "non_qualified": null,
                    "image": "1f919-1f3fe.png",
                    "sheet_x": 37,
                    "sheet_y": 42,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F919-1F3FF",
                    "non_qualified": null,
                    "image": "1f919-1f3ff.png",
                    "sheet_x": 37,
                    "sheet_y": 43,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Call Me Hand",
            "b": "1F919",
            "j": [
                "hands",
                "gesture"
            ],
            "k": [
                37,
                38
            ],
            "o": 9
        },
        "raised_hand_with_fingers_splayed": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F590-1F3FB",
                    "non_qualified": null,
                    "image": "1f590-1f3fb.png",
                    "sheet_x": 29,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F590-1F3FC",
                    "non_qualified": null,
                    "image": "1f590-1f3fc.png",
                    "sheet_x": 29,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F590-1F3FD",
                    "non_qualified": null,
                    "image": "1f590-1f3fd.png",
                    "sheet_x": 29,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F590-1F3FE",
                    "non_qualified": null,
                    "image": "1f590-1f3fe.png",
                    "sheet_x": 29,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F590-1F3FF",
                    "non_qualified": null,
                    "image": "1f590-1f3ff.png",
                    "sheet_x": 29,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Raised Hand with Fingers Splayed",
            "b": "1F590-FE0F",
            "c": "1F590",
            "j": [
                "hand",
                "fingers",
                "palm"
            ],
            "k": [
                29,
                32
            ],
            "o": 7
        },
        "hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "270B-1F3FB",
                    "non_qualified": null,
                    "image": "270b-1f3fb.png",
                    "sheet_x": 49,
                    "sheet_y": 25,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "270B-1F3FC",
                    "non_qualified": null,
                    "image": "270b-1f3fc.png",
                    "sheet_x": 49,
                    "sheet_y": 26,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "270B-1F3FD",
                    "non_qualified": null,
                    "image": "270b-1f3fd.png",
                    "sheet_x": 49,
                    "sheet_y": 27,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "270B-1F3FE",
                    "non_qualified": null,
                    "image": "270b-1f3fe.png",
                    "sheet_x": 49,
                    "sheet_y": 28,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "270B-1F3FF",
                    "non_qualified": null,
                    "image": "270b-1f3ff.png",
                    "sheet_x": 49,
                    "sheet_y": 29,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Raised Hand",
            "b": "270B",
            "k": [
                49,
                24
            ],
            "n": [
                "raised_hand"
            ]
        },
        "ok_hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F44C-1F3FB",
                    "non_qualified": null,
                    "image": "1f44c-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 44,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F44C-1F3FC",
                    "non_qualified": null,
                    "image": "1f44c-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F44C-1F3FD",
                    "non_qualified": null,
                    "image": "1f44c-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F44C-1F3FE",
                    "non_qualified": null,
                    "image": "1f44c-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F44C-1F3FF",
                    "non_qualified": null,
                    "image": "1f44c-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Ok Hand Sign",
            "b": "1F44C",
            "j": [
                "fingers",
                "limbs",
                "perfect",
                "ok",
                "okay"
            ],
            "k": [
                14,
                43
            ]
        },
        "plus1": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F44D-1F3FB",
                    "non_qualified": null,
                    "image": "1f44d-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F44D-1F3FC",
                    "non_qualified": null,
                    "image": "1f44d-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 51,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F44D-1F3FD",
                    "non_qualified": null,
                    "image": "1f44d-1f3fd.png",
                    "sheet_x": 15,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F44D-1F3FE",
                    "non_qualified": null,
                    "image": "1f44d-1f3fe.png",
                    "sheet_x": 15,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F44D-1F3FF",
                    "non_qualified": null,
                    "image": "1f44d-1f3ff.png",
                    "sheet_x": 15,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Thumbs Up Sign",
            "b": "1F44D",
            "j": [
                "thumbsup",
                "yes",
                "awesome",
                "good",
                "agree",
                "accept",
                "cool",
                "hand",
                "like"
            ],
            "k": [
                14,
                49
            ],
            "n": [
                "thumbsup"
            ]
        },
        "-1": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F44E-1F3FB",
                    "non_qualified": null,
                    "image": "1f44e-1f3fb.png",
                    "sheet_x": 15,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F44E-1F3FC",
                    "non_qualified": null,
                    "image": "1f44e-1f3fc.png",
                    "sheet_x": 15,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F44E-1F3FD",
                    "non_qualified": null,
                    "image": "1f44e-1f3fd.png",
                    "sheet_x": 15,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F44E-1F3FE",
                    "non_qualified": null,
                    "image": "1f44e-1f3fe.png",
                    "sheet_x": 15,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F44E-1F3FF",
                    "non_qualified": null,
                    "image": "1f44e-1f3ff.png",
                    "sheet_x": 15,
                    "sheet_y": 8,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Thumbs Down Sign",
            "b": "1F44E",
            "j": [
                "thumbsdown",
                "no",
                "dislike",
                "hand"
            ],
            "k": [
                15,
                3
            ],
            "n": [
                "thumbsdown"
            ]
        },
        "fist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "270A-1F3FB",
                    "non_qualified": null,
                    "image": "270a-1f3fb.png",
                    "sheet_x": 49,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "270A-1F3FC",
                    "non_qualified": null,
                    "image": "270a-1f3fc.png",
                    "sheet_x": 49,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "270A-1F3FD",
                    "non_qualified": null,
                    "image": "270a-1f3fd.png",
                    "sheet_x": 49,
                    "sheet_y": 21,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "270A-1F3FE",
                    "non_qualified": null,
                    "image": "270a-1f3fe.png",
                    "sheet_x": 49,
                    "sheet_y": 22,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "270A-1F3FF",
                    "non_qualified": null,
                    "image": "270a-1f3ff.png",
                    "sheet_x": 49,
                    "sheet_y": 23,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Raised Fist",
            "b": "270A",
            "j": [
                "fingers",
                "hand",
                "grasp"
            ],
            "k": [
                49,
                18
            ]
        },
        "facepunch": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F44A-1F3FB",
                    "non_qualified": null,
                    "image": "1f44a-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 32,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F44A-1F3FC",
                    "non_qualified": null,
                    "image": "1f44a-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 33,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F44A-1F3FD",
                    "non_qualified": null,
                    "image": "1f44a-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 34,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F44A-1F3FE",
                    "non_qualified": null,
                    "image": "1f44a-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 35,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F44A-1F3FF",
                    "non_qualified": null,
                    "image": "1f44a-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 36,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Fisted Hand Sign",
            "b": "1F44A",
            "j": [
                "angry",
                "violence",
                "fist",
                "hit",
                "attack",
                "hand"
            ],
            "k": [
                14,
                31
            ],
            "n": [
                "punch"
            ]
        },
        "left-facing_fist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F91B-1F3FB",
                    "non_qualified": null,
                    "image": "1f91b-1f3fb.png",
                    "sheet_x": 37,
                    "sheet_y": 51,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F91B-1F3FC",
                    "non_qualified": null,
                    "image": "1f91b-1f3fc.png",
                    "sheet_x": 38,
                    "sheet_y": 0,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F91B-1F3FD",
                    "non_qualified": null,
                    "image": "1f91b-1f3fd.png",
                    "sheet_x": 38,
                    "sheet_y": 1,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F91B-1F3FE",
                    "non_qualified": null,
                    "image": "1f91b-1f3fe.png",
                    "sheet_x": 38,
                    "sheet_y": 2,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F91B-1F3FF",
                    "non_qualified": null,
                    "image": "1f91b-1f3ff.png",
                    "sheet_x": 38,
                    "sheet_y": 3,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Left-Facing Fist",
            "b": "1F91B",
            "k": [
                37,
                50
            ],
            "o": 9
        },
        "right-facing_fist": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F91C-1F3FB",
                    "non_qualified": null,
                    "image": "1f91c-1f3fb.png",
                    "sheet_x": 38,
                    "sheet_y": 5,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F91C-1F3FC",
                    "non_qualified": null,
                    "image": "1f91c-1f3fc.png",
                    "sheet_x": 38,
                    "sheet_y": 6,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F91C-1F3FD",
                    "non_qualified": null,
                    "image": "1f91c-1f3fd.png",
                    "sheet_x": 38,
                    "sheet_y": 7,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F91C-1F3FE",
                    "non_qualified": null,
                    "image": "1f91c-1f3fe.png",
                    "sheet_x": 38,
                    "sheet_y": 8,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F91C-1F3FF",
                    "non_qualified": null,
                    "image": "1f91c-1f3ff.png",
                    "sheet_x": 38,
                    "sheet_y": 9,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Right-Facing Fist",
            "b": "1F91C",
            "k": [
                38,
                4
            ],
            "o": 9
        },
        "raised_back_of_hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F91A-1F3FB",
                    "non_qualified": null,
                    "image": "1f91a-1f3fb.png",
                    "sheet_x": 37,
                    "sheet_y": 45,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F91A-1F3FC",
                    "non_qualified": null,
                    "image": "1f91a-1f3fc.png",
                    "sheet_x": 37,
                    "sheet_y": 46,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F91A-1F3FD",
                    "non_qualified": null,
                    "image": "1f91a-1f3fd.png",
                    "sheet_x": 37,
                    "sheet_y": 47,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F91A-1F3FE",
                    "non_qualified": null,
                    "image": "1f91a-1f3fe.png",
                    "sheet_x": 37,
                    "sheet_y": 48,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F91A-1F3FF",
                    "non_qualified": null,
                    "image": "1f91a-1f3ff.png",
                    "sheet_x": 37,
                    "sheet_y": 49,
                    "added_in": "9.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Raised Back of Hand",
            "b": "1F91A",
            "j": [
                "fingers",
                "raised",
                "backhand"
            ],
            "k": [
                37,
                44
            ],
            "o": 9
        },
        "wave": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F44B-1F3FB",
                    "non_qualified": null,
                    "image": "1f44b-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F44B-1F3FC",
                    "non_qualified": null,
                    "image": "1f44b-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F44B-1F3FD",
                    "non_qualified": null,
                    "image": "1f44b-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F44B-1F3FE",
                    "non_qualified": null,
                    "image": "1f44b-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F44B-1F3FF",
                    "non_qualified": null,
                    "image": "1f44b-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 42,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Waving Hand Sign",
            "b": "1F44B",
            "j": [
                "hands",
                "gesture",
                "goodbye",
                "solong",
                "farewell",
                "hello",
                "hi",
                "palm"
            ],
            "k": [
                14,
                37
            ]
        },
        "i_love_you_hand_sign": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F91F-1F3FB",
                    "non_qualified": null,
                    "image": "1f91f-1f3fb.png",
                    "sheet_x": 38,
                    "sheet_y": 18,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F91F-1F3FC",
                    "non_qualified": null,
                    "image": "1f91f-1f3fc.png",
                    "sheet_x": 38,
                    "sheet_y": 19,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F91F-1F3FD",
                    "non_qualified": null,
                    "image": "1f91f-1f3fd.png",
                    "sheet_x": 38,
                    "sheet_y": 20,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F91F-1F3FE",
                    "non_qualified": null,
                    "image": "1f91f-1f3fe.png",
                    "sheet_x": 38,
                    "sheet_y": 21,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F91F-1F3FF",
                    "non_qualified": null,
                    "image": "1f91f-1f3ff.png",
                    "sheet_x": 38,
                    "sheet_y": 22,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "I Love You Hand Sign",
            "b": "1F91F",
            "k": [
                38,
                17
            ],
            "o": 10
        },
        "writing_hand": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "270D-1F3FB",
                    "non_qualified": null,
                    "image": "270d-1f3fb.png",
                    "sheet_x": 49,
                    "sheet_y": 37,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "270D-1F3FC",
                    "non_qualified": null,
                    "image": "270d-1f3fc.png",
                    "sheet_x": 49,
                    "sheet_y": 38,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "270D-1F3FD",
                    "non_qualified": null,
                    "image": "270d-1f3fd.png",
                    "sheet_x": 49,
                    "sheet_y": 39,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "270D-1F3FE",
                    "non_qualified": null,
                    "image": "270d-1f3fe.png",
                    "sheet_x": 49,
                    "sheet_y": 40,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "270D-1F3FF",
                    "non_qualified": null,
                    "image": "270d-1f3ff.png",
                    "sheet_x": 49,
                    "sheet_y": 41,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Writing Hand",
            "b": "270D-FE0F",
            "c": "270D",
            "j": [
                "lower_left_ballpoint_pen",
                "stationery",
                "write",
                "compose"
            ],
            "k": [
                49,
                36
            ],
            "o": 1
        },
        "clap": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F44F-1F3FB",
                    "non_qualified": null,
                    "image": "1f44f-1f3fb.png",
                    "sheet_x": 15,
                    "sheet_y": 10,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F44F-1F3FC",
                    "non_qualified": null,
                    "image": "1f44f-1f3fc.png",
                    "sheet_x": 15,
                    "sheet_y": 11,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F44F-1F3FD",
                    "non_qualified": null,
                    "image": "1f44f-1f3fd.png",
                    "sheet_x": 15,
                    "sheet_y": 12,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F44F-1F3FE",
                    "non_qualified": null,
                    "image": "1f44f-1f3fe.png",
                    "sheet_x": 15,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F44F-1F3FF",
                    "non_qualified": null,
                    "image": "1f44f-1f3ff.png",
                    "sheet_x": 15,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Clapping Hands Sign",
            "b": "1F44F",
            "j": [
                "hands",
                "praise",
                "applause",
                "congrats",
                "yay"
            ],
            "k": [
                15,
                9
            ]
        },
        "open_hands": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F450-1F3FB",
                    "non_qualified": null,
                    "image": "1f450-1f3fb.png",
                    "sheet_x": 15,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F450-1F3FC",
                    "non_qualified": null,
                    "image": "1f450-1f3fc.png",
                    "sheet_x": 15,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F450-1F3FD",
                    "non_qualified": null,
                    "image": "1f450-1f3fd.png",
                    "sheet_x": 15,
                    "sheet_y": 18,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F450-1F3FE",
                    "non_qualified": null,
                    "image": "1f450-1f3fe.png",
                    "sheet_x": 15,
                    "sheet_y": 19,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F450-1F3FF",
                    "non_qualified": null,
                    "image": "1f450-1f3ff.png",
                    "sheet_x": 15,
                    "sheet_y": 20,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Open Hands Sign",
            "b": "1F450",
            "j": [
                "fingers",
                "butterfly",
                "hands",
                "open"
            ],
            "k": [
                15,
                15
            ]
        },
        "raised_hands": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64C-1F3FB",
                    "non_qualified": null,
                    "image": "1f64c-1f3fb.png",
                    "sheet_x": 33,
                    "sheet_y": 13,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F64C-1F3FC",
                    "non_qualified": null,
                    "image": "1f64c-1f3fc.png",
                    "sheet_x": 33,
                    "sheet_y": 14,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F64C-1F3FD",
                    "non_qualified": null,
                    "image": "1f64c-1f3fd.png",
                    "sheet_x": 33,
                    "sheet_y": 15,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F64C-1F3FE",
                    "non_qualified": null,
                    "image": "1f64c-1f3fe.png",
                    "sheet_x": 33,
                    "sheet_y": 16,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F64C-1F3FF",
                    "non_qualified": null,
                    "image": "1f64c-1f3ff.png",
                    "sheet_x": 33,
                    "sheet_y": 17,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Person Raising Both Hands in Celebration",
            "b": "1F64C",
            "j": [
                "gesture",
                "hooray",
                "yea",
                "celebration",
                "hands"
            ],
            "k": [
                33,
                12
            ]
        },
        "palms_up_together": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F932-1F3FB",
                    "non_qualified": null,
                    "image": "1f932-1f3fb.png",
                    "sheet_x": 39,
                    "sheet_y": 17,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FC": {
                    "unified": "1F932-1F3FC",
                    "non_qualified": null,
                    "image": "1f932-1f3fc.png",
                    "sheet_x": 39,
                    "sheet_y": 18,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FD": {
                    "unified": "1F932-1F3FD",
                    "non_qualified": null,
                    "image": "1f932-1f3fd.png",
                    "sheet_x": 39,
                    "sheet_y": 19,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FE": {
                    "unified": "1F932-1F3FE",
                    "non_qualified": null,
                    "image": "1f932-1f3fe.png",
                    "sheet_x": 39,
                    "sheet_y": 20,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                },
                "1F3FF": {
                    "unified": "1F932-1F3FF",
                    "non_qualified": null,
                    "image": "1f932-1f3ff.png",
                    "sheet_x": 39,
                    "sheet_y": 21,
                    "added_in": "10.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": false
                }
            },
            "a": "Palms Up Together",
            "b": "1F932",
            "k": [
                39,
                16
            ],
            "o": 10
        },
        "pray": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F64F-1F3FB",
                    "non_qualified": null,
                    "image": "1f64f-1f3fb.png",
                    "sheet_x": 34,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F64F-1F3FC",
                    "non_qualified": null,
                    "image": "1f64f-1f3fc.png",
                    "sheet_x": 34,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F64F-1F3FD",
                    "non_qualified": null,
                    "image": "1f64f-1f3fd.png",
                    "sheet_x": 34,
                    "sheet_y": 5,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F64F-1F3FE",
                    "non_qualified": null,
                    "image": "1f64f-1f3fe.png",
                    "sheet_x": 34,
                    "sheet_y": 6,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F64F-1F3FF",
                    "non_qualified": null,
                    "image": "1f64f-1f3ff.png",
                    "sheet_x": 34,
                    "sheet_y": 7,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Person with Folded Hands",
            "b": "1F64F",
            "j": [
                "please",
                "hope",
                "wish",
                "namaste",
                "highfive"
            ],
            "k": [
                34,
                2
            ]
        },
        "handshake": {
            "a": "Handshake",
            "b": "1F91D",
            "j": [
                "agreement",
                "shake"
            ],
            "k": [
                38,
                10
            ],
            "o": 9
        },
        "nail_care": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F485-1F3FB",
                    "non_qualified": null,
                    "image": "1f485-1f3fb.png",
                    "sheet_x": 23,
                    "sheet_y": 45,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F485-1F3FC",
                    "non_qualified": null,
                    "image": "1f485-1f3fc.png",
                    "sheet_x": 23,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F485-1F3FD",
                    "non_qualified": null,
                    "image": "1f485-1f3fd.png",
                    "sheet_x": 23,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F485-1F3FE",
                    "non_qualified": null,
                    "image": "1f485-1f3fe.png",
                    "sheet_x": 23,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F485-1F3FF",
                    "non_qualified": null,
                    "image": "1f485-1f3ff.png",
                    "sheet_x": 23,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Nail Polish",
            "b": "1F485",
            "j": [
                "beauty",
                "manicure",
                "finger",
                "fashion",
                "nail"
            ],
            "k": [
                23,
                44
            ]
        },
        "ear": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F442-1F3FB",
                    "non_qualified": null,
                    "image": "1f442-1f3fb.png",
                    "sheet_x": 13,
                    "sheet_y": 46,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F442-1F3FC",
                    "non_qualified": null,
                    "image": "1f442-1f3fc.png",
                    "sheet_x": 13,
                    "sheet_y": 47,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F442-1F3FD",
                    "non_qualified": null,
                    "image": "1f442-1f3fd.png",
                    "sheet_x": 13,
                    "sheet_y": 48,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F442-1F3FE",
                    "non_qualified": null,
                    "image": "1f442-1f3fe.png",
                    "sheet_x": 13,
                    "sheet_y": 49,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F442-1F3FF",
                    "non_qualified": null,
                    "image": "1f442-1f3ff.png",
                    "sheet_x": 13,
                    "sheet_y": 50,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Ear",
            "b": "1F442",
            "j": [
                "face",
                "hear",
                "sound",
                "listen"
            ],
            "k": [
                13,
                45
            ]
        },
        "nose": {
            "skin_variations": {
                "1F3FB": {
                    "unified": "1F443-1F3FB",
                    "non_qualified": null,
                    "image": "1f443-1f3fb.png",
                    "sheet_x": 14,
                    "sheet_y": 0,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FC": {
                    "unified": "1F443-1F3FC",
                    "non_qualified": null,
                    "image": "1f443-1f3fc.png",
                    "sheet_x": 14,
                    "sheet_y": 1,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FD": {
                    "unified": "1F443-1F3FD",
                    "non_qualified": null,
                    "image": "1f443-1f3fd.png",
                    "sheet_x": 14,
                    "sheet_y": 2,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FE": {
                    "unified": "1F443-1F3FE",
                    "non_qualified": null,
                    "image": "1f443-1f3fe.png",
                    "sheet_x": 14,
                    "sheet_y": 3,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                },
                "1F3FF": {
                    "unified": "1F443-1F3FF",
                    "non_qualified": null,
                    "image": "1f443-1f3ff.png",
                    "sheet_x": 14,
                    "sheet_y": 4,
                    "added_in": "8.0",
                    "has_img_apple": true,
                    "has_img_google": true,
                    "has_img_twitter": true,
                    "has_img_emojione": true,
                    "has_img_facebook": true,
                    "has_img_messenger": true
                }
            },
            "a": "Nose",
            "b": "1F443",
            "j": [
                "smell",
                "sniff"
            ],
            "k": [
                13,
                51
            ]
        },
        "footprints": {
            "a": "Footprints",
            "b": "1F463",
            "j": [
                "feet",
                "tracking",
                "walking",
                "beach"
            ],
            "k": [
                15,
                39
            ]
        },
        "eyes": {
            "a": "Eyes",
            "b": "1F440",
            "j": [
                "look",
                "watch",
                "stalk",
                "peek",
                "see"
            ],
            "k": [
                13,
                42
            ]
        },
        "eye": {
            "a": "Eye",
            "b": "1F441-FE0F",
            "c": "1F441",
            "j": [
                "face",
                "look",
                "see",
                "watch",
                "stare"
            ],
            "k": [
                13,
                44
            ],
            "o": 7
        },
        "brain": {
            "a": "Brain",
            "b": "1F9E0",
            "j": [
                "smart",
                "intelligent"
            ],
            "k": [
                46,
                22
            ],
            "o": 10
        },
        "tongue": {
            "a": "Tongue",
            "b": "1F445",
            "j": [
                "mouth",
                "playful"
            ],
            "k": [
                14,
                6
            ]
        },
        "lips": {
            "a": "Mouth",
            "b": "1F444",
            "j": [
                "mouth",
                "kiss"
            ],
            "k": [
                14,
                5
            ]
        },
        "kiss": {
            "a": "Kiss Mark",
            "b": "1F48B",
            "j": [
                "face",
                "lips",
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                24,
                37
            ]
        },
        "cupid": {
            "a": "Heart with Arrow",
            "b": "1F498",
            "j": [
                "love",
                "like",
                "heart",
                "affection",
                "valentines"
            ],
            "k": [
                24,
                50
            ]
        },
        "heart": {
            "a": "Heavy Black Heart",
            "b": "2764-FE0F",
            "c": "2764",
            "j": [
                "love",
                "like",
                "valentines"
            ],
            "k": [
                50,
                8
            ],
            "l": [
                "<3"
            ],
            "m": "<3",
            "o": 1
        },
        "heartbeat": {
            "a": "Beating Heart",
            "b": "1F493",
            "j": [
                "love",
                "like",
                "affection",
                "valentines",
                "pink",
                "heart"
            ],
            "k": [
                24,
                45
            ]
        },
        "broken_heart": {
            "a": "Broken Heart",
            "b": "1F494",
            "j": [
                "sad",
                "sorry",
                "break",
                "heart",
                "heartbreak"
            ],
            "k": [
                24,
                46
            ],
            "l": [
                "</3"
            ],
            "m": "</3"
        },
        "two_hearts": {
            "a": "Two Hearts",
            "b": "1F495",
            "j": [
                "love",
                "like",
                "affection",
                "valentines",
                "heart"
            ],
            "k": [
                24,
                47
            ]
        },
        "sparkling_heart": {
            "a": "Sparkling Heart",
            "b": "1F496",
            "j": [
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                24,
                48
            ]
        },
        "heartpulse": {
            "a": "Growing Heart",
            "b": "1F497",
            "j": [
                "like",
                "love",
                "affection",
                "valentines",
                "pink"
            ],
            "k": [
                24,
                49
            ]
        },
        "blue_heart": {
            "a": "Blue Heart",
            "b": "1F499",
            "j": [
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                24,
                51
            ],
            "m": "<3"
        },
        "green_heart": {
            "a": "Green Heart",
            "b": "1F49A",
            "j": [
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                25,
                0
            ],
            "m": "<3"
        },
        "yellow_heart": {
            "a": "Yellow Heart",
            "b": "1F49B",
            "j": [
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                25,
                1
            ],
            "m": "<3"
        },
        "orange_heart": {
            "a": "Orange Heart",
            "b": "1F9E1",
            "j": [
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                46,
                23
            ],
            "o": 10
        },
        "purple_heart": {
            "a": "Purple Heart",
            "b": "1F49C",
            "j": [
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                25,
                2
            ],
            "m": "<3"
        },
        "black_heart": {
            "a": "Black Heart",
            "b": "1F5A4",
            "j": [
                "evil"
            ],
            "k": [
                29,
                50
            ],
            "o": 9
        },
        "gift_heart": {
            "a": "Heart with Ribbon",
            "b": "1F49D",
            "j": [
                "love",
                "valentines"
            ],
            "k": [
                25,
                3
            ]
        },
        "revolving_hearts": {
            "a": "Revolving Hearts",
            "b": "1F49E",
            "j": [
                "love",
                "like",
                "affection",
                "valentines"
            ],
            "k": [
                25,
                4
            ]
        },
        "heart_decoration": {
            "a": "Heart Decoration",
            "b": "1F49F",
            "j": [
                "purple-square",
                "love",
                "like"
            ],
            "k": [
                25,
                5
            ]
        },
        "heavy_heart_exclamation_mark_ornament": {
            "a": "Heavy Heart Exclamation Mark Ornament",
            "b": "2763-FE0F",
            "c": "2763",
            "k": [
                50,
                7
            ],
            "o": 1
        },
        "love_letter": {
            "a": "Love Letter",
            "b": "1F48C",
            "j": [
                "email",
                "like",
                "affection",
                "envelope",
                "valentines"
            ],
            "k": [
                24,
                38
            ]
        },
        "zzz": {
            "a": "Sleeping Symbol",
            "b": "1F4A4",
            "j": [
                "sleepy",
                "tired",
                "dream"
            ],
            "k": [
                25,
                10
            ]
        },
        "anger": {
            "a": "Anger Symbol",
            "b": "1F4A2",
            "j": [
                "angry",
                "mad"
            ],
            "k": [
                25,
                8
            ]
        },
        "bomb": {
            "a": "Bomb",
            "b": "1F4A3",
            "j": [
                "boom",
                "explode",
                "explosion",
                "terrorism"
            ],
            "k": [
                25,
                9
            ]
        },
        "boom": {
            "a": "Collision Symbol",
            "b": "1F4A5",
            "j": [
                "bomb",
                "explode",
                "explosion",
                "collision",
                "blown"
            ],
            "k": [
                25,
                11
            ],
            "n": [
                "collision"
            ]
        },
        "sweat_drops": {
            "a": "Splashing Sweat Symbol",
            "b": "1F4A6",
            "j": [
                "water",
                "drip",
                "oops"
            ],
            "k": [
                25,
                12
            ]
        },
        "dash": {
            "a": "Dash Symbol",
            "b": "1F4A8",
            "j": [
                "wind",
                "air",
                "fast",
                "shoo",
                "fart",
                "smoke",
                "puff"
            ],
            "k": [
                25,
                14
            ]
        },
        "dizzy": {
            "a": "Dizzy Symbol",
            "b": "1F4AB",
            "j": [
                "star",
                "sparkle",
                "shoot",
                "magic"
            ],
            "k": [
                25,
                22
            ]
        },
        "speech_balloon": {
            "a": "Speech Balloon",
            "b": "1F4AC",
            "j": [
                "bubble",
                "words",
                "message",
                "talk",
                "chatting"
            ],
            "k": [
                25,
                23
            ]
        },
        "left_speech_bubble": {
            "a": "Left Speech Bubble",
            "b": "1F5E8-FE0F",
            "c": "1F5E8",
            "j": [
                "words",
                "message",
                "talk",
                "chatting"
            ],
            "k": [
                30,
                15
            ],
            "o": 7
        },
        "right_anger_bubble": {
            "a": "Right Anger Bubble",
            "b": "1F5EF-FE0F",
            "c": "1F5EF",
            "j": [
                "caption",
                "speech",
                "thinking",
                "mad"
            ],
            "k": [
                30,
                16
            ],
            "o": 7
        },
        "thought_balloon": {
            "a": "Thought Balloon",
            "b": "1F4AD",
            "j": [
                "bubble",
                "cloud",
                "speech",
                "thinking",
                "dream"
            ],
            "k": [
                25,
                24
            ]
        },
        "hole": {
            "a": "Hole",
            "b": "1F573-FE0F",
            "c": "1F573",
            "j": [
                "embarrassing"
            ],
            "k": [
                28,
                44
            ],
            "o": 7
        },
        "eyeglasses": {
            "a": "Eyeglasses",
            "b": "1F453",
            "j": [
                "fashion",
                "accessories",
                "eyesight",
                "nerdy",
                "dork",
                "geek"
            ],
            "k": [
                15,
                23
            ]
        },
        "dark_sunglasses": {
            "a": "Dark Sunglasses",
            "b": "1F576-FE0F",
            "c": "1F576",
            "j": [
                "face",
                "cool",
                "accessories"
            ],
            "k": [
                29,
                17
            ],
            "o": 7
        },
        "necktie": {
            "a": "Necktie",
            "b": "1F454",
            "j": [
                "shirt",
                "suitup",
                "formal",
                "fashion",
                "cloth",
                "business"
            ],
            "k": [
                15,
                24
            ]
        },
        "shirt": {
            "a": "T-Shirt",
            "b": "1F455",
            "k": [
                15,
                25
            ],
            "n": [
                "tshirt"
            ]
        },
        "jeans": {
            "a": "Jeans",
            "b": "1F456",
            "j": [
                "fashion",
                "shopping"
            ],
            "k": [
                15,
                26
            ]
        },
        "scarf": {
            "a": "Scarf",
            "b": "1F9E3",
            "j": [
                "neck",
                "winter",
                "clothes"
            ],
            "k": [
                46,
                25
            ],
            "o": 10
        },
        "gloves": {
            "a": "Gloves",
            "b": "1F9E4",
            "j": [
                "hands",
                "winter",
                "clothes"
            ],
            "k": [
                46,
                26
            ],
            "o": 10
        },
        "coat": {
            "a": "Coat",
            "b": "1F9E5",
            "j": [
                "jacket"
            ],
            "k": [
                46,
                27
            ],
            "o": 10
        },
        "socks": {
            "a": "Socks",
            "b": "1F9E6",
            "j": [
                "stockings",
                "clothes"
            ],
            "k": [
                46,
                28
            ],
            "o": 10
        },
        "dress": {
            "a": "Dress",
            "b": "1F457",
            "j": [
                "clothes",
                "fashion",
                "shopping"
            ],
            "k": [
                15,
                27
            ]
        },
        "kimono": {
            "a": "Kimono",
            "b": "1F458",
            "j": [
                "dress",
                "fashion",
                "women",
                "female",
                "japanese"
            ],
            "k": [
                15,
                28
            ]
        },
        "bikini": {
            "a": "Bikini",
            "b": "1F459",
            "j": [
                "swimming",
                "female",
                "woman",
                "girl",
                "fashion",
                "beach",
                "summer"
            ],
            "k": [
                15,
                29
            ]
        },
        "womans_clothes": {
            "a": "Womans Clothes",
            "b": "1F45A",
            "j": [
                "fashion",
                "shopping_bags",
                "female"
            ],
            "k": [
                15,
                30
            ]
        },
        "purse": {
            "a": "Purse",
            "b": "1F45B",
            "j": [
                "fashion",
                "accessories",
                "money",
                "sales",
                "shopping"
            ],
            "k": [
                15,
                31
            ]
        },
        "handbag": {
            "a": "Handbag",
            "b": "1F45C",
            "j": [
                "fashion",
                "accessory",
                "accessories",
                "shopping"
            ],
            "k": [
                15,
                32
            ]
        },
        "pouch": {
            "a": "Pouch",
            "b": "1F45D",
            "j": [
                "bag",
                "accessories",
                "shopping"
            ],
            "k": [
                15,
                33
            ]
        },
        "shopping_bags": {
            "a": "Shopping Bags",
            "b": "1F6CD-FE0F",
            "c": "1F6CD",
            "k": [
                37,
                2
            ],
            "o": 7
        },
        "school_satchel": {
            "a": "School Satchel",
            "b": "1F392",
            "j": [
                "student",
                "education",
                "bag",
                "backpack"
            ],
            "k": [
                8,
                37
            ]
        },
        "mans_shoe": {
            "a": "Mans Shoe",
            "b": "1F45E",
            "j": [
                "fashion",
                "male"
            ],
            "k": [
                15,
                34
            ],
            "n": [
                "shoe"
            ]
        },
        "athletic_shoe": {
            "a": "Athletic Shoe",
            "b": "1F45F",
            "j": [
                "shoes",
                "sports",
                "sneakers"
            ],
            "k": [
                15,
                35
            ]
        },
        "high_heel": {
            "a": "High-Heeled Shoe",
            "b": "1F460",
            "j": [
                "fashion",
                "shoes",
                "female",
                "pumps",
                "stiletto"
            ],
            "k": [
                15,
                36
            ]
        },
        "sandal": {
            "a": "Womans Sandal",
            "b": "1F461",
            "j": [
                "shoes",
                "fashion",
                "flip flops"
            ],
            "k": [
                15,
                37
            ]
        },
        "boot": {
            "a": "Womans Boots",
            "b": "1F462",
            "j": [
                "shoes",
                "fashion"
            ],
            "k": [
                15,
                38
            ]
        },
        "crown": {
            "a": "Crown",
            "b": "1F451",
            "j": [
                "king",
                "kod",
                "leader",
                "royalty",
                "lord"
            ],
            "k": [
                15,
                21
            ]
        },
        "womans_hat": {
            "a": "Womans Hat",
            "b": "1F452",
            "j": [
                "fashion",
                "accessories",
                "female",
                "lady",
                "spring"
            ],
            "k": [
                15,
                22
            ]
        },
        "tophat": {
            "a": "Top Hat",
            "b": "1F3A9",
            "j": [
                "magic",
                "gentleman",
                "classy",
                "circus"
            ],
            "k": [
                9,
                3
            ]
        },
        "mortar_board": {
            "a": "Graduation Cap",
            "b": "1F393",
            "j": [
                "school",
                "college",
                "degree",
                "university",
                "graduation",
                "cap",
                "hat",
                "legal",
                "learn",
                "education"
            ],
            "k": [
                8,
                38
            ]
        },
        "billed_cap": {
            "a": "Billed Cap",
            "b": "1F9E2",
            "k": [
                46,
                24
            ],
            "o": 10
        },
        "helmet_with_white_cross": {
            "a": "Helmet with White Cross",
            "b": "26D1-FE0F",
            "c": "26D1",
            "k": [
                48,
                33
            ],
            "o": 5
        },
        "prayer_beads": {
            "a": "Prayer Beads",
            "b": "1F4FF",
            "j": [
                "dhikr",
                "religious"
            ],
            "k": [
                27,
                1
            ],
            "o": 8
        },
        "lipstick": {
            "a": "Lipstick",
            "b": "1F484",
            "j": [
                "female",
                "girl",
                "fashion",
                "woman"
            ],
            "k": [
                23,
                43
            ]
        },
        "ring": {
            "a": "Ring",
            "b": "1F48D",
            "j": [
                "wedding",
                "propose",
                "marriage",
                "valentines",
                "diamond",
                "fashion",
                "jewelry",
                "gem",
                "engagement"
            ],
            "k": [
                24,
                39
            ]
        },
        "gem": {
            "a": "Gem Stone",
            "b": "1F48E",
            "j": [
                "blue",
                "ruby",
                "diamond",
                "jewelry"
            ],
            "k": [
                24,
                40
            ]
        }
    },
    "aliases": {
        "satisfied": "laughing",
        "grinning_face_with_star_eyes": "star-struck",
        "face_with_one_eyebrow_raised": "face_with_raised_eyebrow",
        "telephone": "phone",
        "cooking": "fried_egg",
        "paw_prints": "feet",
        "flag-cn": "cn",
        "lantern": "izakaya_lantern",
        "shocked_face_with_exploding_head": "exploding_head",
        "open_book": "book",
        "flag-de": "de",
        "grinning_face_with_one_large_and_one_small_eye": "zany_face",
        "serious_face_with_symbols_covering_mouth": "face_with_symbols_on_mouth",
        "flipper": "dolphin",
        "face_with_open_mouth_vomiting": "face_vomiting",
        "flag-es": "es",
        "face_with_finger_covering_closed_lips": "shushing_face",
        "smiling_face_with_smiling_eyes_and_hand_covering_mouth": "face_with_hand_over_mouth",
        "flag-fr": "fr",
        "honeybee": "bee",
        "red_car": "car",
        "envelope": "email",
        "uk": "gb",
        "flag-gb": "gb",
        "poop": "hankey",
        "shit": "hankey",
        "staff_of_aesculapius": "medical_symbol",
        "knife": "hocho",
        "sailboat": "boat",
        "pencil": "memo",
        "flag-it": "it",
        "flag-jp": "jp",
        "heavy_exclamation_mark": "exclamation",
        "flag-kr": "kr",
        "waxing_gibbous_moon": "moon",
        "mother_christmas": "mrs_claus",
        "sun_small_cloud": "mostly_sunny",
        "sun_behind_cloud": "barely_sunny",
        "sun_behind_rain_cloud": "partly_sunny_rain",
        "lightning_cloud": "lightning",
        "tornado_cloud": "tornado",
        "flag-ru": "ru",
        "running": "runner",
        "flag-us": "us",
        "man_and_woman_holding_hands": "couple",
        "man-woman-boy": "family",
        "family": "man-woman-boy",
        "reversed_hand_with_middle_finger_extended": "middle_finger",
        "hand_with_index_and_middle_fingers_crossed": "crossed_fingers",
        "sign_of_the_horns": "the_horns",
        "raised_hand": "hand",
        "thumbsup": "plus1",
        "thumbsdown": "-1",
        "punch": "facepunch",
        "collision": "boom",
        "tshirt": "shirt",
        "shoe": "mans_shoe"
    }
};
(function( root, $, factory ) {

    joms.fn || (joms.fn = {});
    joms.fn.tagging = factory( root, $ );

    define('functions/tagging',[ 'utils/tagging' ], function() {
        return joms.fn.tagging;
    });

})( window, joms.jQuery, function( window, $ ) {

var groupMembers = {},
    eventMembers = {},
    groupMembersFetching = {},
    eventMembersFetching = {},
    groupMembersFetchCallback = {},
    eventMembersFetchCallback = {};

function initInputbox() {
    var inputbox = $( document.body )
        .find('.joms-js--newcomment')
        .find('textarea.joms-textarea');

    inputbox.each(function() {
        var el = $( this );
        if ( !el[0].joms_beautifier ) {
            el[0].joms_data = el.data();
            el.jomsTagging( fetchInputbox );
        }
    });
}

function fetchInputbox( callback ) {
    var that = this,
        data = this.textarea.joms_data,
        id = data.tagId || data.id,
        func = ( data.tagFunc || data.func || '' ).toLowerCase(),
        type = data.type || '',
        friends = [],
        url;

    if ( this.textarea.joms_friends ) {
        callback( this.textarea.joms_friends );
        return;
    }

    if ( !func ) {
        url = 'index.php?option=com_community&view=friends&task=ajaxAutocomplete&type=comment&streamid=' + id;
        if ( window.joms_group_id ) {
            url += '&groupid=' + window.joms_group_id;
        } else if ( window.joms_event_id ) {
            url += '&eventid=' + window.joms_event_id;
        }
    } else {
        url = 'index.php?option=com_community&view=friends&task=ajaxAutocomplete';
        if ( func.indexOf('album') > -1 ) {
            url += '&albumid=' + id;
        } else if ( func.indexOf('photo') > -1 ) {
            url += '&photoid=' + id + '&rule=photo-comment';
        } else if ( func.indexOf('video') > -1 ) {
            url += '&videoid=' + id;
        } else if ( func.indexOf('discussion') > -1 ) {
            url += '&discussionid=' + id;
        } else if ( func.indexOf('inbox') > -1 ) {
            url += '&msgid=' + id;
        } else if ( type.match( /service\.comment\.joomla\.article/ ) ) {
            url += '&type=comment&streamid=' + id;
        }
    }

    this.fetchXHR && this.fetchXHR.abort();
    this.fetchXHR = $.ajax({
        url: joms.BASE_URL + url,
        dataType: 'json',
        success: function( json ) {
            that.textarea.joms_friends = friends = _parse( json );
        },
        complete: function() {
            var i, j, ilen, jlen;

            // Update (posibbly) old images and names.
            if ( friends.length && window.joms_friends.length ) {
                for ( i = 0, ilen = Math.min( friends.length, 30 ); i < ilen; i++ ) {
                    for ( j = 0, jlen = Math.min( window.joms_friends.length, 30 ); j < jlen; j++ ) {
                        if ( +friends[i].id === +window.joms_friends[j].id ) {
                            window.joms_friends[j].avatar = friends[i].avatar;
                            window.joms_friends[j].name = friends[i].name;
                        }
                    }
                }
            }

            that.fetchXHR = false;
            callback( friends );
        }
    });
}

function fetchFriendsInContext() {
    var url  = 'index.php?option=com_community&view=friends&task=ajaxAutocomplete',
        friends = [];

    if ( window.joms_group_id ) {
        url += '&groupid=' + window.joms_group_id;
    } else if ( window.joms_event_id ) {
        url += '&eventid=' + window.joms_event_id;
    } else {
        url += '&allfriends=1';
    }

    joms.jQuery.ajax({
        url: joms.BASE_URL + url,
        dataType: 'json',
        success: function( json ) {
            friends = _parse( json );
        },
        complete: function() {
            window.joms_friends = friends;
            var event = new CustomEvent('JomsFriendsFetched');
            document.dispatchEvent(event);
        }
    });
}

function fetchGroupMembers( groupid, callback ) {
    var url  = 'index.php?option=com_community&view=friends&task=ajaxAutocomplete&groupid=' + groupid;

    if ( !groupMembersFetchCallback[ groupid ] ) {
        groupMembersFetchCallback[ groupid ] = [];
    }

    if ( groupMembersFetching[ groupid ] ) {
        groupMembersFetchCallback[ groupid ].push( callback );
        return;
    }

    if ( groupMembers[ groupid ] ) {
        callback( groupMembers[ groupid ] );
        return;
    }

    groupMembersFetching[ groupid ] = true;
    joms.jQuery.ajax({
        url: joms.BASE_URL + url,
        dataType: 'json',
        success: function( json ) {
            groupMembers[ groupid ] = _parse( json );
        },
        complete: function() {
            callback( groupMembers[ groupid ] );
            while ( groupMembersFetchCallback[ groupid ].length ) {
                try {
                    ( groupMembersFetchCallback[ groupid ].shift() )( groupMembers[ groupid ] );
                } catch (e) {}
            }
            groupMembersFetching[ groupid ] = false;
        }
    });
}

function fetchEventMembers( eventid, callback ) {
    var url  = 'index.php?option=com_community&view=friends&task=ajaxAutocomplete&eventid=' + eventid;

    if ( !eventMembersFetchCallback[ eventid ] ) {
        eventMembersFetchCallback[ eventid ] = [];
    }

    if ( eventMembersFetching[ eventid ] ) {
        eventMembersFetchCallback[ eventid ].push( callback );
        return;
    }

    if ( eventMembers[ eventid ] ) {
        callback( eventMembers[ eventid ] );
        return;
    }

    eventMembersFetching[ eventid ] = true;
    joms.jQuery.ajax({
        url: joms.BASE_URL + url,
        dataType: 'json',
        success: function( json ) {
            eventMembers[ eventid ] = _parse( json );
        },
        complete: function() {
            callback( eventMembers[ eventid ] );
            while ( eventMembersFetchCallback[ eventid ].length ) {
                try {
                    ( eventMembersFetchCallback[ eventid ].shift() )( eventMembers[ eventid ] );
                } catch (e) {}
            }
            eventMembersFetching[ eventid ] = false;
        }
    });
}

function _parse( json ) {
    var uniques = [],
        friends = [],
        id, i;

    if ( json && json.suggestions && json.suggestions.length ) {
        for ( i = 0; i < json.suggestions.length; i++ ) {
            id = '' + json.data[i];
            if ( uniques.indexOf(id) >= 0 ) continue;
            uniques.push( id );
            friends.push({
                id: id,
                name: json.suggestions[i],
                avatar: json.img[i].replace( /^.+src="([^"]+)".+$/ , '$1'),
                type: 'contact'
            });
        }
    }

    return friends;
}

// Exports.
return {
    initInputbox: initInputbox,
    fetchInputbox: fetchInputbox,
    fetchFriendsInContext: fetchFriendsInContext,
    fetchGroupMembers: fetchGroupMembers,
    fetchEventMembers: fetchEventMembers
};

});

(function (root, $, factory) {

    joms.view || (joms.view = {});
    joms.view.comment = factory(root, $);

    define('views/comment',['utils/video', 'functions/tagging'], function () {
        return joms.view.comment;
    });

})(window, joms.jQuery, function (window, $) {

    var container, uploader, uploaderType, uploaderParams, uploaderButton, uploaderAttachment, uploaderRef, uploaderError;

    function initialize() {
        uninitialize();
        container = $(document.body);
        container.on('keydown.joms-comment', '.joms-comment__reply textarea', keydown);
        container.on('focus.joms-comment', '.joms-comment__reply textarea', focused);
        container.on('focus.joms-comment', '.joms-js--pm-message textarea', focused);
        container.on('click.joms-comment', '.joms-comment__reply .joms-js--btn-send', onSend);
        container.on('click.joms-comment', '.joms-js--inbox-reply .joms-js--btn-send', onSend);
        container.on('click.joms-comment', '.joms-comment__more', showAll);

        addAttachmentInit();
        initInputbox();
        initVideoPlayers();
    }

    function uninitialize() {
        if (container) {
            container.off('keydown.joms-comment', '.joms-comment__reply textarea');
            container.off('focus.joms-comment', '.joms-comment__reply textarea');
            container.off('focus.joms-comment', '.joms-js--pm-message textarea');
            container.off('click.joms-comment', '.joms-comment__reply .joms-js--btn-send');
            container.off('click.joms-comment', '.joms-js--inbox-reply .joms-js--btn-send');
            container.off('click.joms-comment', '.joms-comment__more');
        }
    }

    function initInputbox() {
        joms.fn.tagging.initInputbox();
    }

    function initVideoPlayers() {
        var initialized = '.joms-js--initialized',
            cssVideos = '.joms-js--video',
            videos = $('.joms-comment__body,.joms-js--inbox').find(cssVideos).not(initialized).addClass(initialized.substr(1));

        if (!videos.length) {
            return;
        }

        joms.loadCSS(joms.ASSETS_URL + 'vendors/mediaelement/mediaelementplayer.min.css');
        videos.on('click.joms-video', cssVideos + '-play', function () {
            var $el = $(this).closest(cssVideos);
            joms.util.video.play($el, $el.data());
        });

        if (joms.ios) {
            setTimeout(function () {
                videos.find(cssVideos + '-play').click();
            }, 2000);
        }
    }

    function keydown(e) {
        var key = e.keyCode || e.charCode,
            textarea;

        if (key !== 13 || e.shiftKey) {
            return;
        }

        textarea = $(e.target);
        if (textarea.data('noentersend') || joms.mobile) {
            return;
        }

        setTimeout(function () { send(e); }, 100);
        return false;
    }

    function focused(e) {
        var textarea = $(e.target),
            wrapper = textarea.closest('.joms-textarea__wrapper'),
            attachment = wrapper.find('.joms-textarea__attachment');

        if (attachment.length) {
            uploaderAttachment = attachment;
        }
    }

    function onSend(e) {
        var el = $(e.currentTarget),
            textarea = el.closest('.joms-comment__reply,.joms-js--inbox-reply').find('textarea');

        send({ currentTarget: textarea[0] });
    }

    function send(e) {
        var el = $(e.currentTarget),
            text = (el.val() || ''),
            isEdit = +el.data('edit'),
            id, func, type, attachment;

        // Use tag value if available.
        if (el[0].joms_hidden) {
            text = el[0].joms_hidden.val() || text;
        }

        // Don't send empty message and no image.
        if (text.replace(/^\s+|\s+$/g, '') === '') {
            attachment = el.siblings('.joms-textarea__attachment');
            if (!attachment.length || !attachment.is(':visible')) {
                alert(joms_lang.COM_COMMUNITY_CANNOT_EDIT_COMMENT_ERROR);
                return;
            }
        }

        id = +el.data('id');
        func = el.data('func') || '';
        type = el.data('type') || '';

        if (isEdit) {
            editSave(el, id, func, type, text, function () {
                initVideoPlayers();
                reset(el, 'edit');
            });
        } else {
            addSave(el, id, func, type, text, function () {
                el.val('');
                initVideoPlayers();
                reset(el);
            });
        }
    }

    function reset(el, type) {
        if (type !== 'edit') {
            el.closest('.joms-comment__reply').find('.joms-textarea__attachment').hide();
        }

        el = el[0];
        if (el.joms_reset) {
            el.joms_reset();
        }
        if (el.joms_beautifier && el.joms_beautifier !== 'none') {
            el.joms_beautifier.html('');
        }
        if (el.joms_hidden) {
            el.joms_hidden.val(el.value);
        }
    }

    function addSave(el, id, func, type, text, callback) {
        var isWall = func,
            isPhotoAlbum = false,
            isPhoto = false,
            isVideo = false,
            isDiscussion = false,
            isInbox = false,
            isCustomWall = false,
            photo = false,
            file = false,
            data, ct, funcLower, $loading;

        if (el.data('saving')) {
            return;
        }

        el.data('saving', 1);

        if (isWall) {
            funcLower = func.toLowerCase();
            if (funcLower.indexOf('album') > -1) {
                isPhotoAlbum = true;
            } else if (funcLower.indexOf('photo') > -1) {
                isPhoto = true;
            } else if (funcLower.indexOf('video') > -1) {
                isVideo = true;
            } else if (funcLower.indexOf('discussion') > -1) {
                isDiscussion = true;
            } else if (funcLower.indexOf('inbox') > -1) {
                isInbox = true;
            } else if (funcLower.indexOf('wall')) {
                isCustomWall = true;
            }
        }

        ct = uploaderAttachment;
        if (ct && ct.is(':visible')) {
            photo = ct.find('.joms-textarea__attachment--thumbnail').find('img');
            file = photo.siblings('b');
            if (photo.is(':visible')) {
                photo = photo.data('photo_id');
                file = '';
            } else if (file.is(':visible')) {
                file = file.data('id');
                photo = '';
            }
        }

        photo = photo || '';
        file = file || '';

        if (!isWall) {
            func = 'system,ajaxStreamAddComment';
            data = [id, text, photo];
        } else if (isVideo || isDiscussion) {
            data = [text, id, photo];
        } else if (isInbox) {
            data = [id, text, photo, file];
        } else if (isCustomWall) {
            data = [type, id, text, photo];
        } else {
            data = [text, id, '', photo];
        }

        $loading = $(el).siblings('.joms-textarea__loading');
        $loading.show();

        joms.ajax({
            func: func,
            data: data,
            callback: function (json) {
                var $ct, item, status, counter;

                $loading.hide();

                if (json.success) {

                    if (isInbox) {
                        _onInboxAdded(json.html);

                        el.removeData('saving');

                        // Enable sibling items.
                        if (uploaderRef) {
                            uploaderRef.siblings('svg')
                                .removeData('disabled')
                                .css('opacity', '');
                        }

                        return;
                    }

                    $ct = $('.joms-js--comments-' + id);
                    $ct.append(json.html || '');

                    counter = $('.joms-comment__counter--' + id);
                    counter.html(+counter.eq(0).text() + 1);
                    counter.parents('.joms-comment__status').show();

                    joms.parseEmoji();
                }

                if (typeof callback === 'function') {
                    callback(json);
                }

                el.removeData('saving');

                // Enable sibling items.
                if (uploaderRef) {
                    uploaderRef.siblings('svg')
                        .removeData('disabled')
                        .css('opacity', '');
                }

                if (json.error) {
                    window.alert(json.error);
                }

            }
        });
    }

    function edit(commentId, elem, type) {
        var isWall = type === 'wall',
            comment, reply, textarea;

        elem = $(elem);
        comment = elem.closest('.joms-comment__item');
        textarea = comment.children('.joms-comment__reply').find('textarea');

        if (isWall) {
            reply = comment.closest('.joms-comment').siblings('.joms-comment__reply');
        } else {
            reply = comment.closest('.joms-stream').children('.joms-comment__reply');
        }

        reply.hide();
        comment.children('.joms-comment__body,.joms-comment__actions').hide();
        comment.children('.joms-comment__reply').show();
        textarea.jomsTagging();
        textarea.off('reset.joms-tagging');
        textarea.on('reset.joms-tagging', function () {
            comment.children('.joms-comment__reply').hide();
            comment.children('.joms-comment__body,.joms-comment__actions').show();
            reply.show();
        });
        textarea[0].focus();
    }

    function editSave(el, commentId, func, type, text, callback) {
        var isWall = func,
            attachment, photo, photoSrc, data, $loading;

        if (el.data('saving')) {
            return;
        }

        el.data('saving', 1);

        attachment = el.siblings('.joms-textarea__attachment');

        if (attachment.is(':visible')) {
            photo = attachment.find('.joms-textarea__attachment--thumbnail').find('img');
            photoSrc = photo.attr('src');
            photo = photo.data('photo_id') || '0';
        } else if (attachment.data('no_thumb')) {
            photo = '0';
        } else {
            photo = '-1';
        }

        if (isWall) {
            data = [commentId, text, func, photo];
            func = 'system,ajaxUpdateWall';
        } else {
            func = 'system,ajaxeditComment';
            data = [commentId, text, photo];
        }

        $loading = $(el).siblings('.joms-textarea__loading');
        $loading.show();

        joms.ajax({
            func: func,
            data: data,
            callback: function (json) {
                var $ct, $body, $reply;

                $loading.hide();

                if (json.success) {
                    $ct = $('.joms-js--comment-' + commentId);
                    $body = $ct.find('.joms-js--comment-body');
                    $reply = $('.joms-js--newcomment-' + $ct.data('parent'));

                    $ct.find('.joms-js--comment-editor').hide().find('textarea').val(json.originalComment || '');
                    $ct.find('.joms-js--comment-content').html(json.comment || '');
                    $ct.find('.joms-js--comment-actions').show();
                    $body.show();
                    $reply.show();

                    // Update photo if available.
                    if (+photo < 0 || +photo > 0) {
                        $body.children('.joms-js--comment-content').next('div').remove();

                        if (+photo > 0 && photoSrc) {
                            $body.children('.joms-js--comment-content').after([
                                '<div style="padding:5px 0">',
                                '<a href="javascript:" onclick="joms.api.photoZoom(\'', photoSrc, '\');">',
                                '<img class="joms-stream-thumb" src="', photoSrc, '">',
                                '</a>',
                                '</div>'
                            ].join(''));
                        }
                    }

                    joms.parseEmoji();
                }

                if (json.error) {
                    alert(json.error)
                }

                if (typeof callback === 'function') {
                    callback(json);
                }

                try {
                    el.blur();
                } catch (e) { }

                el.removeData('saving');

                // Enable sibling items.
                if (uploaderRef) {
                    uploaderRef.siblings('svg')
                        .removeData('disabled')
                        .css('opacity', '');
                }
            }
        });
    }

    // function editCancel( textarea ) {


    // }

    function like(commentId) {
        joms.ajax({
            func: 'system,ajaxStreamAddLike',
            data: [commentId, 'comment'],
            callback: function (json) {
                var $ct, btn, info;

                if (json.success) {
                    $ct = $('.joms-js--comment-' + commentId);

                    if ($ct.length) {
                        btn = $ct.find('.joms-comment__actions').find('.joms-button--liked');
                        btn.attr('onclick', 'joms.api.commentUnlike(\'' + commentId + '\');');
                        btn.addClass('liked');
                        btn.find('span').html(btn.data('lang-unlike'));
                        btn.find('use').attr('xlink:href', window.location + '#joms-icon-thumbs-down');

                        info = $ct.find('.joms-comment__actions [data-action=showlike]');
                        if (!json.html) {
                            info.remove();
                        } else if (info.length) {
                            info.replaceWith(json.html);
                        } else {
                            btn.after(json.html);
                        }
                    }
                }
            }
        });
    }

    function unlike(commentId) {
        joms.ajax({
            func: 'system,ajaxStreamUnlike',
            data: [commentId, 'comment'],
            callback: function (json) {
                var $ct, btn, info;

                if (json.success) {
                    $ct = $('.joms-js--comment-' + commentId);

                    if ($ct.length) {
                        btn = $ct.find('.joms-comment__actions').find('.joms-button--liked');
                        btn.attr('onclick', 'joms.api.commentLike(\'' + commentId + '\');');
                        btn.removeClass('liked');
                        btn.find('span').html(btn.data('lang-like'));
                        btn.find('use').attr('xlink:href', window.location + '#joms-icon-thumbs-up');

                        info = $ct.find('.joms-comment__actions [data-action=showlike]');
                        if (!json.html) {
                            info.remove();
                        } else if (info.length) {
                            info.replaceWith(json.html);
                        } else {
                            btn.after(json.html);
                        }
                    }

                }
            }
        });
    }

    function showAll(e) {
        var el = $(e.currentTarget),
            ct = el.closest('.joms-js--comments'),
            type = ct.data('type') || '',
            id = +ct.data('id'),
            shown = ct.children('.joms-js--comment').length,
            limit = window.joms_prev_comment_load;

        if (!id) {
            return;
        }

        joms.ajax({
            func: 'system,ajaxStreamShowComments',
            data: [id, type, shown, limit],
            callback: function (json) {
                var html, ct, remaining, link, lang;

                if (json.success) {
                    html = $($.trim(json.html));

                    if (type) {
                        html = html.filter('.joms-js--comments').children();
                    }

                    ct = $('.joms-js--comments-' + id);
                    ct.find('.joms-js--comment').remove();
                    ct.append(html);

                    json.total = +json.total;
                    remaining = Math.max(0, json.total - ct.children('.joms-js--comment').length);

                    if (remaining > 0) {
                        link = ct.find('.joms-js--more-comments a');
                        lang = link.data('lang') || (window.joms_lang.COM_COMMUNITY_SHOW_PREVIOUS_COMMENTS + ' (%d)');
                        if (lang) {
                            link.text(lang.replace('%d', remaining));
                        }
                    } else {
                        ct.find('.joms-js--more-comments').remove();
                    }

                    initVideoPlayers();
                    joms.parseEmoji();
                }
            }
        });
    }

    function remove(commentId, type) {
        var cf = confirm(joms_lang.COM_COMMUNITY_ARE_YOU_SURE_YOU_WANT_TO_DELETE_THIS_COMMENT);
        if (!cf) {
            return;
        }
        var isInbox = type === 'inbox',
            isWall = type === 'wall',
            func,
            data;

        if (isInbox) {
            func = 'inbox,ajaxRemoveMessage';
            data = [commentId];
        } else if (isWall) {
            func = window.joms_wall_remove_func;
            data = [commentId];
        } else {
            func = 'system,ajaxStreamRemoveComment';
            data = [commentId];
        }

        joms.ajax({
            func: func,
            data: data,
            callback: function (json) {
                var $ct;

                if (!json.success) {
                    window.alert(json.error || 'Undefined error.');
                    return;
                }

                if (isInbox) {
                    _onInboxRemoved(commentId);
                    return;
                }

                $ct = $('.joms-js--comment-' + commentId);

                if ($ct.length) {
                    $ct.fadeOut(300, function () {
                        $(this).remove();
                    });
                    var parent_id = $ct.data('stream-id') || $ct.data('parent');
                    var counter = $('.joms-comment__counter--' + parent_id);
                    if (counter.length) {
                        var val = +counter.eq(0).text() - 1;
                        if (val === 0) {
                            counter.parents('.joms-comment__status').hide();
                            $ct.parents('.joms-popup').find('.joms-comment').html(joms_lang.COM_COMMUNITY_NO_COMMENTS_YET);
                        }
                        counter.html(val);
                    }
                }

            }
        });
    }

    function removeTag(id, type) {
        joms.ajax({
            func: 'activities,ajaxRemoveUserTag',
            data: [id, type || 'comment'],
            callback: function (json) {
                var $comment, $cbutton, $ccontent, $ceditor, $textarea;

                if (json.success) {
                    if (type === 'inbox') {
                        $comment = $('.joms-js--inbox-item-' + id);
                        $cbutton = $comment.find('.joms-button--remove-tag');
                        $ccontent = $comment.find('.joms-js--inbox-content');

                        $ccontent.html(json.data);
                        $cbutton.remove();
                    } else {
                        $comment = $('.joms-js--comment-' + id);
                        $cbutton = $comment.find('.joms-button--remove-tag');
                        $ccontent = $comment.find('.joms-js--comment-content');
                        $ceditor = $comment.find('.joms-js--comment-editor');
                        $textarea = $ceditor.find('textarea');

                        $ccontent.html(json.data);
                        $textarea.val(json.unparsed);
                        $cbutton.remove();
                    }
                }
            }
        });
    }

    function removePreview(id, type) {
        var isInbox = type === 'inbox',
            isWall = type === 'wall',
            func, data;

        if (isInbox) {
            func = 'inbox,ajaxRemovePreview';
            data = [id];
        } else if (isWall) {
            func = 'system,ajaxRemoveWallPreview';
            data = [id];
        } else {
            func = 'system,ajaxRemoveCommentPreview';
            data = [id];
        }

        joms.ajax({
            func: func,
            data: data,
            callback: function (json) {
                if (!json.success) {
                    window.alert(json.error || 'Undefined error.');
                    return;
                }

                if (isInbox) {
                    _onInboxUpdated(id, json.html);
                    return;
                }

                $('.joms-js--comment-' + id)
                    .find('.joms-js--comment-preview').remove();
            }
        });
    }

    function removeThumbnail(id, type) {
        var isInbox = type === 'inbox',
            isWall = type === 'wall',
            func, data;

        if (isInbox) {
            func = 'inbox,ajaxRemoveThumbnail';
            data = [id];
        } else if (isWall) {
            // @todo
        } else {
            // @todo
        }

        joms.ajax({
            func: func,
            data: data,
            callback: function (json) {
                if (!json.success) {
                    window.alert(json.error || 'Undefined error.');
                    return;
                }

                if (isInbox) {
                    _onInboxUpdated(id, json.html);
                    return;
                }

                if (isWall) {
                    // @todo
                    return;
                }

                // @todo stream
                return;
            }
        });
    }

    function addAttachment(elem, type, params) {
        var maxFileSize, extensions, settings;

        elem = $(elem);
        if (elem.data('disabled')) {
            return;
        }

        uploaderRef = elem;
        elem = elem.siblings('.joms-textarea__wrapper');

        if (!elem.length) {
            return;
        }

        if (type !== 'file') {
            type = 'image';
        }

        params = params || {};
        maxFileSize = +params.max_file_size;
        extensions = params.exts;

        delete params.max_file_size;
        delete params.exts;

        uploaderType = type;
        uploaderParams = type === 'file' ? params : {};

        settings = {
            file: {
                url: joms.BASE_URL + 'index.php?option=com_community&view=files&task=multiUpload',
                filters: { mime_types: [{ title: 'Document files', extensions: extensions }] },
                max_file_size: maxFileSize > 0 ? ((+maxFileSize) * 1048576) : 0
            },
            image: {
                url: joms.BASE_URL + 'index.php?option=com_community&view=photos&task=ajaxPreviewComment',
                filters: { mime_types: [{ title: 'Image files', extensions: 'jpg,jpeg,png,gif' }] },
                max_file_size: undefined
            }
        };

        addAttachmentInit(elem, function () {
            uploader.refresh();
            uploader.settings.url = settings[type].url;
            uploader.settings.filters = settings[type].filters;
            uploader.settings.max_file_size = settings[type].max_file_size;
            uploader.refresh();
            window.joms_webdriver || uploaderButton.click();
        });
    }

    function addAttachmentInit(elem, callback) {
        if (typeof callback !== 'function') {
            callback = function () { };
        }

        if (uploader) {
            uploaderAttachment = elem && elem.find('.joms-textarea__attachment');
            callback();
            return;
        }

        joms.util.loadLib('plupload', function () {
            setTimeout(function () {
                var container, button;

                container = $('<div id="joms-js--attachment-uploader" aria-hidden="true" style="width:1px; height:1px; overflow:hidden">').appendTo(document.body);
                button = $('<button id="joms-js--attachment-uploader-button">').appendTo(container);
                uploader = new window.plupload.Uploader({
                    url: joms.BASE_URL + 'index.php?option=com_community&view=photos&task=ajaxPreviewComment',
                    container: 'joms-js--attachment-uploader',
                    browse_button: 'joms-js--attachment-uploader-button',
                    runtimes: 'html5,html4',
                    multi_selection: false
                });

                uploader.bind('FilesAdded', addAttachmentAdded);
                uploader.bind('BeforeUpload', addAttachmentBeforeUpload);
                uploader.bind('Error', addAttachmentError);
                uploader.bind('FileUploaded', addAttachmentUploaded);
                uploader.init();

                uploaderAttachment = elem && elem.find('.joms-textarea__attachment');
                uploaderButton = container.find('input[type=file]');
                callback();
            });
        });
    }

    function addAttachmentAdded(up) {
        uploaderError = false;

        window.setTimeout(function () {
            var ct = uploaderAttachment,
                loading = ct.find('.joms-textarea__attachment--loading'),
                thumb = ct.find('.joms-textarea__attachment--thumbnail'),
                button = ct.find('button');

            if (uploaderError) {
                return;
            }

            up.start();
            up.refresh();

            thumb.find('img').replaceWith('<img>');
            thumb.hide();
            button.hide();
            loading.show();
            ct.show();

            // Disable sibling items.
            uploaderRef.siblings('svg')
                .data('disabled', 1)
                .css('opacity', 0.5);

        }, 0);
    }

    function addAttachmentBeforeUpload(up) {
        var params = '',
            prop;

        for (prop in uploaderParams) {
            params += '&' + prop + '=' + uploaderParams[prop];
        }

        up.settings.url += params;
    }

    function addAttachmentError(up, error) {
        uploaderError = true;
        window.alert(error && error.message || 'Undefined error.');
    }

    function addAttachmentUploaded(up, file, info) {
        var json, ct, loading, thumb, button, img, label;

        try {
            json = JSON.parse(info.response);
        } catch (e) { }

        json || (json = {});

        ct = uploaderAttachment;

        if (json.error || json.msg) {
            window.alert(json.error || json.msg);
            ct.hide();
            return;
        }

        if (!((json.thumb_url && json.photo_id) || json.id)) {
            window.alert('Undefined error.');
            ct.hide();
            return;
        }

        loading = ct.find('.joms-textarea__attachment--loading');
        thumb = ct.find('.joms-textarea__attachment--thumbnail');
        img = thumb.find('img');
        button = ct.find('button');

        if (uploaderType === 'file') {
            label = $('<b>' + file.name + '</b>').data({ 'id': json.id, 'path': json.path, 'name': file.name });
            img.removeData('photo_id');
            img.hide().siblings('b').remove();
            img.after(label);
        } else {
            img.siblings('b').remove();
            img.attr('src', json.thumb_url);
            img.data('photo_id', json.photo_id).show();
        }

        loading.hide();
        thumb.show();
        button.show();
        ct.show();
    }

    function removeAttachment(elem) {
        elem = $(elem);
        elem = elem.closest('.joms-textarea__attachment');

        if (elem) {
            elem.find('.joms-textarea__attachment--thumbnail img').replaceWith('<img src="" alt="attachment">');
            elem.hide();
            elem.removeData('no_thumb');
            elem.removeAttr('data-no_thumb');
        }

        // Enable sibling items.
        if (uploaderRef) {
            uploaderRef.siblings('svg')
                .removeData('disabled')
                .css('opacity', '');
        }
    }

    function cancel(id) {
        var $ct, $reply, data;

        if (id && id.nodeType) {
            $ct = $(id).closest('.joms-js--comment');
        } else {
            $ct = $('.joms-js--comment-' + id);
        }

        if (!$ct.length) {
            return;
        }

        data = $ct.data();
        $reply = $('.joms-js--newcomment-' + data.parent);

        $ct.find('.joms-js--comment-editor').hide();
        $ct.find('.joms-js--comment-body').show();
        $ct.find('.joms-js--comment-actions').show();
        $reply.show();
    }

    function toggleText(id) {
        var $text = $('.joms-js--comment-text-' + id),
            $full = $('.joms-js--comment-textfull-' + id),
            $btn = $('.joms-js--comment-texttoggle-' + id);

        $text.hide();
        $full.show();
        $btn.hide();
        // if ( $full.is(':visible') ) {
        //     $full.hide();
        //     $text.show();
        //     $btn.html( $btn.data('lang-more') );
        // } else {
        //     $text.hide();
        //     $full.show();
        //     $btn.html( $btn.data('lang-less') );
        // }
    }

    function _onInboxAdded(html) {
        var ct, status, reply, textarea, tagging, attachment, loc, use, href, i;

        ct = $('.joms-js--inbox');
        status = $('.joms-js--inbox-status');
        reply = $('.joms-js--inbox-reply');
        textarea = reply.find('textarea');
        attachment = reply.find('.joms-textarea__attachment');

        html = $($.trim(html));
        loc = window.location.href.split('#')[0];
        use = html.find('use');

        for (i = 0; i < use.length; i++) {
            href = use.eq(i).attr('xlink:href').split('#')[1];
            href = loc + '#' + href;
            use.eq(i).attr('xlink:href', href);
        }

        ct.append(html);

        if (textarea.length) {
            tagging = textarea.data('joms-tagging');
            tagging ? tagging.clear() : textarea.val('');
        }

        if (attachment.length) {
            attachment.hide();
        }

        // update seen state
        if (status.length) {
            status.html('<span>' + status.data('lang-notseen') + '</span>');
        }

        initVideoPlayers();
    }

    function _onInboxUpdated(id, html) {
        var item, loc, use, href;

        if (!html) {
            _onInboxRemoved(id);
            return;
        }

        item = $('.joms-js--inbox-item-' + id);

        html = $($.trim(html));
        loc = window.location.href.split('#')[0];
        use = html.find('use');
        href = use.attr('xlink:href').split('#')[1];
        href = loc + '#' + href;

        use.attr('xlink:href', href);
        item.replaceWith(html);

        initVideoPlayers();
    }

    function _onInboxRemoved(id) {
        var item;
        item = $('.joms-js--inbox-item-' + id);
        item.fadeOut(500, function () {
            item.remove();
        });
    }

    function showEmoticonBoard(elm) {
        
        $(elm).parent().parent().data('editor',this);
        joms.util.emoji.showBoard(elm);
        return;
        $('.joms-emoticon-js__board').remove();
        var $body = $('body'),
            $board = $('.joms-emoticon-js__board'),
            $icon = $(elm).parents('.joms-icon--emoticon'),
            offset = $(elm).offset(),
            offsetTop = 0,
            emoticons = joms.getData('joms_emo'),
            isRTL = $('html').attr('dir') === 'rtl';

        if (!$board.length) {
            html = renderEmoticonBoard(emoticons);
            $body.append(html);
            $board = $('.joms-emoticon-js__board');
        }

        var spacer = isRTL ? 15 : ($board.outerWidth() - 30);
        var above = {
            display: 'block',
            top: (offset.top - $board.outerHeight()) + 'px',
            left: (offset.left - spacer) + 'px',
            position: 'absolute'
        }

        var animate_above = {
            opacity: '1',
            top: (offset.top - $board.outerHeight() - 10) + 'px'
        }

        var below = {
            display: 'block',
            top: (offset.top + 20) + 'px',
            left: (offset.left - spacer) + 'px',
            position: 'absolute'
        }

        var animate_below = {
            opacity: '1',
            top: (offset.top + 24) + 'px'
        }

        offsetTop = offset.top - $(window).scrollTop();
        var pos, ani, positionClass;

        if (offsetTop > ($board.outerHeight() + 30)) {
            pos = above;
            ani = animate_above;
            positionClass = 'joms-board--above'
        } else {
            pos = below;
            ani = animate_below;
            positionClass = 'joms-board--below';
        }

        $board.is(':hidden') && setTimeout(function () {
            $('.joms-icon--active').removeClass('joms-icon--active');
            $icon.addClass('joms-icon--active');
            $board.css(pos);
            $board.addClass(positionClass)
            setTimeout(function () {
                $board.css(ani);
            }, 100);

            $(document).one('click', function () {
                $board.css({
                    display: 'none',
                    opacity: '0'
                });

                $board.removeClass('joms-board--above joms-board--below');
            });
        }, 100)
    }

    function renderEmoticonBoard(emoticons) {
        var html = '<ul class="joms-emoticon__board joms-emoticon-js__board">';
        for (var key in emoticons) {
            var emo = emoticons[key];
            html += '\
        <li>\
            <span\
                title="'+ key + '"\
                onclick="joms.view.comment.insertEmoticon(this)"\
                class="joms-emo2 joms-emo2-'+ key + '"\
                data-code="'+ emo[0] + '" >\
            </span>\
        </li>\
        ';
        }

        html += '</ul>';

        return html;
    }
    function smileyCallback(code) {

        var $icon = $('.joms-icon--active'),
            $wrapper = $icon.parent().find('.joms-textarea__wrapper'),
            $input = $wrapper.find('textarea.joms-textarea'),
            $hiddenInput = $wrapper.find('input.joms-textarea__hidden'),
            
            value,
            start = $input.prop("selectionStart");

        value = $input.val().slice(0, start) + code + $input.val().slice(start);

        $hiddenInput.val(value);
        $input.val(value);
        $input.prop("selectionStart", start + code.length);
        $input.prop("selectionEnd", start + code.length);
        $input.focus();
        $input.trigger('keydown')




    }

    function insertEmoticon(elm) {
        var $icon = $('.joms-icon--active'),
            $wrapper = $icon.parent().find('.joms-textarea__wrapper'),
            $input = $wrapper.find('textarea.joms-textarea'),
            $hiddenInput = $wrapper.find('input.joms-textarea__hidden'),
            code = $(elm).attr('data-code'),
            value,
            start = $input.prop("selectionStart");

        value = $input.val().slice(0, start) + code + $input.val().slice(start);

        $hiddenInput.val(value);
        $input.val(value);
        $input.prop("selectionStart", start + code.length);
        $input.prop("selectionEnd", start + code.length);
        $input.focus();
        $input.trigger('keydown')
    }

    function react(uid, reactId, type) {
        var current = getReaction(reactId),
            text = current.text,
            name = current.name,
            reactClass = 'reaction-btn--' + name,
            $btn = $('.joms-js--comment-actions .joms-button--reaction[data-uid=' + uid + ']');

        var classes = [
            'reaction-btn--like',
            'reaction-btn--love',
            'reaction-btn--haha',
            'reaction-btn--wow',
            'reaction-btn--sad',
            'reaction-btn--angry'
        ];

        $btn.removeClass(classes.join(' '));

        if (type === 'onBar') {
            $btn.addClass('reaction-btn--animate');
            setTimeout(function () {
                $btn.removeClass('reaction-btn--animate');
            }, 200);
        }

        $btn.addClass(reactClass);
        $btn.text(text);

        $btn.attr('data-reactid', reactId);
        $btn.attr('data-action', 'unreact');
        $btn.attr('onclick', 'javascript:;');

        joms.ajax({
            func: 'system,ajaxStreamAddLike',
            data: [uid, 'comment', reactId],
            callback: function (json) {
                var $status = $btn.siblings('.joms-comment__reaction-status'),
                    onclick = 'joms.view.comment.unreact(' + uid + ', ' + reactId + ')';

                $status.show();
                $status.html(json.html);

                $btn.attr('onclick', onclick);
            }
        });
    }

    function unreact(uid, reactId, type) {
        var $btn = $('.joms-js--comment-actions .joms-button--reaction[data-uid=' + uid + ']'),
            text = $btn.attr('data-lang-like');

        var classes = [
            'reaction-btn--like',
            'reaction-btn--love',
            'reaction-btn--haha',
            'reaction-btn--wow',
            'reaction-btn--sad',
            'reaction-btn--angry'
        ];

        $btn.removeClass(classes.join(' '));
        $btn.text(text);
        $btn.attr('data-reactid', 1);
        $btn.attr('data-action', 'react');
        $btn.attr('onclick', 'javascript:;');
        joms.ajax({
            func: 'system,ajaxStreamUnlike',
            data: [uid, 'comment', reactId],
            callback: function (json) {
                var $status = $btn.siblings('.joms-comment__reaction-status'),
                    onclick = 'joms.view.comment.react(' + uid + ', 1)';

                $status.show();
                $status.html(json.html);

                $btn.attr('onclick', onclick);
            }
        });
    }

    function getReaction(reactId) {
        var data = joms.getData('joms_reaction');
        var react = data.filter(function (item) {
            return item.id == reactId;
        }).pop();

        return react;
    }

    // Exports.
    return {
        start: initialize,
        stop: uninitialize,
        like: like,
        unlike: unlike,
        edit: edit,

        cancel: cancel,

        remove: remove,
        removeTag: removeTag,
        removePreview: removePreview,
        removeThumbnail: removeThumbnail,

        addAttachment: addAttachment,
        removeAttachment: removeAttachment,

        toggleText: toggleText,

        initInputbox: initInputbox,

        showEmoticonBoard: showEmoticonBoard,
        insertEmoticon: insertEmoticon,
        smileyCallback : smileyCallback,
        react: react,
        unreact: unreact
    };

});

(function (root, $, factory) {

    joms.util || (joms.util = {});
    joms.util.emoticon = factory(root, $);

    define('utils/emoticon',[], function () {
        return joms.util.emoticon;
    });

})(window, joms.jQuery, function (window, $) {
    function initialize() {

    }

    function showBoard(elm) {
        joms.util.emoji.showBoard(elm);

        return;
        this.$editor = {};
        
        if ($(elm).parent().parent().data('editor') != "") {
            this.$editor = $(elm).parent().parent().data('editor')
        }
        $('.joms-emoticon-js__board').remove();
        var $body = $('body'),
                $board = $('.joms-emoticon-js__board'),
                $icon = $(elm).parents('.joms-icon--emoticon'),
                offset = $(elm).offset(),
                offsetTop = 0,
                emoticons = joms.getData('joms_emo'),
                isRTL = $('html').attr('dir') === 'rtl';

        if (!$board.length) {
            html = renderBoard(emoticons);
            $body.append(html);
            $board = $('.joms-emoticon-js__board');
        }

        var spacer = isRTL ? 15 : ($board.outerWidth() - 30);
        var above = {
            display: 'block',
            top: (offset.top - $board.outerHeight()) + 'px',
            left: (offset.left - spacer) + 'px',
            position: 'absolute'
        }

        var animate_above = {
            opacity: '1',
            top: (offset.top - $board.outerHeight() - 10) + 'px'
        }

        var below = {
            display: 'block',
            top: (offset.top + 20) + 'px',
            left: (offset.left - spacer) + 'px',
            position: 'absolute'
        }

        var animate_below = {
            opacity: '1',
            top: (offset.top + 24) + 'px'
        }

        offsetTop = offset.top - $(window).scrollTop();
        var pos, ani, positionClass;

        if (offsetTop > ($board.outerHeight() + 30)) {
            pos = above;
            ani = animate_above;
            positionClass = 'joms-board--above'
        } else {
            pos = below;
            ani = animate_below;
            positionClass = 'joms-board--below';
        }

        $board.is(':hidden') && setTimeout(function () {
            $('.joms-icon--active').removeClass('joms-icon--active');
            $icon.addClass('joms-icon--active');
            $board.css(pos);
            $board.addClass(positionClass)
            setTimeout(function () {
                $board.css(ani);
            }, 100);

            $(document).one('click', function () {
                $board.css({
                    display: 'none',
                    opacity: '0'
                });

                $board.removeClass('joms-board--above joms-board--below');
            });
        }, 100)
    }

    function renderBoard(emoticons) {
        var html = '<ul class="joms-emoticon__board joms-emoticon-js__board">';
        for (var key in emoticons) {
            var emo = emoticons[key];
            html += '\
        <li>\
            <span\
                title="' + key + '"\
                onclick="joms.util.emoticon.insert(this)"\
                class="joms-emo2 joms-emo2-' + key + '"\
                data-code="' + emo[0] + '" >\
            </span>\
        </li>\
        ';
        }

        html += '</ul>';

        return html;
    }

    function insert(elm) {
        var code = $(elm).attr('data-code') ;
        this.$editor.smileyCallback(code );
    }

// Exports.
    return {
        start: initialize,
        showBoard: showBoard,
        insert: insert
    };

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.remove = factory( root );

    define('popups/stream.remove',[ 'utils/popup' ], function() {
        return joms.popup.stream.remove;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxConfirmDeleteActivity',
        data: [ '', id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'activities,ajaxDeleteActivity',
        data: [ '', id ],
        callback: function( json ) {
            var item;

            elem.off();
            popup.close();

            if ( json.success ) {
                item = joms.jQuery('.joms-stream').filter('[data-stream-id=' + id + ']');
                item.fadeOut( 500, function() {
                    item.remove();
                });
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div>',
            '<div class="joms-popup__content">', ( json.error || json.message ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.editLocation = factory( root, $ );

    define('popups/stream.editlocation',[ 'utils/popup' ], function() {
        return joms.popup.stream.editLocation;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxeditLocation',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );

            _.defer(function() {
                initMap( json );
            });
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var item = elem.find('.joms-js--location-input'),
        name = item.data('name'),
        lat  = item.data('lat'),
        lng  = item.data('lng');

    joms.ajax({
        func: 'activities,ajaxSaveLocation',
        data: [ id, name, lat, lng ],
        callback: function( json ) {
            var stream;

            elem.off();
            popup.close();

            if ( json.success ) {
                stream = $('.joms-stream').filter('[data-stream-id=' + id + ']');
                stream.find('.joms-status-location a').html( name );
            }
        }
    });
}

function initMap( json ) {
    joms.util.map(function() {
        var map = elem.find('.joms-js--location-map'),
            input = elem.find('.joms-js--location-input'),
            loading = elem.find('.joms-js--location-loading'),
            selector = elem.find('.joms-js--location-selector'),
            position, options, map, marker;

        position = new window.google.maps.LatLng( json.latitude, json.longitude );

        options = {
            center: position,
            zoom: 14,
            mapTypeId: window.google.maps.MapTypeId.ROADMAD,
            mapTypeControl: false,
            disableDefaultUI: true,
            draggable: false,
            scaleControl: false,
            scrollwheel: false,
            navigationControl: false,
            streetViewControl: false,
            disableDoubleClickZoom: true
        };

        map = new window.google.maps.Map( map[0], options );
        marker = new window.google.maps.Marker({
            draggable: false,
            map: map
        });

        marker.setPosition( position );
        map.panTo( position );

        input.on( 'input', function() {
            selector.hide()
            loading.show();
            onInput( this.value );
        });

        var onInput = _.debounce(function( keyword ) {
            keyword = $.trim( keyword );
            if ( ! keyword ) {
                return;
            }

            joms.util.map.search( keyword ).done(function( data ) {
                var html = '';
                if ( _.isArray( data ) ) {
                    _.each( data, function( item ) {
                        html += '<a class="joms-map--location-item" data-id="' + item.id + '"">'
                            + '<strong>' + item.name + '</strong><br />'
                            + '<span>' + ( item.description || '' ) + '</span>'
                            + '</a>';
                    });
                }

                loading.hide();
                selector.html( html );
                selector.show();
            });
        }, 1000 );

        input.val( json.location );
        onInput( json.location );

        selector.on( 'click', '.joms-map--location-item', function() {
            var elem = $( this ),
                data = elem.data(),
                name = elem.find( 'strong' ).text(),
                position;

            input.data( 'name', name );
            joms.util.map.detail( data.id ).done(function( place ) {
                var geometry = place.geometry,
                    location = geometry.location,
                    viewport = geometry.viewport;

                input.data( 'lat', location.lat() );
                input.data( 'lng', location.lng() );

                map.setCenter( location );
                marker.setPosition( location );
                if ( viewport ) {
                    map.fitBounds( viewport );
                } else {
                    map.setZoom( 15 );
                }
            });
        });

    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div>',
            '<div class="joms-popup__content">', ( json.html || json.error ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnEdit, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.addFeatured = factory( root );

    define('popups/stream.addfeatured',[ 'utils/popup' ], function() {
        return joms.popup.stream.addFeatured;
    });

})( window, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    var context = window.joms_page;
    var contextid;

    if ( context === 'profile' ) {
        context = 'profile';
        contextid = window.joms_user_id;
    } else if ( context === 'groups' ) {
        context = 'group';
        contextid = window.joms_group_id;
    } else if ( context === 'events' ) {
        context = 'event';
        contextid = window.joms_event_id;
    } else {
        context = 'frontpage';
        contextid = 0;
    }

    joms.ajax({
        func: 'system,ajaxFeatureStream',
        data: [ context, contextid, id ],
        callback: function( json ) {
            if ( json.success ) {
                window.location.reload();
                return;
            }

            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', (json.title || '&nbsp;'), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.error || json.message ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.removeFeatured = factory( root, $ );

    define('popups/stream.removefeatured',[ 'utils/popup' ], function() {
        return joms.popup.stream.removeFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    var context = window.joms_page;
    var contextid;

    if ( context === 'profile' ) {
        context = 'profile';
        contextid = window.joms_user_id;
    } else if ( context === 'groups' ) {
        context = 'group';
        contextid = window.joms_group_id;
    } else if ( context === 'events' ) {
        context = 'event';
        contextid = window.joms_event_id;
    } else {
        context = 'frontpage';
        contextid = 0;
    }

    joms.ajax({
        func: 'system,ajaxUnfeatureStream',
        data: [ context, contextid, id ],
        callback: function( json ) {
            if ( json.success ) {
                window.location.reload();
                return;
            }

            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', (json.title || '&nbsp;'), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.error || json.message ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.removeLocation = factory( root );

    define('popups/stream.removelocation',[ 'utils/popup' ], function() {
        return joms.popup.stream.removeLocation;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxRemoveLocation',
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'activities,deleteLocation',
        data: [ id ],
        callback: function( json ) {
            var item;

            elem.off();
            popup.close();

            if ( json.success ) {
                item = joms.jQuery('.joms-stream').filter('[data-stream-id=' + id + ']');
                item.find('.joms-status-location').remove();
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div>',
            '<div class="joms-popup__content">', ( json.error || json.message ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.removeMood = factory( root );

    define('popups/stream.removemood',[ 'utils/popup' ], function() {
        return joms.popup.stream.removeMood;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxConfirmRemoveMood',
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'activities,ajaxRemoveMood',
        data: [ id ],
        callback: function( json ) {
            var item;

            elem.off();
            popup.close();

            if ( json.success ) {
                item = joms.jQuery('.joms-stream').filter('[data-stream-id=' + id + ']');
                item.find('[data-type=stream-content]').find('span').eq(0).html( json.html );
                item.find('.colorcolorful-status__mood').html('');
                item.find('li.joms-js--contextmenu-removemood').remove();
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div>',
            '<div class="joms-popup__content">', ( json.error || json.message ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.report = factory( root );

    define('popups/stream.report',[ 'utils/popup' ], function() {
        return joms.popup.stream.report;
    });

})( window, function() {

var popup, elem, id, commentid;

function render( _popup, _id, _commentid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    commentid = _commentid;

    joms.ajax({
        func: 'system,ajaxReport',
        data: [],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'change', 'select', changeText );
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function changeText( e ) {
    elem.find('textarea').val( e.target.value );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var rTrim = /^\s+|\s+$/g,
        message;

    message = elem.find('textarea').val();
    message = message.replace( rTrim, '' );

    if ( !message ) {
        elem.find('.joms-js--error').show();
        return;
    }

    elem.find('.joms-js--error').hide();
    
    joms.ajax({
        func: 'system,ajaxSendReport',
        data: [ 'activities,reportActivities', window.location.href, message, id, commentid ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            json.html,
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, commentid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, commentid );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.selectPrivacy = factory( root, $ );

    define('popups/stream.selectprivacy',[ 'utils/popup' ], function() {
        return joms.popup.stream.selectPrivacy;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    popup.items[0] = {
        type: 'inline',
        src: buildHtml()
    };

    popup.updateItemHTML();

    elem = popup.contentContainer;
    elem.on( 'click', 'a', save );
}

function save( e ) {
    var el = $( e.currentTarget ),
        privacy = el.data('value'),
        className = el.data('classname');

    joms.ajax({
        func: 'activities,ajaxUpdatePrivacyActivity',
        data: [ id, privacy ],
        callback: function( json ) {
            var item;

            elem.off();
            popup.close();

            if ( json.success ) {
                item = $('.joms-stream').filter('[data-stream-id=' + id + ']');
                item.find('.joms-stream__meta use').attr( 'xlink:href', window.location + '#' + className );
            }
        }
    });
}

function buildHtml() {
    var privacies, filter, base, html, i;

    privacies = [
        [ 'public', 10, window.joms_lang.COM_COMMUNITY_PRIVACY_PUBLIC, 'earth' ],
        [ 'site_members', 20, window.joms_lang.COM_COMMUNITY_PRIVACY_SITE_MEMBERS, 'users' ],
        [ 'friends', 30, window.joms_lang.COM_COMMUNITY_PRIVACY_FRIENDS, 'user' ],
        [ 'me', 40, window.joms_lang.COM_COMMUNITY_PRIVACY_ME, 'lock' ]
    ];

    // Filter.
    filter = window.joms_privacylist;
    if ( filter && filter.length ) {
        for ( i = privacies.length - 1; i >= 0; i-- ) {
            if ( filter.indexOf( privacies[i][0] ) < 0 ) {
                privacies.splice( i, 1 );
            }
        }
    }

    base = window.location.href;
    base = base.replace( /#.*$/, '' );

    html = '';
    for ( i = 0; i < privacies.length; i++ ) {
        html += '<a href="javascript:" data-value="' + privacies[i][1] + '" data-classname="joms-icon-' + privacies[i][3] + '">';
        html += '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="' + base + '#joms-icon-' + privacies[i][3] + '"></use></svg> ';
        html += '<span>' + privacies[i][2] + '</span></a>';
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--privacy">',
        '<div><div class="joms-popup__content joms-popup__content--single">', html, '</div></div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.share = factory( root, $ );

    define('popups/stream.share',[ 'utils/loadlib', 'utils/popup' ], function() {
        return joms.popup.stream.share;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxSharePopup',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            initPhotoArranger();
            initVideoPlayers();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var attachment = {
        msg: elem.find('textarea.joms-textarea').val(),
        privacy: elem.find('[data-ui-object=joms-dropdown-value]').val()
    };

    joms.ajax({
        func: 'activities,ajaxAddShare',
        data: [ id, JSON.stringify( attachment ) ],
        callback: function( json ) {
            elem.off();
            popup.close();

            if ( json.success ) {
                $('.joms-stream__container').prepend( json.html );
                initPhotoArranger();
                initVideoPlayers();
            }
        }
    });
}

function initPhotoArranger() {
    var initialized = '.joms-js--initialized',
        $containers = $('.joms-media--images').not( initialized );

    $containers.each(function() {
        var $ct = $( this ),
            $imgs = $ct.find('img'),
            counter = 0;

        $imgs.each(function() {
            var $img = $( this );

            $('<img>').on('load', function() {
                counter++;
                if ( counter === $imgs.length ) {
                    $ct.siblings('.joms-media--loading').remove();
                    $ct.addClass( initialized.substr(1) );
                    $imgs.show();
                    joms.util.photos.arrange( $ct );
                }

            }).attr( 'src', $img.attr('src') );
        });
    });
}

function initVideoPlayers() {
    var initialized = '.joms-js--initialized',
        cssVideos = '.joms-js--video',
        videos = $( cssVideos ).not( initialized ).addClass( initialized.substr(1) );

    if ( !videos.length ) {
        return;
    }

    joms.loadCSS( joms.ASSETS_URL + 'vendors/mediaelement/mediaelementplayer.min.css' );
    videos.on( 'click.joms-video', cssVideos + '-play', function() {
        var $el = $( this ).closest( cssVideos );
        joms.util.video.play( $el, $el.data() );
    });

    if ( joms.ios ) {
        setTimeout(function() {
            videos.find( cssVideos + '-play' ).click();
        }, 2000 );
    }
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div>',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
            '<div class="joms-popup__action">',
                '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
                '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnShare, '</button> &nbsp;',
                '<div style="display:inline-block; position:relative;">',
                    '<div class="joms-button--privacy" data-ui-object="joms-dropdown-button" data-name="share-privacy" data-type="no-popup">',
                        '<svg class="joms-icon" viewBox="0 0 16 16"><use xlink:href="#joms-icon-earth"></use></svg>',
                        '<input type="hidden" data-ui-object="joms-dropdown-value" value="10">',
                    '</div>',
                    '<ul class="joms-dropdown joms-dropdown--privacy" data-name="share-privacy">',
                        '<li data-classname="joms-icon-earth" data-value="10" style="white-space:nowrap">',
                            '<svg class="joms-icon" viewBox="0 0 16 16"><use xlink:href="#joms-icon-earth"></use></svg>',
                            ' <span>', window.joms_lang.COM_COMMUNITY_PRIVACY_PUBLIC, '</span>',
                        '</li>',
                        '<li data-classname="joms-icon-users" data-value="20" style="white-space:nowrap">',
                            '<svg class="joms-icon" viewBox="0 0 16 16"><use xlink:href="#joms-icon-users"></use></svg>',
                            ' <span>', window.joms_lang.COM_COMMUNITY_PRIVACY_SITE_MEMBERS, '</span>',
                        '</li>',
                        '<li data-classname="joms-icon-user" data-value="30" style="white-space:nowrap">',
                            '<svg class="joms-icon" viewBox="0 0 16 16"><use xlink:href="#joms-icon-user"></use></svg>',
                            ' <span>', window.joms_lang.COM_COMMUNITY_PRIVACY_FRIENDS, '</span>',
                        '</li>',
                        '<li data-classname="joms-icon-lock" data-value="40" style="white-space:nowrap">',
                            '<svg class="joms-icon" viewBox="0 0 16 16"><use xlink:href="#joms-icon-lock"></use></svg>',
                            ' <span>', window.joms_lang.COM_COMMUNITY_PRIVACY_ME, '</span>',
                        '</li>',
                    '</ul>',
                '</div>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.showComments = factory( root, $ );

    define('popups/stream.showcomments',[ 'utils/popup' ], function() {
        return joms.popup.stream.showComments;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id, type;

function render( _popup, _id, _type ) {
    var data;

    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    type = _type;

    data = [ id ];
    if ( type ) {
        data.push( type );
    }

    joms.ajax({
        func: 'system,ajaxStreamShowComments',
        data: data,
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            initVideoPlayers();
            joms.parseEmoji();
        }
    });
}

function initVideoPlayers() {
    var initialized = '.joms-js--initialized',
        cssVideos = '.joms-js--video',
        videos = $('.joms-comment__body,.joms-js--inbox').find( cssVideos ).not( initialized ).addClass( initialized.substr(1) );

    if ( !videos.length ) {
        return;
    }

    joms.loadCSS( joms.ASSETS_URL + 'vendors/mediaelement/mediaelementplayer.min.css' );
    videos.on( 'click.joms-video', cssVideos + '-play', function() {
        var $el = $( this ).closest( cssVideos );
        joms.util.video.play( $el, $el.data() );
    });

    if ( joms.ios ) {
        setTimeout(function() {
            videos.find( cssVideos + '-play' ).click();
        }, 2000 );
    }
}

function buildHtml( json ) {
    var isEmpty = true,
        fragment;

    json || (json = {});

    fragment = $( $.trim( json.html || '' ) );
    if ( fragment.children().length ) {
        isEmpty = false;
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--rounded joms-popup--80pc">',
        '<button class="mfp-close joms-hide"></button>',
        '<div class="joms-comment">', ( isEmpty ? window.joms_lang.COM_COMMUNITY_NO_COMMENTS_YET : json.html ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, type ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, type );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.showLikes = factory( root, $ );

    define('popups/stream.showlikes',[ 'utils/popup' ], function() {
        return joms.popup.stream.showLikes;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id, target;

function render( _popup, _id, _target ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    target = _target;

    joms.ajax({
        func: 'system,ajaxStreamShowLikes',
        data: [ id, target ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    var isEmpty = true,
        fragment;

    json || (json = {});

    fragment = $( $.trim( json.html || '' ) );
    if ( fragment.children().length ) {
        isEmpty = false;
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--rounded joms-popup--80pc">',
        '<button class="mfp-close joms-hide"></button>',
        '<div class="joms-comment">', ( isEmpty ? window.joms_lang.COM_COMMUNITY_NO_LIKES_YET : json.html ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, target ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, target );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream || (joms.popup.stream = {});
    joms.popup.stream.showOthers = factory( root, $ );

    define('popups/stream.showothers',[ 'utils/popup' ], function() {
        return joms.popup.stream.showOthers;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxShowOthers',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--rounded joms-popup--80pc">',
        '<button class="mfp-close joms-hide"></button>',
        '<div class="joms-comment">', ( json.html || '' ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.stream = factory( root, joms.popup.stream || {});

    define('popups/stream',[
        'popups/stream.remove',
        'popups/stream.editlocation',
        'popups/stream.addfeatured',
        'popups/stream.removefeatured',
        'popups/stream.removelocation',
        'popups/stream.removemood',
        'popups/stream.report',
        'popups/stream.selectprivacy',
        'popups/stream.share',
        'popups/stream.showcomments',
        'popups/stream.showlikes',
        'popups/stream.showothers'
    ], function() {
        return joms.popup.stream;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, $, factory ) {

    joms.view || (joms.view = {});
    joms.view.customize = factory( root, $ );

    define('views/customize',[ 'popups/stream' ], function() {
        return joms.view.stream;
    });

})( window, joms.jQuery, function(/* window, $ */) {

function initialize() {
    uninitialize();
}

function uninitialize() {
}

// Exports.
return {
    start: initialize,
    stop: uninitialize
};

});

(function( root, $, factory ) {

    joms.view || (joms.view = {});
    joms.view.misc = factory( root, $ );

    define('views/misc',[],function() {
        return joms.view.misc;
    });

})( window, joms.jQuery, function( window, $ ) {

var $main, $sidebar;

function initialize() {
    $main = $('.joms-main');
    $sidebar = $('.joms-sidebar');

    rearrangeModuleDiv();
    $( window ).on( 'resize', rearrangeModuleDiv );
}

var rearrangeModuleDiv = joms._.debounce(function() {
    if ( joms.screenSize() !== 'large' ) {
        if ( $sidebar.nextAll('.joms-main').length ) {
            $sidebar.insertAfter( $main );
        }
    } else {
        if ( $sidebar.prevAll('.joms-main').length ) {
            $sidebar.insertBefore( $main );
        }
    }
}, 500 );

var fixSVG = joms._.debounce(function() {
    var url = window.joms_current_url,
        svgFixClass = 'joms-icon--svg-fixed',
        svg;

    if ( !url ) {
        return;
    }

    svg = $('.joms-icon use').not('.' + svgFixClass );
    svg.each(function() {
        var href = ( this.getAttribute('xlink:href') || '' ),
            path = href.replace( /^[^#]*#/, '#' );

        if ( href === url + path ) {
            svgFixClass += ' joms-icon--svg-unmodified';
        } else {
            this.setAttribute( 'xlink:href', url + path );
        }

        this.setAttribute( 'class', svgFixClass );
    });
}, 200 );

// Exports.
return {
    start: initialize,
    fixSVG: fixSVG
};

});

(function( root, $, factory ) {

    joms.view || (joms.view = {});
    joms.view.stream = factory( root, $ );

    define('views/stream',[ 'popups/stream' ], function() {
        return joms.view.stream;
    });

})( window, joms.jQuery, function( window, $ ) {

var container;

function initialize() {
    uninitialize();
    container = $('.joms-stream__wrapper');
}

function uninitialize() {
    if ( container ) {
        container.off();
    }
}

function like( id ) {
    var item = container.find( '.joms-js--stream-' + id );
    if (+item.attr('do-like')) {
        return;
    }
    item.attr('do-like', 1);
    joms.ajax({
        func: 'system,ajaxStreamAddLike',
        data: [ id ],
        callback: function( json ) {
            var item, btn, info, counter, status;

            if ( json.success ) {
                item = container.find( '.joms-js--stream-' + id );
                if ( item.length ) {
                    btn = item.find('.joms-stream__actions').find('.joms-button--liked');
                    btn.attr( 'onclick', 'joms.api.streamUnlike(\'' + id + '\');' );
                    btn.addClass('liked');
                    btn.find('span').html( btn.data('lang-unlike') );
                    btn.find('use').attr( 'xlink:href', window.location + '#joms-icon-thumbs-down' );

                    info = item.find('.joms-stream__status');
                    if ( !json.html ) {
                        info.remove();
                    } else if ( info.length ) {
                        info.html( json.html );
                    } else {
                        info = item.find('.joms-stream__actions');
                        info = $('<div class=joms-stream__status />').insertAfter( info );
                        info.html( json.html );
                    }

                    status = item.find('.joms-stream__status--mobile');
                    if ( status.length ) {
                        counter = status.find( '.joms-like__counter--' + id );
                        counter.html( +counter.eq(0).text() + 1 );
                        status.find('.joms-like__status').show();
                    }
                    item.attr('do-like', 0);
                }
            }
        }
    });
}

function unlike( id ) {
    var item = container.find( '.joms-js--stream-' + id );
    if (+item.attr('do-like')) {
        return;
    }
    item.attr('do-like', 1);
    joms.ajax({
        func: 'system,ajaxStreamUnlike',
        data: [ id ],
        callback: function( json ) {
            var item, btn, info, counter, status;

            if ( json.success ) {
                item = container.find( '.joms-js--stream-' + id );
                if ( item.length ) {
                    btn = item.find('.joms-stream__actions').find('.joms-button--liked');
                    btn.attr( 'onclick', 'joms.api.streamLike(\'' + id + '\');' );
                    btn.removeClass('liked');
                    btn.find('span').html( btn.data('lang-like') );
                    btn.find('use').attr( 'xlink:href', window.location + '#joms-icon-thumbs-up' );

                    info = item.find('.joms-stream__status');
                    if ( !json.html ) {
                        info.remove();
                    } else if ( info.length ) {
                        info.html( json.html );
                    } else {
                        info = item.find('.joms-stream__actions');
                        info = $('<div class=joms-stream__status />').insertAfter( info );
                        info.html( json.html );
                    }

                    status = item.find('.joms-stream__status--mobile');
                    if ( status.length ) {
                        counter = status.find( '.joms-like__counter--' + id );
                        var val = +counter.eq(0).text() - 1;
                        counter.html( val );
                        if (val === 0) {
                            status.find('.joms-like__status').hide();
                        }
                    }
                    item.attr('do-like', 0);
                }
            }
        }
    });
}

function edit( id ) {
    var $stream   = $( '.joms-js--stream-' + id ).eq(0),
        $sbody    = $stream.find('.joms-stream__body'),
        $colorfulContainer = $sbody.find('.colorful-status__container'),
        $scontent = $sbody.find('[data-type=stream-content]'),
        $seditor  = $sbody.find('[data-type=stream-editor]'),
        $textarea = $seditor.find('textarea'),
        origValue = $textarea.val();

    $scontent.hide();
    $seditor.show();
    $textarea.removeData('joms-tagging');
    $textarea.jomsTagging();
    $textarea.off( 'reset.joms-tagging' );
    $textarea.on( 'reset.joms-tagging', function() {
        $seditor.hide();
        $scontent.show();
        $textarea.val( origValue );
    });

    if (!$textarea.hasClass('limited') && $colorfulContainer.length) {
        $textarea.attr('maxlength', 150);
        $textarea
        .on('keydown', function(e) {
            var ENTER = 13;
            if (e.keyCode === 13) {
                var numline = $textarea.val().split('\n').length;
                if (numline === 4) {
                    e.preventDefault();
                }
            }
        })
        $textarea.addClass('limited');
    }

    $textarea.focus();
}

function editSave( id, text, origText ) {
    joms.ajax({
        func: 'activities,ajaxSaveStatus',
        data: [ id, text ],
        callback: function( json ) {
            var $stream   = $('.joms-stream').filter('[data-stream-id=' + id + ']'),
                $sbody    = $stream.find('.joms-stream__body'),
                $scontent = $sbody.find('[data-type=stream-content]'),
                $colorfulContainer = $sbody.find('.colorful-status__container'),
                $seditor  = $sbody.find('[data-type=stream-editor]'),
                $textarea = $seditor.find('textarea');

            if ( json.success ) {
                if ($colorfulContainer.length) {
                    $colorfulContainer.find('.colorful-status__inner').html(json.data)
                } else {
                    $scontent.html( '<span>' + json.data + '</span>' );    
                }
                $scontent.html( '<span>' + json.data + '</span>' );
                $textarea.val( json.unparsed );
            } else {
                $textarea.val( origText );
            }

            $seditor.hide();
            $colorfulContainer.length || $scontent.show();

            joms.parseEmoji();
        }
    });
}

function save( id, el ) {
    var $stream   = $( el ).closest('.joms-js--stream'),
        $sbody    = $stream.find('.joms-stream__body'),
        $seditor  = $sbody.find('[data-type=stream-editor]'),
        $textarea = $seditor.find('textarea'),
        value     = $textarea.val();

    if ($textarea[0].joms_hidden) {
        value = $textarea[0].joms_hidden.val();
    }

    editSave( id, value, value );
}

function cancel( id ) {
    var $stream   = $( '.joms-js--stream-' + id ),
        $sbody    = $stream.find('.joms-stream__body'),
        $scontent = $sbody.find('[data-type=stream-content]'),
        $seditor  = $sbody.find('[data-type=stream-editor]');

    $seditor.hide();
    $scontent.show();
}

function editLocation( id ) {
    joms.popup.stream.editLocation( id );
}

function remove( id ) {
    joms.popup.stream.remove( id );
}

function removeLocation( id ) {
    joms.popup.stream.removeLocation( id );
}

function removeMood( id ) {
    joms.popup.stream.removeMood( id );
}

function removeTag( id ) {
    joms.ajax({
        func: 'activities,ajaxRemoveUserTag',
        data: [ id, 'post' ],
        callback: function( json ) {
            var $stream, $sbody, $soptions, $scontent, $seditor, $textarea;

            if ( json.success ) {
                $stream   = $( '.joms-js--stream-' + id );
                $sbody    = $stream.find('.joms-stream__body');
                $soptions = $stream.find('.joms-list__options').find('.joms-dropdown').find('.joms-js--contextmenu-removetag');
                $scontent = $sbody.find('[data-type=stream-content]');
                $seditor  = $sbody.find('[data-type=stream-editor]');
                $textarea = $seditor.find('textarea');

                $scontent.html( '<span>' + json.data + '</span>' );
                $textarea.val( json.unparsed );
                $soptions.remove();
            }
        }
    });
}

function selectPrivacy( id ) {
    joms.popup.stream.selectPrivacy( id );
}

function share( id ) {
    joms.popup.stream.share( id );
}

function hide( streamId, userId ) {
    joms.ajax({
        func: 'activities,ajaxHideStatus',
        data: [ streamId, userId ],
        callback: function( json ) {
            var streams;

            if ( json.success ) {
                streams = container.find('.joms-stream[data-stream-id=' + streamId + ']');
                streams.fadeOut( 500, function() {
                    streams.remove();
                });
            }
        }
    });
}


function ignoreUser( id ) {
    joms.popup.stream.ignoreUser( id );
}

function showLikes( id, target ) {
    if ( target === 'popup' ) {
        joms.popup.stream.showLikes( id, target );
        return;
    }

    joms.ajax({
        func: 'system,ajaxStreamShowLikes',
        data: [ id ],
        callback: function( json ) {
            var streams;
            if ( json.success ) {
                streams = container.find('.joms-stream[data-stream-id=' + id + ']');
                streams.find('.joms-stream__status').html( json.html || '' );
            }
        }
    });
}

function showComments( id, type ) {
    joms.popup.stream.showComments( id, type );
}

function showOthers( id ) {
    joms.popup.stream.showOthers( id );
}

function report( id, commentid ) {
    joms.popup.stream.report( id, commentid );
}

function addFeatured( id ) {
    joms.popup.stream.addFeatured( id );
}

function removeFeatured( id ) {
    joms.popup.stream.removeFeatured( id );
}

function toggleText( id ) {
    var $text = $( '.joms-js--stream-text-' + id ),
        $full = $( '.joms-js--stream-textfull-' + id ),
        $btn  = $( '.joms-js--stream-texttoggle-' + id );

    if ( $full.is(':visible') ) {
        $full.hide();
        $text.show();
        $btn.html( $btn.data('lang-more') );
    } else {
        $text.hide();
        $full.show();
        $btn.html( $btn.data('lang-less') );
    }
}

function react( uid, reactId, type ) {
    var current = getReaction( reactId),
        text = current.text,
        name = current.name,
        reactClass = 'reaction-btn--' + name,
        $btn = $('.joms-button--reaction[data-uid='+uid+'][data-type=stream]');
    
    var classes = [
        'reaction-btn--like',
        'reaction-btn--love',
        'reaction-btn--haha',
        'reaction-btn--wow',
        'reaction-btn--sad',
        'reaction-btn--angry'
    ];
    
    $btn.removeClass(classes.join(' '));

    if (type === 'onBar') {
        $btn.addClass('reaction-btn--animate');
        setTimeout(function() {
            $btn.removeClass('reaction-btn--animate');
        }, 200);
    }

    $btn.addClass( reactClass );
    $btn.text( text );

    $btn.attr('data-reactid', reactId);
    $btn.attr('data-action', 'unreact');
    $btn.attr('onclick', 'javascript:;');

    joms.ajax({
        func: 'system,ajaxStreamAddLike',
        data: [ uid, '', reactId ],
        callback: function( json ) {
            if (json) {
                var $status = $btn.parents('.joms-stream__actions').siblings('.joms-stream__status');
                
                $status.show();
                $status.html(json.html);
                
                var onclick = 'joms.view.stream.unreact('+uid+', '+reactId+')';
                $btn.attr('onclick', onclick);
            }
        }
    });
}

function unreact( uid, reactId ) {
    var $btn = $('.joms-stream__actions .joms-button--reaction[data-uid='+uid+'][data-type=stream]'),
        text = $btn.attr('data-lang-like');

    var classes = [
        'reaction-btn--like',
        'reaction-btn--love',
        'reaction-btn--haha',
        'reaction-btn--wow',
        'reaction-btn--sad',
        'reaction-btn--angry'
    ];
    
    $btn.removeClass(classes.join(' '));
    $btn.text( text );
    $btn.attr('data-reactid', 1);
    $btn.attr('data-action', 'react');
    $btn.attr('onclick', 'javascript:;');

    joms.ajax({
        func: 'system,ajaxStreamUnlike',
        data: [ uid, '', reactId ],
        callback: function( json ) {
            if (json) {
                var $status = $btn.parents('.joms-stream__actions').siblings('.joms-stream__status');

                if (!json.html) {
                    $status.hide();
                }

                $status.html(json.html);

                var onclick = 'joms.view.stream.react('+uid+', 1)';
                $btn.attr('onclick', onclick);
            }
        }
    });
}

function getReaction( reactId ) {
    var data = joms.getData('joms_reaction');
    var react = data.filter(function(item) {
        return item.id == reactId;
    }).pop();

    return react;
}

// Exports.
return {
    start: initialize,
    stop: uninitialize,
    like: like,
    unlike: unlike,
    edit: edit,
    save: save,
    cancel: cancel,
    editLocation: editLocation,
    remove: remove,
    removeLocation: removeLocation,
    removeMood: removeMood,
    removeTag: removeTag,
    selectPrivacy: selectPrivacy,
    share: share,
    hide: hide,
    ignoreUser: ignoreUser,
    showLikes: showLikes,
    showComments: showComments,
    showOthers: showOthers,
    report: report,
    toggleText: toggleText,
    addFeatured: addFeatured,
    removeFeatured: removeFeatured,
    react: react,
    unreact: unreact
};

});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.photos = factory( root, $ );

})( window, joms.jQuery, function( window, $ ) {

var containers = [],
    maxHeightThreshold = 180;

$( window ).resize( joms._.debounce(function() {
    _rearrange();
}, 500 ));

function arrange( $ct ) {
    var $children = $ct.children(),
        width = $ct.width();

    $children.css({
        display: 'block',
        'float': 'left',
        margin: '1px 0',
        overflow: 'hidden',
        padding: 0,
        position: 'relative'
    }).each(function() {
        var $el = $( this );
        $el.data({
            width: $el.width(),
            height: $el.height()
        });
    });

    _arrange( width, $children );

    // Add to registered container.
    containers.push( $ct );
}

function _arrange( ctWidth, $children ) {
    var from = 0,
        len = $children.length;

    $children.each(function( index ) {
        var divider, data, height, i;

        divider = 0;
        for ( i = from; i <= index; i++ ) {
            data = $children.eq(i).data();
            divider += data.width / data.height;
        }

        height = ctWidth / divider;

        if ( height <= maxHeightThreshold ) {
            for ( i = from; i <= index; i++ ) {
                $children.eq( i ).find('img').css({ height: height });
            }
            from = index + 1;
        } else if ( i === len ) {
            for ( i = from; i <= len; i++ ) {
                $children.eq( i ).nextAll().addBack()
                    .css({ height: maxHeightThreshold })
                    .find('img').css({ height: height });
            }
        }
    });

    // fix ff issue
    $children.css('border', '1px solid transparent');
    setTimeout(function() {
        $children.css('border', '');
    });
}

function _rearrange() {
    var i, $ct;

    for ( i = 0; i < containers.length; i++ ) {
        $ct = containers[i];
        _arrange( $ct.width(), $ct.children() );
    }
}

// Exports.
return {
    arrange: arrange
};

});

define("utils/photos", function(){});

(function( root, $, factory ) {

    joms.view || (joms.view = {});
    joms.view.streams = factory( root, $ );

    define('views/streams',[ 'utils/hovercard', 'utils/photos', 'utils/video', 'functions/tagging' ], function() {
        return joms.view.streams;
    });

})( window, joms.jQuery, function( window, $ ) {

var container, adAgencySettings, adAgencyImpressions;

function initialize() {
    uninitialize();
    container = $('.joms-stream__wrapper');

    // Initialize only when container is available.
    if ( !container.length )
        return;

    // Initialize comment box.
    initInputbox();

    // Initialize jquery montage plugin.
    initPhotoArranger();

    // Initialize media element.
    initVideoPlayers();

    // Disable adagency, infinite scroll, and recent activities on single activity page.
    if ( !window.joms_singleactivity && !window.joms_filter_keyword ) {

        // Initialize ad agency.
        if ( +window.joms_adagency ) {
            initAdAgency();
        }

        // Initialize infinite scroll.
        if ( +window.joms_infinitescroll ) {
            setupAutoLoadActivities();
        }

        // Get recent activities.
        if ( +window.joms_enable_refresh ) {
            getRecentActivitiesCount();
        }
    }

    var filterbar = document.getElementsByClassName('joms-activity-filter-action');
    if ( filterbar && filterbar.length ) {
        window.FastClick.attach( filterbar[0] );
    }
}

function uninitialize() {
    if ( container ) {
        container.off();
    }
}

function initPhotoArranger() {
    var initialized = '.joms-js--initialized',
        $containers = $('.joms-media--images').not( initialized );

    $containers.each(function() {
        var $ct = $( this ),
            $imgs = $ct.find('img'),
            counter = 0;

        $imgs.each(function() {
            var $img = $( this );

            $('<img>').on('load', function() {
                counter++;
                if ( counter === $imgs.length ) {
                    $ct.siblings('.joms-media--loading').remove();
                    $ct.addClass( initialized.substr(1) );
                    $imgs.show();
                    joms.util.photos.arrange( $ct );
                }

            }).attr( 'src', $img.attr('src') );
        });
    });
}

function initVideoPlayers() {
    var initialized = '.joms-js--initialized',
        cssVideos = '.joms-js--video',
        videos = $('.joms-stream__body').find( cssVideos ).not( initialized ).addClass( initialized.substr(1) );

    if ( !videos.length ) {
        return;
    }

    joms.loadCSS( joms.ASSETS_URL + 'vendors/mediaelement/mediaelementplayer.min.css' );
    videos.on( 'click.joms-video', cssVideos + '-play', function() {
        var $el = $( this ).closest( cssVideos );
        joms.util.video.play( $el, $el.data() );
    });

    // if ( joms.ios ) {
    //     setTimeout(function() {
    //         videos.find( cssVideos + '-play' ).click();
    //     }, 1000 );
    // }
}

function initInputbox() {
    joms.fn.tagging.initInputbox();
}

function getEdgeStreamId( edge ) {
    var stream, ids;

    stream = container.find('.joms-stream').not('.joms-stream--adagency');
    if ( !stream.length )
        return 0;

    ids = [];
    stream.each(function() {
        ids.push( +$(this).data('stream-id') );
    });

    return ids[ edge === 'last' ? ids.length - 1 : 0 ];
}

function getFilter() {
    var $ct = container.children('.joms-stream__container');
    return {
        filter: $ct.data('filter'),
        filterId: $ct.data('filterid'),
        filterValue: $ct.data('filter-value')
    };
}

function getRecentActivitiesCount() {
    var o = getRecentActivitiesCount,
        id, filter;

    if ( o.loading )
        return;

    if ( !( id = window.joms_newest_stream_id ) ) {
        console.warn('Variable `window.joms_newest_stream_id` not found.');
        return;
    }

    filter = getFilter();

    o.loading = true;
    o.xhr && o.xhr.abort();
    o.xhr = joms.ajax({
        func: 'activities,ajaxGetRecentActivitiesCount',
        data: [ id, filter.filter, filter.filterId, filter.filterValue ],
        callback: function( json ) {
            var count   = +json.count,
                delay   = +json.nextPingDelay,
                $latest = $('.joms-js--stream-latest'),
                $link;

            o.loading = false;
            o.xhr     = null;

            if ( !window.joms_postbox_posting ) {
                if ( count > 0 ) {
                    $link = $( '<a href="javascript:">' + json.html + '</a>' );
                    $link.on( 'click', getRecentActivities );
                    $latest.html( $link ).show();
                } else {
                    $latest.hide().empty();
                }
            }

            if ( delay > 0 ) {
                joms._.delay( getRecentActivitiesCount, delay );
            }
        }
    });
}

function getRecentActivities() {
    var o = getRecentActivities,
        id, filter;

    if ( o.loading )
        return;

    if ( !( id = getEdgeStreamId() ) )
        return;

    filter = getFilter();

    o.loading = true;
    o.xhr && o.xhr.abort();
    o.xhr = joms.ajax({
        func: 'activities,ajaxGetRecentActivities',
        data: [ id, filter.filter, filter.filterId, filter.filterValue ],
        callback: function( json ) {
            var $items = $( $.trim( json.html ) ).filter('.joms-stream__wrapper').find('.joms-stream'),
                $latest = $('.joms-js--stream-latest'),
                i;

            // update newest stream id
            if ( json.newest_stream_id ) {
                window.joms_newest_stream_id = +json.newest_stream_id;
            }

            o.loading = false;

            if ( $items.length ) {
                for ( i = $items.length - 1; i >= 0; i-- ) {
                    // Prevent duplicated stream.
                    if ( ! ( $('.joms-js--stream-' + $items.eq(i).data('stream-id') ).length ) ) {
                        container.find('.joms-stream__container').prepend( $items.eq( i ) );
                    }
                }
            }

            $latest.hide();

            initInputbox();
            initPhotoArranger();
            initVideoPlayers();
        }
    });
}

function getOlderActivities() {
    var o = getOlderActivities,
        id, filter, btn, loading;

    if ( o.loading )
        return;

    if ( !( id = getEdgeStreamId('last') ) )
        return;

    filter = getFilter();

    o.loading = true;
    btn = container.find('#activity-more');
    loading = btn.find('.loading');
    btn = btn.find('.joms-button--primary');

    btn.hide();
    loading.show();

    joms.ajax({
        func: 'activities,ajaxGetOlderActivities',
        data: [ id, filter.filter, filter.filterId, filter.filterValue ],
        callback: function( json ) {
            var isLast = false,
                $items;

            o.loading = false;
            loading.hide();

            if ( json.html ) {
                $items = $( $.trim( json.html ) ).filter('.joms-stream__wrapper').find('.joms-stream');
                if ( $items.length ) {
                    container.find('.joms-stream__container').append( $items );
                } else {
                    isLast = true;
                }
            }

            initInputbox();
            initPhotoArranger();
            initVideoPlayers();
            injectAdAgencyItem();
            joms.parseEmoji();

            if ( !isLast ) {
                btn.show();
            }
        }
    });
}

var setupAutoLoadActivities = function() {
    var load, win, doc, treshhold, lastScrollTop;

    if ( joms.mobile )
        return false;

    $('.joms-stream__loadmore').find('a').hide();
    win = $( window );
    doc = $( document );

    treshhold = Math.max( +window.joms_autoloadtrigger || 0, 20 );
    lastScrollTop = 0;

    load = function() {
        var scrollTop = win.scrollTop(),
            winHeight = win.height(),
            direction, id, filter;

        direction = scrollTop < lastScrollTop ? 'up' : 'down';
        lastScrollTop = scrollTop;

        if ( direction !== 'down' ) {
            return;
        }

        if ( ( scrollTop + winHeight ) < ( doc.height() - treshhold ) ) {
            return;
        }

        if ( load.loading ) {
            return;
        }

        load.loading = true;
        container.find('.joms-stream__loadmore .loading').show();

        if ( !( id = getEdgeStreamId('last') ) ) {
            return;
        }

        filter = getFilter();

        joms.ajax({
            func: 'activities,ajaxGetOlderActivities',
            data: [ id, filter.filter, filter.filterId, filter.filterValue ],
            callback: function( json ) {
                var isLast = false,
                    $items;

                container.find('.joms-stream__loadmore .loading').hide();

                if ( json.html ) {
                    $items = $( $.trim( json.html ) ).filter('.joms-stream__wrapper').find('.joms-stream');
                    if ( $items.length ) {
                        container.find('.joms-stream__container').append( $items );
                    } else {
                        isLast = true;
                    }
                }

                initInputbox();
                initPhotoArranger();
                initVideoPlayers();
                injectAdAgencyItem();
                joms.parseEmoji();

                if ( isLast )
                    return;

                load.loading = false;
            }
        });

    }

    win.on( 'scroll', load );
};

function initAdAgency() {
    joms.ajax({
        func: 'system,ajaxGetAdagency',
        callback: function( json ) {
            adAgencySettings = json || {};

            // Shuffle ads.
            if ( adAgencySettings.ads && adAgencySettings.ads.length ) {
                adAgencySettings.ads = joms._.shuffle( adAgencySettings.ads );
            }

            injectAdAgencyItem();
        }
    });
}

function createAdAgencyItem( config, ad ) {
    var html;

    html  = '<div data-stream-type="adagency" class="joms-stream joms-stream--adagency">';
    html +=   '<div class="joms-stream__header">';
    html +=     '<div class="joms-avatar--stream">';
    html +=       '<a href="' + ad.on_click_url + '" target="_blank" onclick="window.open(\'' + ad.on_click_url + '\'); return false;">';
    html +=         '<img src="' + ad.banner_avatar + '">';
    html +=       '</a>';
    html +=     '</div>';
    html +=     '<div class="joms-stream__meta">';
    html +=       '<a class="joms-stream__user" href="' + ad.on_click_url + '" target="_blank" onclick="window.open(\'' + ad.on_click_url + '\'); return false;">' + ad.banner_headline + '</a>';
    html +=       '<a href="' + ad.on_click_url + '" target="_blank" onclick="window.open(\'' + ad.on_click_url + '\'); return false;"><span class="joms-stream__time"><small>' + (ad.short_url_to_promote || ad.url_to_promote) + '</small></span></a>';
    html +=     '</div>';
    html +=   '</div>';
    html +=   '<div class="joms-stream__body">';
    html +=     '<p>' + ad.banner_text + '</p>';
    html +=     '<div class="joms-media--image">';
    html +=       '<a href="' + ad.on_click_url + '" target="_blank" onclick="window.open(\'' + ad.on_click_url + '\'); return false;">';
    html +=         '<img src="' + ad.banner_image_content + '">';
    html +=       '</a>';
    html +=     '</div>';
    html +=   '</div>';

    if ( +config.show_sponsored_stream_info || +config.show_create_ad_link ) {
        html += '<div class="joms-stream__actions">';
        if ( +config.show_sponsored_stream_info ) {
            html += '<span style="float:left">' + config.sponsored_stream_info_text + '</span>';
        }
        if ( +config.show_create_ad_link ) {
            html += '<a href="' + config.create_ad_link + '" style="float:right">' + config.create_ad_link_text + '</a>';
        }
        html += '<div style="clear:both"></div>';
        html += '</div>';
    }

    html += '</div>';
    return html;
}

function injectAdAgencyItem() {
    var ads, config, after, every, counter, isAfter, pageMap, isLoggedIn, isPublic;

    if ( !(adAgencySettings && adAgencySettings.config && adAgencySettings.ads && adAgencySettings.ads.length) ) {
        return;
    }

    ads     = adAgencySettings.ads;
    config  = adAgencySettings.config;
    after   = +config.display_stream_ads_after_value;
    every   = +config.display_stream_ads_every_value;
    isAfter = +config.display_stream_ads;
    counter = 0;

    isLoggedIn = +window.joms_my_id;
    if ( !isLoggedIn ) {
        for ( var i = ads.length - 1; i >= 0; i-- ) {
            isPublic = +ads[i].banner_access;
            if ( !isPublic ) {
                ads.splice( i, 1 );
            }
        }
    }

    if ( !ads.length ) {
        return;
    }

    pageMap = {
        frontpage : 'front_page_stream',
        profile   : 'profile_stream',
        pages     : 'pages_stream',
        groups    : 'group_stream',
        events    : 'event_stream'
    };

    if ( ( config.js_stream_ads_on || [] ).indexOf( pageMap[ window.joms_page ] ) < 0 ) {
        return;
    }

    container.find('.joms-stream').not('.joms-stream--adagency').each(function( i ) {
        var elem, next;

        // Show ad after 'x' stream items.
        if ( isAfter ) {

            if ( !after ) {
                return false;
            }

            if ( i === after - 1 ) {
                elem = $( this );
                next = elem.next();
                if ( !next.length || !next.hasClass('joms-stream--adagency') ) {
                    elem.after( createAdAgencyItem( config, ads[ counter ] ) );
                    increaseAdAgencyImpression( ads[ counter ] );
                }

                return false;
            }

        // Show ad every 'x' stream items.
        } else {

            if ( !every ) {
                return false;
            }

            if ( (i + 1) % every === 0 ) {
                elem = $( this );
                next = elem.next();
                if ( !next.length || !next.hasClass('joms-stream--adagency') ) {
                    elem.after( createAdAgencyItem( config, ads[ counter % ads.length ] ) );
                    increaseAdAgencyImpression( ads[ counter % ads.length ] );
                }

                counter++;
            }

        }
    });
}

function increaseAdAgencyImpression( ad ) {
    var id = [
        ad.advertiser_id,
        ad.campaign_id,
        ad.banner_id,
        ad.campaign_type
    ].join('-');

    adAgencyImpressions || (adAgencyImpressions = {});

    if ( adAgencyImpressions[ id ] ) {
        return;
    }

    adAgencyImpressions[ id ] = true;

    joms.ajax({
        func: 'system,ajaxAdagencyGetImpression',
        data: [ ad.advertiser_id, ad.campaign_id, ad.banner_id, ad.campaign_type ],
        callback: function() {}
    });
}

// Exports.
return {
    start: initialize,
    stop: uninitialize,
    loadMore: getOlderActivities
};

});

(function( root, $, factory ) {

    joms.view || (joms.view = {});
    joms.view.toolbar = factory( root, $ );

})( window, joms.jQuery, function( window, $ ) {

var wrapper, buttonMain, buttonUser, buttonSubMenu, xhr, lastbtn;

function hideMenu( e ) {
    var nohide = $( e.target ).closest('.joms-trigger__menu--main, .joms-trigger__menu--user, .joms-menu, .joms-menu--user');
    if ( nohide.length ) return;
    if ( wrapper.hasClass('show-menu') || wrapper.hasClass('show-menu--user') ) {
        e.preventDefault();
        e.stopPropagation();
        wrapper.removeClass('show-menu');
        wrapper.removeClass('show-menu--user');
    }
}

function toggleMenu( e ) {
    e.stopPropagation();
    wrapper.toggleClass('show-menu');
}

function toggleUserMenu( e ) {
    e.stopPropagation();
    wrapper.toggleClass('show-menu--user');
}

function toggleSubMenu( e ) {
    var el = $( e.currentTarget ).closest('li');
    if ( el.hasClass('show-submenu') ) {
        el.removeClass('show-submenu');
    } else {
        el.addClass('show-submenu').siblings().removeClass('show-submenu');
    }
}

function start() {
    if ( !wrapper ) wrapper = $('.jomsocial-wrapper');
    if ( !buttonMain ) buttonMain = $('.joms-trigger__menu--main');
    if ( !buttonUser ) buttonUser = $('.joms-trigger__menu--user');
    if ( !buttonSubMenu ) buttonSubMenu = $('.joms-menu__toggle');

    stop();

    wrapper.on( 'click.menu', hideMenu );

    wrapper.on( 'click.menu', '.joms-js--has-dropdown', function( e ) {
        e.preventDefault();
        e.stopPropagation();
        window.location = $( e.currentTarget ).attr('href');
    });

    wrapper.on( 'mouseenter.menu', '.joms-toolbar--desktop > ul > li > a.joms-js--has-dropdown', function( e ) {
        var btn = $( e.currentTarget );
        if ( ! btn.siblings('ul.joms-dropdown').is(':visible') ) {
            lastbtn = btn.trigger('click.dropdown');
        }
    });

    wrapper.on( 'mouseleave.menu', '.joms-toolbar--desktop', function() {
        if ( lastbtn ) {
            lastbtn.trigger('collapse.dropdown');
            lastbtn = undefined;
        }
    });

    buttonMain.on( 'click.menu', toggleMenu );
    buttonUser.on( 'click.menu', toggleUserMenu );
    buttonSubMenu.on( 'click.submenu', toggleSubMenu );

    getNotifications();
}

function stop() {
    if ( wrapper ) {
        wrapper.off( 'click.menu' );
        wrapper.off( 'click.menu', '.joms-js--has-dropdown' );
        wrapper.off( 'mouseenter.menu', '.joms-toolbar--desktop > ul > li > a.joms-js--has-dropdown' );
        wrapper.off( 'mouseleave.menu', '.joms-toolbar--desktop' );
    }

    if ( buttonMain ) buttonMain.off('click.menu');
    if ( buttonUser ) buttonUser.off('click.menu');
    if ( buttonSubMenu ) buttonSubMenu.off('click.submenu');
}

function notificationGeneral() {
    joms.ajax({
        func: 'notification,ajaxGetNotification',
        data: [ '' ],
        callback: function( json ) {
            var elem;
            if ( json.html ) {
                elem = $('.joms-popover--toolbar-general');
                elem.html( json.html );
            }
        }
    });
}

function notificationFriend() {
    joms.ajax({
        func: 'notification,ajaxGetRequest',
        data: [ '' ],
        callback: function( json ) {
            var elem;
            if ( json.html ) {
                elem = $('.joms-popover--toolbar-friendrequest');
                elem.html( json.html );
                elem.off( 'click', '.joms-button__approve' ).on( 'click', '.joms-button__approve', notificationFriendReject );
                elem.off( 'click', '.joms-button__reject' ).on( 'click', '.joms-button__reject', notificationFriendApprove );
            }
        }
    });
}

function notificationFriendReject( e ) {
    var elem = $( e.currentTarget ),
        id = elem.data('connection');

    joms.ajax({
        func: 'friends,ajaxRejectRequest',
        data: [ id ],
        callback: function( json ) {
            elem = $('.joms-js__friend-request-' + id);
            elem.find('.joms-popover__actions').remove();
            elem.find('.joms-popover__content').html( json.error || json.message );
            notificationCounter( 'friendrequest', -1 );
        }
    });
}

function notificationFriendApprove( e ) {
    var elem = $( e.currentTarget ),
        id = elem.data('connection');

    joms.ajax({
        func: 'friends,ajaxApproveRequest',
        data: [ id ],
        callback: function( json ) {
            elem = $('.joms-js__friend-request-' + id);
            elem.find('.joms-popover__actions').remove();
            elem.find('.joms-popover__content').html( json.error || json.message );
            notificationCounter( 'friendrequest', -1 );
        }
    });
}

function notificationPm() {
    joms.ajax({
        func: 'notification,ajaxGetInbox',
        data: [ '' ],
        callback: function( json ) {
            var elem;
            if ( json.html ) {
                elem = $('.joms-popover--toolbar-pm');
                elem.html( json.html );
            }
        }
    });
}

function notificationCounter( type, count ) {
    var counters;

    if ([ 'general', 'friendrequest', 'pm' ].indexOf( type ) < 0)
        return;

    counters = $( '.joms-notifications__label--' + type );
    count = +counters.eq(0).text() + count;
    counters.html( count > 0 ? count : '' );
}

function search( elem ) {
    var keyword = elem,
        rTrim = /^\s+|\s+$/g,
        field, loading, viewall;

    if ( typeof elem !== 'string' ) {
        keyword = $( elem ).val();
    }

    keyword = keyword || '';
    if ( !keyword.replace(rTrim, '') )
        return;

    if ( xhr ) {
        xhr.abort();
    }

    elem = $('.joms-popover--toolbar-search');
    field = elem.find('.joms-js--field');
    loading = elem.find('.joms-js--loading');
    viewall = elem.find('.joms-js--viewall');

    elem.find('li:not(.joms-js--noremove)').remove();
    viewall.hide();
    loading.show();

    xhr = joms.ajax({
        func: 'search,ajaxSearch',
        data: [ keyword ],
        callback: function( json ) {
            var html, i, form, max, btn;

            loading.hide();

            if ( json.error ) {
                html = '<li class="joms-js--error">' + json.error + '</li>';
                field.after( html );
                return;
            }

            if ( json.length ) {
                html = '';
                max = Math.min( 3, json.length );
                for ( i = 0; i < max; i++ ) {
                    html += '<li><div class="joms-popover__avatar"><div class="joms-avatar">';
                    html += '<img src="' + json[i].thumb + '"></div></div>';
                    html += '<div class="joms-popover__content">';
                    html += '<h5><a href="' + json[i].url + '">' + json[i].name + '</a></h5>';
                    html += '</div></li>';
                }

                form = viewall.find('form');
                form.find('input').val( keyword );
                viewall.off( 'click', 'a' ).on( 'click', 'a', function() {
                    form[0].submit();
                });

                btn = viewall.find('a');
                btn.html( btn.data('lang').replace( '%1$s', json.length ) );

                field.after( html );
                viewall.show();
                elem.show();
            }
        }
    });
}

function getNotifications() {
    var viewerId = +window.joms_my_id;
    if ( !viewerId )
        return;

    // do not call it if elements not found
    if ( ! $('.joms-js--notiflabel-general').length )
        return;

    joms.ajax({
        func: 'activities,ajaxGetTotalNotifications',
        callback: function( json ) {
            var generals, friendrequests, pms, delay, title;

            json || (json = {});

            generals       = json.newNotificationCount;
            friendrequests = json.newFriendInviteCount;
            pms            = json.newMessageCount;
            delay          = +json.nextPingDelay;

            if ( typeof generals !== 'undefined' ) {
                generals = +generals || '';
                $('.joms-js--notiflabel-general').html( generals );

                // Also update document's title.
                title = document.title;
                title = title.replace( /^\(\d+\)\s/, '' );
                title = ( generals ? '(' + generals + ') ' : '' ) + title;
                document.title = title;
            }

            if ( typeof friendrequests !== 'undefined' ) {
                $('.joms-js--notiflabel-frequest').html( +friendrequests || '' );
            }

            if ( typeof pms !== 'undefined' ) {
                $('.joms-js--notiflabel-inbox').html( +pms || '' );
            }

            if ( delay > 0 ) {
                joms._.delay( getNotifications, delay );
            }
        }
    });
}

// Exports.
return {
    start: start,
    stop: stop,
    notificationGeneral: notificationGeneral,
    notificationFriend: notificationFriend,
    notificationPm: notificationPm,
    notificationCounter: notificationCounter,
    search: search
};

});

define("views/toolbar", function(){});

(function( root, $, factory ) {

    joms.fn || (joms.fn = {});
    joms.fn.announcement = factory( root, $ );

    define('functions/announcement',[],function() {
        return joms.fn.announcement;
    });

})( window, joms.jQuery, function( window, $ ) {

function edit( groupid, id ) {
    $( '.joms-js--announcement-view-' + groupid + '-' + id ).hide();
    $( '.joms-js--announcement-edit-' + groupid + '-' + id ).show();
    $( '.joms-subnav,.joms-subnav--desktop' ).hide();
    $( '.joms-sidebar' ).hide();
    $( '.joms-main' ).css({ padding: 0, width: '100%' });
}

function editCancel( groupid, id ) {
    $( '.joms-js--announcement-edit-' + groupid + '-' + id ).hide();
    $( '.joms-js--announcement-view-' + groupid + '-' + id ).show();
    $( '.joms-subnav,.joms-subnav--desktop' ).css( 'display', '' );
    $( '.joms-main' ).css({ padding: '', width: '' });
    $( '.joms-sidebar' ).show();
}

// Exports.
return {
    edit: edit,
    editCancel: editCancel
};

});

(function( root, $, factory ) {

    joms.fn || (joms.fn = {});
    joms.fn.facebook = factory( root, $ );

    define('functions/facebook',[],function() {
        return joms.fn.facebook;
    });

})( window, joms.jQuery, function() {

function update() {
    joms.ajax({
        func: 'connect,ajaxUpdate',
        data: [ '' ],
        callback: function( json ) {
            console.log( json );
        }
    });
}

// Exports.
return {
    update: update
};

});

(function( root, $, factory ) {

    joms.fn || (joms.fn = {});
    joms.fn.notification = factory( root, $ );

    define('functions/notification',[],function() {
        return joms.fn.notification;
    });

})( window, joms.jQuery, function( window, $ ) {

var requests = [];

function updateCounter( type, id, count ) {
    var $el;

    id = type + '-' + id;

    // Prevent double/multiple request for one notification.
    if ( requests.indexOf( id ) >= 0 ) {
        return;
    }

    $el = $( '.joms-js--notiflabel-' + type );

    if ( requests.indexOf( id ) < 0 ) {
        requests.push( id );
        count = +$el.eq(0).text() + count;
        $el.html( count > 0 ? count : '' );
    }
}

// Exports.
return {
    updateCounter: updateCounter
};

});

(function( root, $, factory ) {

    joms.fn || (joms.fn = {});
    joms.fn.invitation = factory( root, $ );

    define('functions/invitation',[ 'functions/notification' ], function() {
        return joms.fn.invitation;
    });

})( window, joms.jQuery, function( window, $ ) {

function accept( type, id ) {
    var func;
    var data = [id];

    switch (type) {
        case 'group':
            func = 'notification,ajaxGroupJoinInvitation';
            break;

        case 'page':
            func = 'notification,ajaxPageJoinInvitation';
            break;

        default:
            func = 'events,ajaxJoinInvitation';
            break;
    }

    joms.ajax({
        func: func,
        data: data,
        callback: function( json ) {
            _update( type, id, json );
        }
    });
}

function reject( type, id ) {
    var func;
    var data = [id];

    switch (type) {
        case 'group':
            func = 'notification,ajaxGroupRejectInvitation';
            break;

        case 'page':
            func = 'notification,ajaxPageRejectInvitation';
            break;

        default:
            func = 'events,ajaxRejectInvitation';
            break;
    }
    
    joms.ajax({
        func: func,
        data: data,
        callback: function( json ) {
            _update( type, id, json );
        }
    });
}

function _update( type, id, json ) {
    $( '.joms-js--invitation-buttons-' + type + '-' + id ).remove();
    $( '.joms-js--invitation-notice-' + type + '-' + id ).html( json && json.message || '' );
    joms.fn.notification.updateCounter( 'general', id, -1 );
}

// Exports.
return {
    accept: accept,
    reject: reject
};

});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.field = factory( root, $ );

})( window, joms.jQuery, function( window, $ ) {

function _createFileWrapper() {
    return [
        '<div data-wrap="file" style="width:350px;max-width:100%;position:relative;overflow:hidden">',
            '<input type="text" class="joms-input" readonly="readonly" placeholder="', (window.joms_lang && window.joms_lang.COM_COMMUNITY_SELECT_FILE || 'Select file'), '.."',
                'style="margin-bottom:2px">',
        '</div>'
    ].join('');
}

function _extractFileName( path ) {
    var matches = path.match( /[^\\\/]+$/ );
    if ( matches && matches[0] ) {
        return matches[0];
    }

    return '';
}

// Exports.
return {
    file: function( $elems ) {
        $elems = $( $elems );
        $elems.each(function( i, $elem ) {
            var $wrapper;

            $elem = $( $elem );
            $wrapper = $elem.parent();

            if ( ! $wrapper.data('wrap') ) {
                $wrapper = $( _createFileWrapper() );
                $elem.before( $wrapper );
                $elem.hide();
                $elem.appendTo( $wrapper );
                $elem.css({
                    cursor: 'pointer',
                    position: 'absolute',
                    right: 0,
                    top: 0,
                    width: '100%',
                    height: '100%',
                    opacity: 0
                });
                $elem.show();
            }

            // On file selection.
            $elem.off( 'change.joms-file' );
            $elem.on( 'change.joms-file', function() {
                $wrapper.find('.joms-input').val( _extractFileName( $(this).val() ) );
            });

        });
    }
};

});

define("utils/field", function(){});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.info = factory( root, $ );

    define('popups/info',[ 'utils/popup' ], function() {
        return joms.popup.info;
    });

})( window, joms.jQuery, function() {

function render( popup, title, content ) {
    popup.items[0] = {
        type: 'inline',
        src: buildHtml( title, content )
    };

    popup.updateItemHTML();
}

function buildHtml( title, content ) {
    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( title || '&nbsp;' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( content || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( title, content ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, title, content );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.login = factory( root, $ );

    define('popups/login',[ 'utils/popup' ], function() {
        return joms.popup.login;
    });

})( window, joms.jQuery, function() {

var popup, elem;

function login( _popup, _json ) {
    if ( _json && typeof _json === 'object' ) {
        render( _popup, _json );
        return;
    }

    var uri = _json;
    if ( typeof _json !== 'string' ) {
        uri = window.location.href;
        uri = uri.replace(/#.*$/, '');
    }

    joms.ajax({
        func: 'system,ajaxLogin',
        data: [ uri ],
        callback: function( json ) {
            render( _popup, json );
        }
    });
}

function render( _popup, _json ) {
    if ( elem ) elem.off();

    popup = _popup;
    popup.items[0] = {
        type: 'inline',
        src: buildHtml( _json )
    };

    popup.updateItemHTML();

    elem = popup.contentContainer;
    elem.find('form').on( 'submit', send );
}

function send( e ) {
    e.preventDefault();
    e.stopPropagation();
    joms.ajax({
        func: 'system,ajaxGetLoginFormToken',
        data: [],
        callback: function( json ) {
            var form = elem.find('form');
            if ( json.token ) {
                form.find('.joms-js--token input').prop('name', json.token);
            }
            form.off('submit');
            form.find('[name=submit]').click();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( json ) {
    joms.util.popup.prepare(function( mfp ) {
        login( mfp, json );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.album || (joms.popup.album = {});
    joms.popup.album.addFeatured = factory( root, $ );

    define('popups/album.addfeatured',[ 'utils/popup' ], function() {
        return joms.popup.album.addFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxAddFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE ,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.album || (joms.popup.album = {});
    joms.popup.album.removeFeatured = factory( root, $ );

    define('popups/album.removefeatured',[ 'utils/popup' ], function() {
        return joms.popup.album.removeFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxRemoveFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.album || (joms.popup.album = {});
    joms.popup.album.remove = factory( root );

    define('popups/album.remove',[ 'utils/popup' ], function() {
        return joms.popup.album.remove;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxRemoveAlbum',
        data: [ id, 'myphotos' ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form').submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', json.message, '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.album = factory( root, joms.popup.album || {});

    define('popups/album',[
        'popups/album.addfeatured',
        'popups/album.removefeatured',
        'popups/album.remove'
    ], function() {
        return joms.popup.album;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.announcement || (joms.popup.announcement = {});
    joms.popup.announcement.remove = factory( root );

    define('popups/announcement.remove',[ 'utils/popup' ], function() {
        return joms.popup.announcement.remove;
    });

})( window, function() {

var popup, elem, groupid, id;

function render( _popup, _groupid, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    groupid = _groupid;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxShowRemoveBulletin',
        data: [ groupid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( groupid, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, groupid, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.announcement = factory( root, joms.popup.announcement || {});

    define('popups/announcement',[
        'popups/announcement.remove'
    ], function() {
        return joms.popup.announcement;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.app || (joms.popup.app = {});
    joms.popup.app.about = factory( root, $ );

    define('popups/app.about',[ 'utils/popup' ], function() {
        return joms.popup.app.about;
    });

})( window, joms.jQuery, function() {

var popup, elem, name;

function render( _popup, _name ) {
    if ( elem ) elem.off();
    popup = _popup;
    name = _name;

    joms.ajax({
        func: 'apps,ajaxShowAbout',
        data: [ name ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( name ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, name );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.app || (joms.popup.app = {});
    joms.popup.app.browse = factory( root, $ );

    define('popups/app.browse',[ 'utils/popup' ], function() {
        return joms.popup.app.browse;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, pos;

function render( _popup, _pos ) {
    if ( elem ) elem.off();
    popup = _popup;
    pos = _pos;

    joms.ajax({
        func: 'apps,ajaxBrowse',
        data: [ pos ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', 'a[data-appname]', save );
            elem.on( 'click', '.joms-js--btn-view-all', viewAll );

        }
    });
}

function save( e ) {
    var el = $( e.target ),
        appName = el.data('appname'),
        position = el.data('position'),
        stacked = position.indexOf('-stacked') >= 0,
        tabTemplate = '<a href="#joms-js--app-app_id" class="no-padding joms-js--app-tab-app_id active"><div class="joms-tab__bar--button"><span class="title">app_title</span></div></a>';

    joms.ajax({
        func: 'apps,ajaxAddApp',
        data: [ appName, position ],
        callback: function( json ) {
            var $pos, $btn, $tab;
            if ( json.success ) {
                $pos = $( '.joms-js--app-pos-' + pos );
                $tab = $pos.find('.joms-tab__bar').eq(0);
                if (stacked) {
                    $tab.before( $(json.item).show() );
                } else {
                    $btn = $tab.find('.joms-js--app-new');
                    $btn.prevAll().removeClass('active');
                    $btn.before( tabTemplate.replace( /app_id/g, json.id ).replace( /app_title/, json.title ) );
                    $pos.find('.joms-tab__content').hide();
                    $pos.append( $(json.item).show() );
                }
                getSetting( json.id, appName );
            }
        }
    });
}

function getSetting( appId, appName ) {
    joms.ajax({
        func: 'apps,ajaxShowSettings',
        data: [ appId, appName ],
        callback: function( json ) {
            elem.off( 'click', 'a[data-appname]' );
            elem.html( buildHtml( json, 'setting' ) );
            elem.on( 'click', '.joms-popup__content,.joms-popup__action', function( e ) {
                e.stopPropagation();
                return false;
            });
            elem.on( 'click', '[data-ui-object=popup-button-save]', function() {
                saveSetting();
            });
        }
    });
}

function saveSetting() {
    var $form = elem.find('form'),
        params = $form.serializeArray(),
        data = [],
        i;

    for ( i = 0; i < params.length; i++ ) {
        data.push([ params[i].name, params[i].value ]);
    }

    joms.ajax({
        func: 'apps,ajaxSaveSettings',
        data: [ data ],
        callback: function( json ) {
            if ( json.error ) {
                elem.find('.joms-popup__content').html( json.error );
                elem.find('.joms-popup__action').remove();
                return;
            }

            popup.close();
        }
    });
}

function viewAll() {
    var $ct = elem.find('.joms-popup__content').eq(0),
        height = $ct.innerHeight();

    $ct.css({
        height: height,
        overflow: 'auto'
    });

    elem.find('.joms-js--btn-view-all').parent().remove();
    elem.find('.joms-js--app').show();

    $ct.animate({ scrollTop: $ct[0].scrollHeight });
}

function buildHtml( json, type ) {
    var action = '';

    json || (json = {});

    if ( type === 'setting' && json.btnSave ) {
        action = [
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-js--button-close joms-left">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnSave, '</button>',
            '</div>'
        ].join('');
    } else {
        action = [
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
            '</div>'
        ].join('');
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        action,
        '</div>'
    ].join('');
}

// Exports.
return function( pos ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, pos );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.app || (joms.popup.app = {});
    joms.popup.app.privacy = factory( root, $ );

    define('popups/app.privacy',[ 'utils/popup' ], function() {
        return joms.popup.app.privacy;
    });

})( window, joms.jQuery, function() {

var popup, elem, name;

function render( _popup, _name ) {
    if ( elem ) elem.off();
    popup = _popup;
    name = _name;

    joms.ajax({
        func: 'apps,ajaxShowPrivacy',
        data: [ name ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function save() {
    var $radio = elem.find('input[type=radio]:checked'),
        privacy = $radio.val();

    joms.ajax({
        func: 'apps,ajaxSavePrivacy',
        data: [ name, privacy ],
        callback: function( json ) {
            if ( json.error ) {
                elem.find('.joms-popup__content').html( json.error );
                elem.find('.joms-popup__action').remove();
                return;
            }

            popup.close();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnSave, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( name ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, name );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.app || (joms.popup.app = {});
    joms.popup.app.remove = factory( root, $ );

    define('popups/app.remove',[ 'utils/popup' ], function() {
        return joms.popup.app.remove;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'apps,ajaxRemove',
        data: [ id ],
        callback: function( json ) {
            var $tab, $nexttab, $content;

            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            // locate the app
            $tab = $( '.joms-js--app-tab-' + id );
            $content = $( '#joms-js--app-' + id );

            // find next tab
            $nexttab = $tab.prev();
            if ( !$nexttab.length ) $nexttab = $tab.next().not('.joms-js--app-new');

            // remove the app
            $tab.remove();
            $content.remove();
            $nexttab.length && $nexttab.click();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.app || (joms.popup.app = {});
    joms.popup.app.setting = factory( root, $ );

    define('popups/app.setting',[ 'utils/popup' ], function() {
        return joms.popup.app.setting;
    });

})( window, joms.jQuery, function() {

var popup, elem, id, name;

function render( _popup, _id, _name ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    name = _name;

    joms.ajax({
        func: 'apps,ajaxShowSettings',
        data: [ id, name ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function save() {
    var $form = elem.find('form'),
        params = $form.serializeArray(),
        data = [],
        i;

    for ( i = 0; i < params.length; i++ ) {
        data.push([ params[i].name, params[i].value ]);
    }

    joms.ajax({
        func: 'apps,ajaxSaveSettings',
        data: [ data ],
        callback: function( json ) {
            if ( json.error ) {
                elem.find('.joms-popup__content').html( json.error );
                elem.find('.joms-popup__action').remove();
                return;
            }

            popup.close();
        }
    });
}

function buildHtml( json ) {
    var action = '';

    json || (json = {});

    if ( json.btnSave ) {
        action = [
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-js--button-close joms-left">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnSave, '</button>',
            '</div>'
        ].join('');
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single" style="max-height:315px; overflow:auto">', ( json.html || '' ), '</div>',
        action,
        '</div>'
    ].join('');
}

// Exports.
return function( id, name ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, name );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.app = factory( root, joms.popup.app || {});

    define('popups/app',[
        'popups/app.about',
        'popups/app.browse',
        'popups/app.privacy',
        'popups/app.remove',
        'popups/app.setting'
    ], function() {
        return joms.popup.app;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});


(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.avatar || (joms.popup.avatar = {});
    joms.popup.avatar.change = factory( root, $ );

    define('popups/avatar.change',[ 'utils/crop', 'utils/loadlib', 'utils/popup' ], function() {
        return joms.popup.avatar.change;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, type, id, uploader, container, button, result;

function render( _popup, _type, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    type = _type;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxUploadAvatar',
        data: [ type, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-upload', upload );
            elem.on( 'click', '.joms-js--button-save', save );
            elem.on( 'click', '.joms-js--button-rotate-left', rotateLeft );
            elem.on( 'click', '.joms-js--button-rotate-right', rotateRight );

            // Init uploader upon render.
            uploadInit();
        }
    });
}

function save() {
    var crop = joms.util.crop.getSelection();

    joms.ajax({
        func: 'photos,ajaxUpdateThumbnail',
        data: [ type, id, crop.x, crop.y, crop.width, crop.height ],
        callback: function( json ) {
            if ( json.success ) {
                window.location.reload( true );
            }
        }
    });
}

function rotateLeft() {
    joms.api.avatarRotate( type, id, 'left', function() {
        reloadImage();
    });
}

function rotateRight() {
    joms.api.avatarRotate( type, id, 'right', function() {
        reloadImage();
    });
}

function reloadImage() {
    var cropper = $('.joms-avatar__cropper'),
        img = cropper.find('img'),
        src = img.attr('src');

    src = src.replace(/\?.*$/, '');
    src = src + '?_=' + (new Date()).getTime();

    joms.util.crop.detach();
    img.removeAttr('src');
    img.attr( 'src', src );

    setTimeout(function() {
        joms.util.crop( img );
    }, 100 );
}

function upload() {
    uploadInit(function() {
        button.click();
    });
}

function uploadInit( callback ) {
    if ( typeof callback !== 'function' ) {
        callback = function() {};
    }

    if ( uploader ) {
        callback();
        return;
    }

    joms.util.loadLib( 'plupload', function () {
        var url;

        url       = elem.find('form').attr('action');
        container = $('<div id="joms-js--avatar-uploader" aria-hidden="true" style="width:1px; height:1px; position:absolute; overflow:hidden;">').appendTo( document.body );
        button    = $('<div id="joms-js--avatar-uploader-button">').appendTo( container );
        uploader  = new window.plupload.Uploader({
            url: url,
            filters: [{ title: 'Image files', extensions: 'jpg,jpeg,png,gif' }],
            container: 'joms-js--avatar-uploader',
            browse_button: 'joms-js--avatar-uploader-button',
            runtimes: 'html5,html4',
            multi_selection: false,
            file_data_name: 'filedata'
        });

        uploader.bind( 'FilesAdded', uploadAdded );
        uploader.bind( 'Error', uploadError );
        uploader.bind( 'UploadProgress', uploadProgress );
        uploader.bind( 'FileUploaded', uploadUploaded );
        uploader.bind( 'UploadComplete', uploadComplete );
        uploader.init();

        button = container.find('input[type=file]');
        callback();
    });
}

function uploadAdded( up ) {
    window.setTimeout(function() {
        elem.find('.joms-progressbar__progress').css({ width: 0 });
        up.refresh();
        up.start();
    }, 0);
}

function uploadError() {

}

function uploadProgress( up, file ) {
    var percent, bar, pleasewait;

    percent = Math.min( 100, Math.floor( file.loaded / file.size * 100 ) );
    bar = elem.find( '.joms-progressbar__progress' );
    bar.stop().animate({ width: percent + '%' });

    pleasewait = $('.please-wait');
    pleasewait.show();
}

function uploadUploaded( up, files, data ) {
    var json = {},
        cropper;

    // Parse json response.
    try {
        json = JSON.parse( data.response );
    } catch ( e ) {}

    result = json;

    if ( json.msg && !json.error ) {
        cropper = $('.joms-avatar__cropper');
        cropper.find('img').attr( 'src', json.msg );
        cropper.show();
        setTimeout(function() {
            var elem = cropper.find('img');
            joms.util.crop.detach();
            joms.util.crop( elem );
        }, 100 );
    }
}

function uploadComplete() {
    if ( ! result.error ) {
        elem.find('.joms-js--avatar-uploader-error').hide();
    } else {
        elem.find('.joms-js--avatar-uploader-error').html( result.msg ).show();
        elem.find('.joms-progressbar__progress').stop().animate({ width: '0%' });
    }

    elem.find('.please-wait').hide();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        ( json.html || '' ),
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( type, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, type, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.avatar || (joms.popup.avatar = {});
    joms.popup.avatar.remove = factory( root, $ );

    define('popups/avatar.remove',[ 'utils/popup' ], function() {
        return joms.popup.avatar.remove;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _type, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxRemovePicture',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form').submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
        '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
        '<div class="joms-popup__hide">',
        '<form method="POST" action="', json.redirUrl, '"><input type="hidden" name="userid" value="' , id, '"></form>',
        '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( type, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, type, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.avatar || (joms.popup.avatar = {});
    joms.popup.avatar.rotate = factory( root, $ );

    define('popups/avatar.rotate',[],function() {
        return joms.popup.avatar.rotate;
    });

})( window, joms.jQuery, function( window, $ ) {

function render( type, id, direction, callback ) {
    joms.ajax({
        func: 'profile,ajaxRotateAvatar',
        data: [ type, id, direction ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( json.error );
                return;
            }

            if ( json.success ) {
                $( '.joms-js--avatar-' + id )
                    .attr( 'src', json.avatar + '?_=' + (new Date()).getTime() );

                if ( typeof callback === 'function' ) {
                    callback( json );
                }
            }
        }
    });
}

// Exports.
return function( type, id, direction, callback ) {
    render( type, id, direction, callback );
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.avatar = factory( root, joms.popup.avatar || {});

    define('popups/avatar',[
        'popups/avatar.change',
        'popups/avatar.remove',
        'popups/avatar.rotate'
    ], function() {
        return joms.popup.avatar;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});


(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.comment || (joms.popup.comment = {});
    joms.popup.comment.showLikes = factory( root, $ );

    define('popups/comment.showlikes',[ 'utils/popup' ], function() {
        return joms.popup.comment.showLikes;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxshowLikedUser',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--rounded joms-popup--80pc">',
        '<button class="mfp-close joms-hide"></button>',
        '<div class="joms-comment">', ( json.html || '' ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.comment = factory( root, joms.popup.comment || {});

    define('popups/comment',[
        'popups/comment.showlikes'
    ], function() {
        return joms.popup.comment;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.cover || (joms.popup.cover = {});
    joms.popup.cover.change = factory( root, $ );

    define('popups/cover.change',[ 'utils/loadlib', 'utils/popup' ], function() {
        return joms.popup.cover.change;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, type, id, uploader, container, button, result;

function render( _popup, _type, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    type = _type;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxChangeCover',
        data: [ type, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--album', getPhotoList );
            elem.on( 'click', '.joms-js--back-to-album', backToAlbum );
            elem.on( 'click', '.joms-js--select-photo', selectPhoto );
            elem.on( 'click', '[data-ui-object=popup-button-upload]', upload );

            // Init uploader upon render.
            uploadInit();
        }
    });
}

function getPhotoList() {
    var $el = $( this ),
        album = $el.data('album'),
        total = $el.data('total');

    joms.ajax({
        func: 'photos,ajaxGetPhotoList',
        data: [ album, total ],
        callback: function( json ) {
            if ( json && json.html ) {
                $('.joms-js--album-list').hide();
                $('.joms-js--photo-list').html( json.html ).show();
            }
        }
    });
}

function backToAlbum() {
    $('.joms-js--photo-list').hide();
    $('.joms-js--album-list').show();
}

function selectPhoto() {
    var $el = $( this ),
        photo = $el.data('photo');

    joms.ajax({
        func: 'photos,ajaxSetPhotoCover',
        data: [ type, photo, id ],
        callback: function( json ) {
            if ( json && json.path ) {
                $('.joms-js--cover-image > img')
                    .attr( 'src', json.path )
                    .css({ top: 0 });

                $('.joms-js--cover-image-mobile')
                    .css({ background: 'url(' + json.path + ') no-repeat center center' });

                popup.close();
                $('.joms-js--menu-reposition').show();
            }
        }
    });
}

function upload() {
    uploadInit(function() {
        button.click();
    });
}

function uploadInit( callback ) {
    if ( typeof callback !== 'function' ) {
        callback = function() {};
    }

    if ( uploader ) {
        callback();
        return;
    }

    joms.util.loadLib( 'plupload', function () {
        var url;

        url       = elem.find('form').attr('action');
        container = $('<div id="joms-js--cover-uploader" aria-hidden="true" style="width:1px; height:1px; position:absolute; overflow:hidden;">').appendTo( document.body );
        button    = $('<div id="joms-js--cover-uploader-button">').appendTo( container );
        uploader  = new window.plupload.Uploader({
            url: url,
            filters: [{ title: 'Image files', extensions: 'jpg,jpeg,png,gif' }],
            container: 'joms-js--cover-uploader',
            browse_button: 'joms-js--cover-uploader-button',
            runtimes: 'html5,html4',
            multi_selection: false,
            file_data_name: 'uploadCover'
        });

        uploader.bind( 'FilesAdded', uploadAdded );
        uploader.bind( 'UploadProgress', uploadProgress );
        uploader.bind( 'Error', function() {});
        uploader.bind( 'FileUploaded', uploadUploaded );
        uploader.bind( 'UploadComplete', uploadComplete );
        uploader.init();

        button = container.find('input[type=file]');
        callback();
    });
}

function uploadAdded( up ) {
    window.setTimeout(function() {
        up.refresh();
        up.start();
    }, 0);
}

function uploadProgress( up, file ) {
    var percent, bar, pleasewait;

    percent = Math.min( 100, Math.floor( file.loaded / file.size * 100 ) );
    bar = elem.find( '.joms-progressbar__progress' );
    bar.stop().animate({ width: percent + '%' });

    pleasewait = $('.please-wait');
    pleasewait.show();
}

function uploadUploaded( up, files, data ) {
    var json = {};

    // Parse json response.
    try {
        json = JSON.parse( data.response );
    } catch ( e ) {}

    result = json;

    if ( json.path ) {
        $('.joms-js--cover-image > img')
            .attr( 'src', json.path )
            .css({ top: 0 });

        $('.joms-js--cover-image-mobile')
            .css({ background: 'url(' + json.path + ') no-repeat center center' });

        popup.close();
        $('.joms-js--menu-reposition').show();
    }
}

function uploadComplete() {
    if ( ! result.error ) {
        elem.find('.joms-js--cover-uploader-error').hide();
    } else {
        elem.find('.joms-js--cover-uploader-error').html( result.error ).show();
        elem.find('.joms-progressbar__progress').stop().animate({ width: '0%' });
    }

    elem.find('.please-wait').hide();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        ( json.html || '' ),
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( type, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, type, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.cover || (joms.popup.cover = {});
    joms.popup.cover.remove = factory( root, $ );

    define('popups/cover.remove',[ 'utils/popup' ], function() {
        return joms.popup.cover.remove;
    });

})( window, joms.jQuery, function() {

var popup, elem, type, id;

function render( _popup, _type, _id ) {
    var func, data;

    if ( elem ) elem.off();
    popup = _popup;
    type = _type;
    id = _id;

    func = 'profile,ajaxRemoveCover';
    data = [ id ];

    if ( type === 'group' || type ==='event' ) {
        func = 'photos,ajaxRemoveCover';
        data = [ type, id ];
    }

    joms.ajax({
        func: func,
        data: data,
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var $form = elem.find('form');
    if ( ! $form.data('saving') ) {
        $form.data( 'saving', 1 );
        $form.submit();
    }
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '<div class="joms-popup__hide">',
                '<form method="POST" action="', json.redirUrl, '">',
                    ( type === 'group' || type ==='event' ? '<input type="hidden" name="type" value="' + type + '">' : '' ),
                    ( type === 'group' || type ==='event' ? '<input type="hidden" name="id" value="' + id + '">' : '' ),
                    ( type === 'group' || type ==='event' ? '' : '<input type="hidden" name="userid" value="' + id + '">' ),
                '</form>',
            '</div>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( type, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, type, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.cover = factory( root, joms.popup.cover || {});

    define('popups/cover',[
        'popups/cover.change',
        'popups/cover.remove'
    ], function() {
        return joms.popup.cover;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.discussion || (joms.popup.discussion = {});
    joms.popup.discussion.lock = factory( root );

    define('popups/discussion.lock',[ 'utils/popup' ], function() {
        return joms.popup.discussion.lock;
    });

})( window, function() {

var popup, elem, groupid, id;

function render( _popup, _groupid, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    groupid = _groupid;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxShowLockDiscussion',
        data: [ groupid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( groupid, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, groupid, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.discussion || (joms.popup.discussion = {});
    joms.popup.discussion.remove = factory( root );

    define('popups/discussion.remove',[ 'utils/popup' ], function() {
        return joms.popup.discussion.remove;
    });

})( window, function() {

var popup, elem, groupid, id;

function render( _popup, _groupid, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    groupid = _groupid;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxShowRemoveDiscussion',
        data: [ groupid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( groupid, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, groupid, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.discussion = factory( root, joms.popup.discussion || {});

    define('popups/discussion',[
        'popups/discussion.lock',
        'popups/discussion.remove'
    ], function() {
        return joms.popup.discussion;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event['delete'] = factory( root );

    define('popups/event.delete',[ 'utils/popup' ], function() {
        return joms.popup.event['delete'];
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'events,ajaxWarnEventDeletion',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save( e, step, action ) {
    var data, param;

    if ( step ) {
        data = [ id, step, action ];
    } else  {
        data = [ id, 1 ];
        param = elem.find('[name=recurring]:checked');
        data.push( param && param.length ? param.val() : '' );
    }

    joms.ajax({
        func: 'events,ajaxDeleteEvent',
        data: data,
        callback: function( json ) {
            var $ct;

            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().first()
                .append( '<div>' + (json.error || json.message) + '</div>' );

            if ( json.next ) {
                save( null, json.next, data[2] );
            } else if ( json.redirect ) {
                $ct = elem.find('.joms-js--step2');
                $ct.find('.joms-js--button-done')
                    .html( json.btnDone )
                    .on( 'click', function() {
                        window.location = json.redirect;
                    });

                $ct.find('.joms-popup__action').show();
                $ct.find('.joms-popup__content').removeClass('joms-popup__content--single');
            }
        }
    });
}


function buildHtml( json ) {
    var form, rad, i;

    json || (json = {});

    form = '';
    if ( json.radios && json.radios.length ) {
        form  = '<div><form style="margin:5px;padding:0">';
        for ( i = 0; i < json.radios.length; i++ ) {
            rad = json.radios[i];
            form += '<div><label> <input type="radio" name="recurring" value="' + rad[0] + '"' + (rad[2] ? ' checked' : '') + '> ';
            form += rad[1] + '</label></div>';
        }
        form += '</form></div>';
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.html, form, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnDelete, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
            '<div class="joms-popup__action joms-popup__hide">',
            '<button class="joms-button--primary joms-js--button-done"></button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.invite = factory( root, $ );

    define('popups/event.invite',[ 'utils/popup' ], function() {
        return joms.popup.event.invite;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, tabAll, tabSelected, btnSelect, btnLoad, id, type, keyword, start, limit, xhr;

function render( _popup, _id, _type ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    type = _type;

    limit = 200;

    joms.ajax({
        func: 'system,ajaxShowInvitationForm',
        data: [ null, '', id, 1, type === 'group' ? 0 : 1, type ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            // Override limit supplied in json.
            if ( json.limit ) {
                limit = +json.limit;
            }

            elem = popup.contentContainer;
            tabAll = elem.find('.joms-tab__content').eq(0);
            tabSelected = elem.find('.joms-tab__content').eq(1);
            btnSelect = elem.find('[data-btn-select]');
            btnLoad = elem.find('[data-btn-load]');

            elem.on( 'keyup', '[data-search]', search );
            elem.on( 'click', '.joms-tab__bar a', changeTab );
            elem.on( 'click', '[data-btn-select]', selectAll );
            elem.on( 'click', '[data-btn-load]', load );
            elem.on( 'click', '[data-btn-save]', save );
            elem.on( 'click', 'input[type=checkbox]', toggle );

            getFriendList('');
        }
    });
}

function search( e ) {
    var elem = $( e.currentTarget );
    getFriendList( elem.val() );
}

function save() {
    var friendsearch = '',
        checkboxes = tabSelected.find('input[type=checkbox]'),
        friends = [],
        emails = elem.find('input[name=emails]').val() || '',
        message = elem.find('[name=message]').val() || '',
        rTrim = /^\s+|\s+$/g,
        params;

    checkboxes.each(function() {
        friends.push( this.value );
    });

    emails = emails.replace( rTrim, '' );
    message = message.replace( rTrim, '' );

    params = [
        [ 'friendsearch', friendsearch ],
        [ 'emails', emails ],
        [ 'message', message ],
        [ 'friends', friends.join(',') ],
    ];

    joms.ajax({
        func: 'system,ajaxSubmitInvitation',
        data: [ 'events,inviteUsers', id, params ],
        callback: function() {
            elem.off();
            popup.close();
        }
    });
}

function changeTab( e ) {
    var $el = $( e.target ),
        selected = $el.attr('href') === '#joms-popup-tab-selected',
        lang = window.joms_lang[ selected ? 'COM_COMMUNITY_UNSELECT_ALL' : 'COM_COMMUNITY_SELECT_ALL' ];

    btnSelect.html( lang );
}

function selectAll() {
    var ct = $('.joms-tab__content:visible'),
        clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        ct.find('.joms-js--friend').remove();
        elem.find('input[type=checkbox]').each(function() {
            this.checked = false;
        });
        return;
    }

    // Add selected.
    clone = ct.find('.joms-js--friend').clone();
    clone.find('input[type=checkbox]').add( ct.find('input[type=checkbox]') ).prop( 'checked', 'checked' );
    ct = elem.find('#joms-popup-tab-selected');
    ct.html( clone );
}

function load() {
    getFriendList();
}

function toggle( e ) {
    var checkbox = $( e.target ),
        ct = checkbox.closest('.joms-tab__content'),
        id, clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        id = checkbox[0].value;
        checkbox.closest('.joms-js--friend').remove();
        elem.find('.joms-js--friend-' + id + ' input[type=checkbox]')[0].checked = false;
        return;
    }

    // Remove selected.
    if ( !checkbox[0].checked ) {
        id = checkbox[0].value;
        elem.find('#joms-popup-tab-selected .joms-js--friend-' + id).remove();
        return;
    }

    // Add selected.
    ct = elem.find('#joms-popup-tab-selected');
    clone = checkbox.closest('.joms-js--friend').clone();
    checkbox = clone.find('input[type=checkbox]');
    checkbox[0].checked = true;
    ct.append( clone );
}

function getFriendList( _keyword ) {
    var isReset = typeof _keyword === 'string',
        func, data;

    if ( isReset ) {
        tabAll.empty();
        start = 0;
        keyword = _keyword;
    } else {
        start += limit;
    }
    
    if (type === 'group') {
        func = 'system,ajaxLoadGroupEventMembers';
    } else if (type === 'page') {
        func = 'system,ajaxLoadPageEventMembers';
    } else {
        func = 'system,ajaxLoadFriendsList';
    }

    data = [ keyword, 'events,inviteUsers', id, start, limit ];
    if ( type === 'group' ) {
        data.splice( 1, 1 );
    }

    xhr && xhr.abort();
    xhr = joms.ajax({
        func: func,
        data: data,
        callback: function( json ) {
            var html;

            if ( json.html ) {
                html = $( $.trim( json.html ) );
                html.each(function() {
                    var checkbox = $( this ).find(':checkbox'),
                        value = checkbox.val();

                    if ( tabSelected.find(':checkbox[value=' + value + ']').length ) {
                        checkbox[0].checked = true;
                    }
                });

                tabAll.append( html );
            }

            if ( !isReset ) {
                tabAll[0].scrollTop = tabAll[0].scrollHeight;
            }

            // Toggle load more.
            if ( json.loadMore ) {
                btnSelect.css({ width: '49%', marginRight: '2%' });
                btnLoad.css({ width: '49%' }).html( window.joms_lang.COM_COMMUNITY_INVITE_LOAD_MORE + ' (' + json.moreCount + ')' ).show();
            } else {
                btnLoad.hide();
                btnSelect.css({ width: '100%', marginRight: '0' });
            }
        }
    });
}

function buildHtml( json ) {
    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--primary" data-btn-save="1">', json.btnInvite, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, type ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, type );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.join = factory( root, $ );

    define('popups/event.join',[ 'utils/popup' ], function() {
        return joms.popup.event.join;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'events,ajaxRequestInvite',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1 ', ( json.isMember ? 'joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2 ', ( json.isMember ? '' : 'joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', json.html, '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.leave = factory( root, $ );

    define('popups/event.leave',[ 'utils/popup' ], function() {
        return joms.popup.event.leave;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'events,ajaxIgnoreEvent',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.response = factory( root, $ );

    define('popups/event.response',[ 'utils/popup' ], function() {
        return joms.popup.event.response;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id, _data ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    popup.items[0] = {
        type: 'inline',
        src: buildHtml( _data )
    };

    popup.updateItemHTML();

    elem = popup.contentContainer;

    elem.on( 'click', 'a[data-value]', save );
}

function save( e ) {
    var value = $( e.currentTarget ).data('value');

    joms.ajax({
        func: 'events,ajaxUpdateStatus',
        data: [ id, value ],
        callback: function() {
            window.location.reload();
        }
    });
}

function buildHtml( data ) {
    var options = '',
        i;

    for ( i = 0; i < data.length; i++ ) {
        options += '<li><a data-value="' + data[i][0] + '" href="javascript:">' + data[i][1] + '</a></li>';
    }

    return [
        '<div class="joms-popup joms-popup--dropdown">',
            '<ul class="joms-dropdown">', options, '</ul>',
            '<button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    var data = [].slice.call( arguments );
    data.shift();

    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, data );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.addFeatured = factory( root, $ );

    define('popups/event.addfeatured',[ 'utils/popup' ], function() {
        return joms.popup.event.addFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'events,ajaxAddFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.rejectGuest = factory( root, $ );

    define('popups/event.rejectguest',[ 'utils/popup' ], function() {
        return joms.popup.event.rejectGuest;
    });

})( window, joms.jQuery, function() {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'events,ajaxConfirmRemoveGuest',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var checked = elem.find('input:checkbox')[0].checked || false;

    joms.ajax({
        func: checked ? 'events,ajaxBlockGuest' : 'events,ajaxRemoveGuest',
        data: [ userid, id ],
        callback: function( json ) {
            var step1 = elem.find('.joms-js--step1'),
                step2 = elem.find('.joms-js--step2');

            if ( !json.error ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }

            step2.find('.joms-popup__content').html( json.error || json.message );
            step1.hide();
            step2.show();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userid );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.removeFeatured = factory( root, $ );

    define('popups/event.removefeatured',[ 'utils/popup' ], function() {
        return joms.popup.event.removeFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'events,ajaxRemoveFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.report = factory( root );

    define('popups/event.report',[ 'utils/popup' ], function() {
        return joms.popup.event.report;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'system,ajaxReport',
        data: [],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'change', 'select', changeText );
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function changeText( e ) {
    elem.find('textarea').val( e.target.value );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var rTrim = /^\s+|\s+$/g,
        message;

    message = elem.find('textarea').val();
    message = message.replace( rTrim, '' );

    if ( !message ) {
        elem.find('.joms-js--error').show();
        return;
    }

    elem.find('.joms-js--error').hide();

    joms.ajax({
        func: 'system,ajaxSendReport',
        data: [ 'events,reportEvent', window.location.href, message, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            json.html,
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.banMember = factory( root, $ );

    define('popups/event.banmember',[ 'utils/popup' ], function() {
        return joms.popup.event.banMember;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'events,ajaxBanMember',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.message || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userid );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.unbanMember = factory( root, $ );

    define('popups/event.unbanmember',[ 'utils/popup' ], function() {
        return joms.popup.event.unbanMember;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'events,ajaxUnbanMember',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.message || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userid );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event || (joms.popup.event = {});
    joms.popup.event.unpublish = factory( root );

    define('popups/event.unpublish',[ 'utils/popup' ], function() {
        return joms.popup.event.unpublish;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'events,ajaxShowUnpublishEvent',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save( e, step, action ) {
    var data, param;

    if ( step ) {
        data = [ id, step, action ];
    } else  {
        data = [ id ];
    }
    
    elem.find('.joms-js--step1').find('.joms-popup__content').html(joms_lang.COM_COMMUNITY_POPUP_LOADING);
    elem.find('.joms-js--step1').find('.joms-popup__action').children().hide();
    
    joms.ajax({
        func: 'events,ajaxUnpublishEvent',
        data: data,
        callback: function( json ) {
            var $ct;

            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().first()
                .append( '<div>' + (json.error || json.message) + '</div>' );

            if ( json.next ) {
                save( null, json.next, data[2] );
            } else if ( json.redirect ) {
                $ct = elem.find('.joms-js--step2');
                $ct.find('.joms-js--button-done')
                    .html( json.btnDone )
                    .on( 'click', function() {
                        window.location = json.redirect;
                    });

                $ct.find('.joms-popup__action').show();
                $ct.find('.joms-popup__content').removeClass('joms-popup__content--single');
            }
        }
    });
}


function buildHtml( json ) {
    var form, rad, i;

    json || (json = {});

    form = '';
    if ( json.radios && json.radios.length ) {
        form  = '<div><form style="margin:5px;padding:0">';
        for ( i = 0; i < json.radios.length; i++ ) {
            rad = json.radios[i];
            form += '<div><label> <input type="radio" name="recurring" value="' + rad[0] + '"' + (rad[2] ? ' checked' : '') + '> ';
            form += rad[1] + '</label></div>';
        }
        form += '</form></div>';
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.html, form, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
            '<div class="joms-popup__action joms-popup__hide">',
            '<button class="joms-button--primary joms-js--button-done"></button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.event = factory( root, joms.popup.event || {});

    define('popups/event',[
        'popups/event.delete',
        'popups/event.invite',
        'popups/event.join',
        'popups/event.leave',
        'popups/event.response',
        'popups/event.addfeatured',
        'popups/event.rejectguest',
        'popups/event.removefeatured',
        'popups/event.report',
        'popups/event.banmember',
        'popups/event.unbanmember',
        'popups/event.unpublish'
    ], function() {
        return joms.popup.event;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});


(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.fbc || (joms.popup.fbc = {});
    joms.popup.fbc.update = factory( root, $ );

    define('popups/fbc.update',[ 'utils/popup' ], function() {
        return joms.popup.fbc.update;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, lang, isMember;

function render( _popup ) {
    if ( elem ) elem.off();
    popup = _popup;

    if ( !window.joms_use_tfa ) {
        update();
    } else {
        popup.items[0] = {
            type: 'inline',
            src: buildTfaDialog()
        };

        popup.updateItemHTML();

        elem = popup.contentContainer;
        elem.off('click');

        elem.on( 'click', '.joms-js--button-next', function() {
            update( elem.find('[name=secret]').val() );
        });

        elem.on( 'click', '.joms-js--button-skip', function() {
            update();
        });
    }
}

function update( secret ) {
    if ( elem ) elem.off();

    joms.ajax({
        func: 'connect,ajaxUpdate',
        data: [ secret || '' ],
        callback: function( json ) {
            var isLoggedIn = json.jax_token_var;

            if ( isLoggedIn ) {
                json.btnNext = json.btnContinue;
                window.jax_token_var = json.jax_token_var;
            }

            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            lang = json.lang;

            elem.off('click');
            elem.on( 'click', '.joms-js--button-next', isLoggedIn ? importData : next );
            elem.on( 'click', '.joms-js--button-back2', back2 );
            elem.on( 'click', '.joms-js--button-next2', next2 );
            elem.on( 'click', '.joms-js--button-back3', back3 );
        }
    });
}

function next() {
    var tnc, error;

    isMember = +elem.find('[name=membertype]:checked').val() === 2;

    if ( isMember ) {
        connectMember();
    } else {
        tnc = elem.find('#joms-js--fbc-tnc-checkbox');
        if ( !tnc.length ) {
            connectNewUser();
        } else {
            tnc = tnc[0];
            error = elem.find('.joms-js--fbc-tnc-error');
            if ( tnc.checked ) {
                error.hide();
                connectNewUser();
            } else {
                error.show();
            }
        }
    }
}

function back2() {
    elem.find('.joms-js--step2').hide();
    elem.find('.joms-js--step3').hide();
    elem.find('.joms-js--step1').show();
}

function next2() {
    if ( isMember ) {
        validateMember();
    } else {
        validateNewUser();
    }
}

function connectNewUser() {
    joms.ajax({
        func: 'connect,ajaxShowNewUserForm',
        data: [ '' ],
        callback: function( json ) {
            var div;

            elem.find('.joms-js--step1').hide();

            div = elem.find('.joms-js--step2');
            div.find('.joms-popup__content').html( json.html );
            div.find('.joms-js--button-back2').html( json.btnBack );
            div.find('.joms-js--button-next2').html( json.btnCreate );
            div.show();
        }
    });
}

function connectMember() {
    joms.ajax({
        func: 'connect,ajaxShowExistingUserForm',
        data: [ '' ],
        callback: function( json ) {
            var div;

            elem.find('.joms-js--step1').hide();

            div = elem.find('.joms-js--step2');
            div.find('.joms-popup__content').html( json.html );
            div.find('.joms-js--button-back2').html( json.btnBack );
            div.find('.joms-js--button-next2').html( json.btnLogin );
            div.show();
        }
    });
}

function validateNewUser() {
    var div = elem.find('.joms-js--step2'),
        name = div.find('[name=name]').val(),
        user = div.find('[name=username]').val(),
        email = div.find('[name=email]').val(),
        types = div.find('[name=profiletype]'),
        profileType = '',
        type;

    if ( types.length ) {
        type = types.filter(':checked');
        if ( !type.length ) {
            div.hide();
            div = elem.find('.joms-js--step3');
            div.find('.joms-popup__content').html( lang.selectProfileType );
            div.find('.joms-js--button-back3').html( lang.btnBack );
            div.show();
            return;
        }
        profileType = types.filter(':checked').val();
    }

    joms.ajax({
        func: 'connect,ajaxCreateNewAccount',
        data: [ name, user, email, profileType ],
        callback: function( json ) {
            var div;

            if ( json.error ) {
                elem.find('.joms-js--step2').hide();

                div = elem.find('.joms-js--step3');
                div.find('.joms-popup__content').html( json.error );
                div.find('.joms-js--button-back3').html( json.btnBack );
                div.show();
                return;
            }

            elem.off();
            popup.close();
            joms.popup.fbc.update();
        }
    });
}

function validateMember() {
    var div = elem.find('.joms-js--step2'),
        user = div.find('[name=username]').val(),
        pass = div.find('[name=password]').val();

    joms.ajax({
        func: 'connect,ajaxValidateLogin',
        data: [ user, pass ],
        callback: function( json ) {
            var div;

            if ( json.error ) {
                if (json.redirect) {
                    alert(json.error);
                    location.href = json.redirect;
                    return;
                }

                elem.find('.joms-js--step2').hide();

                div = elem.find('.joms-js--step3');
                div.find('.joms-popup__content').html( json.error );
                div.find('.joms-js--button-back3').html( json.btnBack );
                div.show();
                return;
            }

            elem.off();
            popup.close();
            joms.popup.fbc.update();
        }
    });
}

// function checkName( name ) {
//     joms.ajax({
//         func: 'connect,ajaxCheckName',
//         data: [ name ],
//         callback: function( json ) {
//         }
//     });
// }

// function checkUsername( username ) {
//     joms.ajax({
//         func: 'connect,ajaxCheckUsername',
//         data: [ username ],
//         callback: function( json ) {
//         }
//     });
// }

// function checkEmail( email ) {
//     joms.ajax({
//         func: 'connect,ajaxCheckEmail',
//         data: [ email ],
//         callback: function( json ) {
//         }
//     });
// }

function importData() {
    var status = elem.find('[name=importstatus]'),
        avatar = elem.find('[name=importavatar]');

    status = status.length && status[0].checked ? 1 : 0;
    avatar = avatar.length && avatar[0].checked ? 1 : 0;

    joms.ajax({
        func: 'connect,ajaxImportData',
        data: [ status, avatar ],
        callback: function( json ) {
            var div;

            elem.find('.joms-js--step1').hide();

            if ( json.error ) {
                elem.off('click').on( 'click', '.joms-js--button-next2', cancel );

                div = elem.find('.joms-js--step2');
                div.find('.joms-popup__content').html( json.error );
                div.find('.joms-js--button-back2').hide();
                div.find('.joms-js--button-next2').html( json.btnNext );
                div.show();
                return;
            }

            if ( !json.btnUpdate ) {
                cancel();
                window.location = json.redirect;
                return;
            }

            elem.off('click').on( 'click', '.joms-js--button-back2', cancel );
            elem.off('click').on( 'click', '.joms-js--button-next2', function() {
                window.location = json.redirect;
            });

            div = elem.find('.joms-js--step2');
            div.find('.joms-popup__content').html( json.html );
            div.find('.joms-js--button-back2').html( json.btnSkip );
            div.find('.joms-js--button-next2').html( json.btnUpdate );
            div.show();
        }
    });
}

function back3() {
    elem.find('.joms-js--step3').hide();
    if ( isMember ) {
        elem.find('.joms-js--step2').hide();
        elem.find('.joms-js--step1').show();
    } else {
        elem.find('.joms-js--step2').show();
        elem.find('.joms-js--step1').hide();
    }
}

function cancel() {
    elem.off();
    popup.close();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content ', ( json.btnNext ? '' : 'joms-popup__content--single' ), '">', ( json.error || json.html || '' ), '</div>',
            ( json.btnNext ? '<div class="joms-popup__action">' : '' ),
            ( json.btnNext ? '<button class="joms-button--primary joms-button--small joms-js--button-next">' + json.btnNext + '</button>' : '' ),
            ( json.btnNext ? '</div>' : '' ),
        '</div>',
        '<div class="joms-js--step2 joms-popup__hide">',
            '<div class="joms-popup__content"></div>',
            '<div class="joms-popup__action">',
                '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-back2"></button>',
                '<button class="joms-button--primary joms-button--small joms-js--button-next2"></button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step3 joms-popup__hide">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
            '<div class="joms-popup__action">',
                '<button class="joms-button--neutral joms-button--small joms-js--button-back3"></button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

function buildTfaDialog() {
    var lang = window.joms_lang || {};

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', (lang.COM_COMMUNITY_AUTHENTICATION_KEY || 'Authentication key'), '</div>',
        '<div class="joms-popup__content">',
            '<span>', (lang.COM_COMMUNITY_AUTHENTICATION_KEY_LABEL || 'Insert your two-factor authentication key'), '</span>',
            '<input type="text" class="joms-input" name="secret">',
        '</div>',
        '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-skip">', (lang.COM_COMMUNITY_SKIP_BUTTON || 'Skip'), '</button>',
            '<button class="joms-button--primary joms-button--small joms-js--button-next">', (lang.COM_COMMUNITY_NEXT || 'Next'), '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function() {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.fbc = factory( root, joms.popup.fbc || {});

    define('popups/fbc',[
        'popups/fbc.update'
    ], function() {
        return joms.popup.fbc;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});


(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.file || (joms.popup.file = {});
    joms.popup.file.download = factory( root, $ );

    define('popups/file.download',[ 'utils/popup' ], function() {
        return joms.popup.file.download;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, type, id, path;

function render( _popup, _type, _id, _path ) {
    if ( elem ) elem.off();
    popup = _popup;
    type = _type;
    id = _id;
    path = _path;

    joms.ajax({
        func: 'files,ajaxFileDownload',
        data: [ type, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            if ( json.url ) {
                popup.close();
                window.open( path );
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', (json.message || json.error), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( type, id, path ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, type, id, path );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.file || (joms.popup.file = {});
    joms.popup.file.list = factory( root, $ );

    define('popups/file.list',[ 'utils/loadlib', 'utils/popup' ], function() {
        return joms.popup.file.list;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, type, id, tab, start, $currentTab, $btnLoadMore;

function render( _popup, _type, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    type = _type;
    id = _id;

    joms.ajax({
        func: 'files,ajaxviewMore',
        data: [ type, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            $btnLoadMore = elem.find('.joms-js--btn-loadmore');

            elem.on( 'click', '.joms-js--tab-bar a', load );
            elem.on( 'click', '.joms-js--btn-loadmore', loadmore );

            tab = false;
            elem.find('.joms-js--tab-bar a.active').trigger('click');
        }
    });
}

function _load( tabid, callback ) {
    joms.ajax({
        func: 'files,ajaxgetFileList',
        data: [ tabid, id, start, 4, type ],
        callback: function( json ) {
            callback( json );
        }
    });
}

function load() {
    var $tab = $( this ),
        tabid = $tab.data('id');

    if ( tab === tabid ) {
        return;
    }

    tab = tabid;
    $currentTab = elem.find( '.joms-js--tab-' + tabid );

    $tab.addClass('active').siblings().removeClass('active');
    $btnLoadMore.css({ visibility: 'hidden' });
    $currentTab.empty().show().siblings('.joms-js--tab').hide();

    start = 0;
    _load( tab, function( json ) {
        $currentTab.html( json.html );
        if ( json.next && json.count ) {
            start = json.next;
            $btnLoadMore.css({ visibility: 'visible' });
            $btnLoadMore.html( window.joms_lang.COM_COMMUNITY_FILES_LOAD_MORE + ' (' + json.count + ')' );
        } else {
            $btnLoadMore.css({ visibility: 'hidden' });
        }
    });
}

function loadmore() {
    _load( tab, function( json ) {
        $currentTab.append( json.html );
        $currentTab[0].scrollTop = $currentTab[0].scrollHeight;
        if ( json.next && json.count ) {
            start = json.next;
            $btnLoadMore.css({ visibility: 'visible' });
            $btnLoadMore.html( window.joms_lang.COM_COMMUNITY_FILES_LOAD_MORE + ' (' + json.count + ')' );
        } else {
            $btnLoadMore.css({ visibility: 'hidden' });
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--600">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        json.html,
        '</div>'
    ].join('');
}

// Exports.
return function( type, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, type, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.file || (joms.popup.file = {});
    joms.popup.file.remove = factory( root, $ );

    define('popups/file.remove',[ 'utils/popup' ], function() {
        return joms.popup.file.remove;
    });

})( window, joms.jQuery, function( window, $ ) {

var type, id;

function render( popup, json ) {
    popup.items[0] = {
        type: 'inline',
        src: buildHtml( json )
    };

    popup.updateItemHTML();
}

function _delete( _type, _id ) {
    type = _type;
    id = _id;

    if ( window.confirm( window.joms_lang.COM_COMMUNITY_FILES_DELETE_CONFIRM ) ) {
        joms.ajax({
            func: 'files,ajaxDeleteFile',
            data: [ type, id ],
            callback: function( json ) {
                if ( json.success ) {
                    $( '.joms-js--file-' + id ).remove();
                    return;
                }

                joms.util.popup.prepare(function( mfp ) {
                    render( mfp, json );
                });
            }
        });
    }
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button> &nbsp; </div>',
        '<div class="joms-popup__content joms-popup__content--single">', (json.message || json.error), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( type, id ) {
    _delete( type, id );
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.file || (joms.popup.file = {});
    joms.popup.file.upload = factory( root, $ );

    define('popups/file.upload',[ 'utils/loadlib', 'utils/popup' ], function() {
        return joms.popup.file.upload;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, type, id, uploader, uploaderUrl, uploaderButton, uploaderPreview, doReload;

function render( _popup, _type, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    type = _type;
    id = _id;

    joms.ajax({
        func: 'files,ajaxFileUploadForm',
        data: [ type, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                doReload && window.location.reload();
            };

            elem = popup.contentContainer;
            doReload = false;
            uploaderPreview = elem.find('.joms-js--upload-preview');

            elem.on( 'click', '.joms-js--btn-add', upload );
            elem.on( 'click', '.joms-js--btn-upload', uploadStart );
            elem.on( 'click', '.joms-js--btn-done', function() {
                doReload && window.location.reload();
            });

            // Init uploader upon render.
            uploadInit();
        }
    });
}

function upload() {
    uploadInit(function() {
        uploaderButton.click();
    });
}

function uploadInit( callback ) {
    if ( typeof callback !== 'function' ) {
        callback = function() {};
    }

    if ( uploader ) {
        callback();
        return;
    }

    uploaderUrl = joms.BASE_URL + elem.find('input[name=url]').val();

    joms.util.loadLib( 'plupload', function () {
        var container, button;

        container = $('<div id="joms-js--file-uploader" aria-hidden="true" style="width:1px; height:1px; overflow:hidden">').appendTo( document.body );
        button    = $('<button id="joms-js--file-uploader-button">').appendTo( container );
        uploader  = new window.plupload.Uploader({
            url: uploaderUrl,
            container: 'joms-js--file-uploader',
            browse_button: 'joms-js--file-uploader-button',
            runtimes: 'html5,html4',
            filters: [{ title: 'Document files', extensions: elem.find('input[name=filetype]').val() }],
            max_file_size: elem.find('input[name=maxfilesize]').val() + 'mb'
        });

        uploader.bind( 'FilesAdded', uploadAdded );
        uploader.bind( 'Error', uploadError );
        uploader.bind( 'UploadProgress', uploadProgress );
        uploader.bind( 'FileUploaded', uploadUploaded );
        uploader.bind( 'uploadComplete', uploadComplete );
        uploader.init();

        uploaderButton = container.find('input[type=file]');
        callback();
    });
}

function uploadAdded( up, files ) {
    var html = '',
        i;

    for ( i = 0; i < files.length; i++ ) {
        html += '<div class="joms-file--' + files[i].id + '" style="margin-bottom:5px">';
        html += '<div><strong>' + files[i].name + '</strong> <span>(' + Math.round( files[i].size / 1024 ) + ' KB)</span></div>';
        html += '<div class="joms-progressbar"><div class="joms-progressbar__progress" style="width:0%"></div></div>';
        html += '</div>';
    }

    uploaderPreview.find('.joms-js--upload-placeholder').remove();
    uploaderPreview.append( html );

    elem.find('.joms-js--btn-add').html( elem.find('.joms-js--btn-add').data('lang-more') ).css({ visibility: 'visible' });
    elem.find('.joms-js--btn-upload').show();
    elem.find('.joms-js--btn-done').hide();
}

function uploadError( up, info ) {
    uploaderPreview.find( '.joms-file--' + info.file.id ).remove();
    window.alert( info.message + ' (' + info.code + ')' );
}

function uploadStart() {
    elem.find('.joms-js--btn-add').css({ visibility: 'hidden' });
    elem.find('.joms-js--btn-upload').hide();
    elem.find('.joms-js--btn-done').hide();
    uploader.settings.url = uploaderUrl + '&type=' + type + '&id=' + id;
    uploader.refresh();
    uploader.start();
}

function uploadProgress( up, file ) {
    var percent, bar;
    percent = Math.min( 100, Math.floor( file.loaded / file.size * 100 ) );
    bar = elem.find( '.joms-file--' + file.id );
    bar = bar.find( '.joms-progressbar__progress' );
    bar.stop().animate({ width: percent + '%' });
}

function uploadUploaded( up, file, resp ) {
    var json = {},
        item;

    try {
        json = JSON.parse( resp.response );
    } catch (e) {}

    if ( json.error ) {
        uploader.stop();
        elem.find('.joms-js--btn-add').css({ visibility: 'hidden' });
        elem.find('.joms-js--btn-upload').hide();
        elem.find('.joms-js--btn-done').show();
        elem.find( '.joms-file--' + file.id ).nextAll().addBack().remove();
        window.alert( json.msg );
        return;
    }

    if ( json.msg ) {
        item = elem.find( '.joms-file--' + file.id );
        item.css({ color: '#F00' });
    } else if ( json.id ) {
        doReload = true;
    }
}

function uploadComplete() {
    elem.find('.joms-js--btn-add').css({ visibility: 'visible' });
    elem.find('.joms-js--btn-upload').hide();
    elem.find('.joms-js--btn-done').show();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        json.html,
        '</div>'
    ].join('');
}

// Exports.
return function( type, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, type, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.file || (joms.popup.file = {});
    joms.popup.file.updateHit = factory( root );

    define('popups/file.updatehit',[ 'utils/popup' ], function() {
        return joms.popup.file.updateHit;
    });

})( window, function( window ) {

return function( id, location ) {
    joms.ajax({
        func: 'files,ajaxUpdateHit',
        data: [ id ],
        callback: function() {}
    });

    if ( typeof location === 'string' ) {
        window.open( location );
    }
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.file = factory( root, joms.popup.file || {});

    define('popups/file',[
        'popups/file.download',
        'popups/file.list',
        'popups/file.remove',
        'popups/file.upload',
        'popups/file.updatehit'
    ], function() {
        return joms.popup.file;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.friend || (joms.popup.friend = {});
    joms.popup.friend.add = factory( root );

    define('popups/friend.add',[ 'utils/popup' ], function() {
        return joms.popup.friend.add;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'friends,ajaxConnect',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var message = elem.find('textarea').val()
        .replace( /\t/g, '\\t' )
        .replace( /\n/g, '\\n' )
        .replace( /&quot;/g,  '"' );

    joms.ajax({
        func: 'friends,ajaxSaveFriend',
        data: [[[ 'msg', message ], [ 'userid', id ]]],
        callback: function( json ) {
            var step1 = elem.find('[data-ui-object=popup-step-1]'),
                step2 = elem.find('[data-ui-object=popup-step-2]');

            if ( !json.error ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }

            step2.find('[data-ui-object=popup-message]').html( json.error || json.message );
            step1.hide();
            step2.show();
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">',
                '<div class="joms-stream__header" style="padding:0">',
                    '<div class="joms-avatar--stream"><img src="', json.avatar, '"></div>',
                    '<div class="joms-stream__meta"><span>', json.desc, '</span></div>',
                '</div>',
            '</div>',
            '<div class="joms-popup__content">',
                '<textarea class="joms-textarea" style="margin:0">', json.message, '</textarea>',
            '</div>',
            '<div class="joms-popup__action">',
                '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
                '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnAdd, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.friend || (joms.popup.friend = {});
    joms.popup.friend.addCancel = factory( root );

    define('popups/friend.addcancel',[ 'utils/popup' ], function() {
        return joms.popup.friend.addCancel;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'friends,ajaxCancelRequest',
        data: [ id, window.location.href ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.friend || (joms.popup.friend = {});
    joms.popup.friend.approve = factory( root, $ );

    define('popups/friend.approve',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.friend.approve;
    });

})( window, joms.jQuery, function( window, $ ) {

var id;

function render( _id ) {
    id = _id;

    joms.ajax({
        func: 'friends,ajaxApproveRequest',
        data: [ id ],
        callback: function( json ) {
            if ( json.success ) {
                update( json );
                return;
            }

            // On error response.
            joms.util.popup.prepare(function( mfp ) {
                mfp.items[0] = {
                    type: 'inline',
                    src: buildErrorHtml( json )
                };

                mfp.updateItemHTML();
            });
        }
    });
}

function update( json ) {
    $( '.joms-js--frequest-msg-' + id ).html( json.message );
    $( '.joms-js--frequest-btn-' + id ).remove();
    joms.fn.notification.updateCounter( 'frequest', id, -1 );
}

function buildErrorHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.error || json.message ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    render( id );
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.friend || (joms.popup.friend = {});
    joms.popup.friend.reject = factory( root, $ );

    define('popups/friend.reject',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.friend.reject;
    });

})( window, joms.jQuery, function( window, $ ) {

var id;

function render( _id ) {
    id = _id;

    joms.ajax({
        func: 'friends,ajaxRejectRequest',
        data: [ id ],
        callback: function( json ) {
            if ( json.success ) {
                update( json );
                return;
            }

            // On error response.
            joms.util.popup.prepare(function( mfp ) {
                mfp.items[0] = {
                    type: 'inline',
                    src: buildErrorHtml( json )
                };

                mfp.updateItemHTML();
            });
        }
    });
}

function update( json ) {
    $( '.joms-js--frequest-msg-' + id ).html( json.message );
    $( '.joms-js--frequest-btn-' + id ).remove();
    joms.fn.notification.updateCounter( 'frequest', id, -1 );
}

function buildErrorHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.error || json.message ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    render( id );
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.friend || (joms.popup.friend = {});
    joms.popup.friend.remove = factory( root, $ );

    define('popups/friend.remove',[ 'utils/popup' ], function() {
        return joms.popup.friend.remove;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'friends,ajaxConfirmFriendRemoval',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var checkbox = elem.find('input[type=checkbox]'),
        func;

    if ( checkbox[0].checked ) {
        func = 'friends,ajaxBlockFriend';
    } else {
        func = 'friends,ajaxRemoveFriend';
    }

    joms.ajax({
        func: func,
        data: [ id ],
        callback: function( json ) {
            var step1 = elem.find('[data-ui-object=popup-step-1]'),
                step2 = elem.find('[data-ui-object=popup-step-2]');

            step2.find('[data-ui-object=popup-message]').html( json.error || json.message );
            step1.hide();
            step2.show();

            if ( json && json.success ) {
                $( '#friend-' + id ).remove();
            }
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', ( json.html || '' ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.friend || (joms.popup.friend = {});
    joms.popup.friend.response = factory( root );

    define('popups/friend.response',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.friend.response;
    });

})( window, function() {

var popup, elem, id, connection;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'friends,ajaxConnect',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            connection = json.connection_id;

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', reject );
            elem.on( 'click', '.joms-js--button-save', approve );
        }
    });
}

function reject() {
    joms.ajax({
        func: 'friends,ajaxRejectRequest',
        data: [ connection ],
        callback: function( json ) {
            update( json );
        }
    });
}

function approve() {
    joms.ajax({
        func: 'friends,ajaxApproveRequest',
        data: [ connection ],
        callback: function( json ) {
            update( json );
        }
    });
}

function update( json ) {
    var step1 = elem.find('.joms-js--step1'),
        step2 = elem.find('.joms-js--step2');

    if ( !json.error ) {
        popup.st.callbacks || (popup.st.callbacks = {});
        popup.st.callbacks.close = function() {
            window.location.reload();
        };
    }

    step2.find('.joms-popup__content').html( json.error || json.message );
    step1.hide();
    step2.show();
}

function buildHtml( json ) {
    var error = false;

    json || (json = {});
    if ( json.error && !json.desc ) {
        error = json.error;
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">',
                '<div class="joms-stream__header" style="padding:0">',
                    '<div class="joms-avatar--stream"><img src="', json.avatar, '"></div>',
                    '<div class="joms-stream__meta"><span>', json.desc, '</span></div>',
                '</div>',
            '</div>',
            '<div class="joms-popup__content">',
                '<div class="cStream-Quote">', json.message, '</div>',
            '</div>',
            '<div class="joms-popup__action">',
                '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnReject, '</button>',
                '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnAccept, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.friend = factory( root, joms.popup.friend || {});

    define('popups/friend',[
        'popups/friend.add',
        'popups/friend.addcancel',
        'popups/friend.approve',
        'popups/friend.reject',
        'popups/friend.remove',
        'popups/friend.response'
    ], function() {
        return joms.popup.friend;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.follower || (joms.popup.follower = {});
    joms.popup.follower.add = factory( root );

    define('popups/follower.add',[ 'utils/popup' ], function() {
        return joms.popup.follower.add;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'followers,ajaxConfirmFollow',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var message = "";

    joms.ajax({
        func: 'followers,ajaxSaveFollow',
        data: [[[ 'msg', message ], [ 'userid', id ]]],
        callback: function( json ) {
            var step1 = elem.find('[data-ui-object=popup-step-1]'),
                step2 = elem.find('[data-ui-object=popup-step-2]');

            if ( !json.error ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }

            step2.find('[data-ui-object=popup-message]').html( json.error || json.message );
            step1.hide();
            step2.show();
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">',
                '<div class="joms-stream__header" style="padding:0">',
                    '<div class="joms-avatar--stream"><img src="', json.avatar, '"></div>',
                    '<div class="joms-stream__meta"><span>', json.desc, '</span></div>',
                '</div>',
            '</div>',
            '<div class="joms-popup__action">',
                '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
                '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnAdd, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.follower || (joms.popup.follower = {});
    joms.popup.follower.addCancel = factory( root );

    define('popups/follower.addcancel',[ 'utils/popup' ], function() {
        return joms.popup.follower.addCancel;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'followers,ajaxCancelRequest',
        data: [ id, window.location.href ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.follower || (joms.popup.follower = {});
    joms.popup.follower.approve = factory( root, $ );

    define('popups/follower.approve',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.follower.approve;
    });

})( window, joms.jQuery, function( window, $ ) {

var id;

function render( _id ) {
    id = _id;

    joms.ajax({
        func: 'followers,ajaxApproveRequest',
        data: [ id ],
        callback: function( json ) {
            if ( json.success ) {
                update( json );
                return;
            }

            // On error response.
            joms.util.popup.prepare(function( mfp ) {
                mfp.items[0] = {
                    type: 'inline',
                    src: buildErrorHtml( json )
                };

                mfp.updateItemHTML();
            });
        }
    });
}

function update( json ) {
    $( '.joms-js--frequest-msg-' + id ).html( json.message );
    $( '.joms-js--frequest-btn-' + id ).remove();
    joms.fn.notification.updateCounter( 'frequest', id, -1 );
}

function buildErrorHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.error || json.message ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    render( id );
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.follower || (joms.popup.follower = {});
    joms.popup.follower.reject = factory( root, $ );

    define('popups/follower.reject',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.follower.reject;
    });

})( window, joms.jQuery, function( window, $ ) {

var id;

function render( _id ) {
    id = _id;

    joms.ajax({
        func: 'followers,ajaxRejectRequest',
        data: [ id ],
        callback: function( json ) {
            if ( json.success ) {
                update( json );
                return;
            }

            // On error response.
            joms.util.popup.prepare(function( mfp ) {
                mfp.items[0] = {
                    type: 'inline',
                    src: buildErrorHtml( json )
                };

                mfp.updateItemHTML();
            });
        }
    });
}

function update( json ) {
    $( '.joms-js--frequest-msg-' + id ).html( json.message );
    $( '.joms-js--frequest-btn-' + id ).remove();
    joms.fn.notification.updateCounter( 'frequest', id, -1 );
}

function buildErrorHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.error || json.message ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    render( id );
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.follower || (joms.popup.follower = {});
    joms.popup.follower.remove = factory( root, $ );

    define('popups/follower.remove',[ 'utils/popup' ], function() {
        return joms.popup.follower.remove;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'followers,ajaxConfirmUnfollow',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
  
    func = 'followers,ajaxUnfollowSave';
    

    joms.ajax({
        func: func,
        data: [ id ],
        callback: function( json ) {
            var step1 = elem.find('[data-ui-object=popup-step-1]'),
                step2 = elem.find('[data-ui-object=popup-step-2]');

            step2.find('[data-ui-object=popup-message]').html( json.error || json.message );
            step1.hide();
            step2.show();

            if ( json && json.success ) {
                $( '#follower-' + id ).remove();
            }
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', ( json.html || '' ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.follower || (joms.popup.follower = {});
    joms.popup.follower.response = factory( root );

    define('popups/follower.response',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.follower.response;
    });

})( window, function() {

var popup, elem, id, connection;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'followers,ajaxConnect',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            connection = json.connection_id;

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', reject );
            elem.on( 'click', '.joms-js--button-save', approve );
        }
    });
}

function reject() {
    joms.ajax({
        func: 'followers,ajaxRejectRequest',
        data: [ connection ],
        callback: function( json ) {
            update( json );
        }
    });
}

function approve() {
    joms.ajax({
        func: 'followers,ajaxApproveRequest',
        data: [ connection ],
        callback: function( json ) {
            update( json );
        }
    });
}

function update( json ) {
    var step1 = elem.find('.joms-js--step1'),
        step2 = elem.find('.joms-js--step2');

    if ( !json.error ) {
        popup.st.callbacks || (popup.st.callbacks = {});
        popup.st.callbacks.close = function() {
            window.location.reload();
        };
    }

    step2.find('.joms-popup__content').html( json.error || json.message );
    step1.hide();
    step2.show();
}

function buildHtml( json ) {
    var error = false;

    json || (json = {});
    if ( json.error && !json.desc ) {
        error = json.error;
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">',
                '<div class="joms-stream__header" style="padding:0">',
                    '<div class="joms-avatar--stream"><img src="', json.avatar, '"></div>',
                    '<div class="joms-stream__meta"><span>', json.desc, '</span></div>',
                '</div>',
            '</div>',
            '<div class="joms-popup__content">',
                '<div class="cStream-Quote">', json.message, '</div>',
            '</div>',
            '<div class="joms-popup__action">',
                '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnReject, '</button>',
                '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnAccept, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.follower = factory( root, joms.popup.follower || {});

    define('popups/follower',[
        'popups/follower.add',
        'popups/follower.addcancel',
        'popups/follower.approve',
        'popups/follower.reject',
        'popups/follower.remove',
        'popups/follower.response'
    ], function() {
        return joms.popup.follower;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.share = factory( root, $ );

    define('popups/page.share',[ 'utils/popup' ], function() {
        return joms.popup.page.share;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, url;

function render( _popup, _url ) {
    var title, description, image;

    if ( elem ) elem.off();
    popup = _popup;
    url = _url;

    $.ajax({
        url: url,
        success: function( response ) {
            title = response.match(/<meta property="og:title" content="([^"]+)"/i) || false;
            title = title && title[1];
            description = response.match(/<meta property="og:description" content="([^"]+)"/i) || false;
            description = description && description[1];
            image = response.match(/<meta property="og:image" content="([^"]+)"/i) || false;
            image = image && image[1];
        },
        complete: function() {
            var params = [ url, title || '', description || '', image || '' ];
            joms.ajax({
                func: 'bookmarks,ajaxShowBookmarks',
                data: params,
                callback: function( json ) {
                    popup.items[0] = {
                        type: 'inline',
                        src: buildHtml( json )
                    };

                    popup.updateItemHTML();

                    elem = popup.contentContainer;
                    elem.on( 'click', '.joms-bookmarks a', openPopup );
                    elem.on( 'click', '.joms-js--button-cancel', cancel );
                    elem.on( 'click', '.joms-js--button-save', save );
                }
            });
        }
    });
}

function openPopup( e ) {
    var $a, url, title;

    e.preventDefault();
    e.stopPropagation();

    $a = $( this );
    url = $a.attr('href');
    title = $a.text();

    elem.off();
    popup.close();
    window.open( url, title, 'top=150, left=150, width=650, height=330, scrollbars=yes' );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var $form = elem.find('form'),
        email = $form.find('[name=bookmarks-email]').val(),
        message = $form.find('[name=bookmarks-message]').val();

    joms.ajax({
        func: 'bookmarks,ajaxEmailPage',
        data: [ url, email, message ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button>',
            ( json.viaEmail ? ' &nbsp;<button class="joms-button--primary joms-button--small joms-js--button-save">' + json.btnShare + '</button>' : '' ),
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( url ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, url );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.invite = factory( root, $ );

    define('popups/page.invite',[ 'utils/popup' ], function() {
        return joms.popup.page.invite;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, tabAll, tabSelected, btnSelect, btnLoad, id, keyword, start, limit, xhr;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    limit = 200;

    joms.ajax({
        func: 'system,ajaxShowInvitationForm',
        data: [ null, '', id, 1, 1 ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            // Override limit supplied in json.
            if ( json.limit ) {
                limit = +json.limit;
            }

            elem = popup.contentContainer;
            tabAll = elem.find('.joms-tab__content').eq(0);
            tabSelected = elem.find('.joms-tab__content').eq(1);
            btnSelect = elem.find('[data-btn-select]');
            btnLoad = elem.find('[data-btn-load]');

            elem.on( 'keyup', '[data-search]', search );
            elem.on( 'click', '.joms-tab__bar a', changeTab );
            elem.on( 'click', '[data-btn-select]', selectAll );
            elem.on( 'click', '[data-btn-load]', load );
            elem.on( 'click', '[data-btn-save]', save );
            elem.on( 'click', 'input[type=checkbox]', toggle );

            getFriendList('');
        }
    });
}

function search( e ) {
    var elem = $( e.currentTarget );
    getFriendList( elem.val() );
}

function save() {
    var friendsearch = '',
        checkboxes = tabSelected.find('input[type=checkbox]'),
        friends = [],
        emails = elem.find('input[name=emails]').val() || '',
        message = elem.find('[name=message]').val() || '',
        rTrim = /^\s+|\s+$/g,
        params;

    checkboxes.each(function() {
        friends.push( this.value );
    });

    emails = emails.replace( rTrim, '' );
    message = message.replace( rTrim, '' );

    params = [
        [ 'friendsearch', friendsearch ],
        [ 'emails', emails ],
        [ 'message', message ],
        [ 'friends', friends.join(',') ],
    ];

    joms.ajax({
        func: 'system,ajaxSubmitInvitation',
        data: [ 'pages,inviteUsers', id, params ],
        callback: function() {
            elem.off();
            popup.close();
        }
    });
}

function changeTab( e ) {
    var $el = $( e.target ),
        selected = $el.attr('href') === '#joms-popup-tab-selected',
        lang = window.joms_lang[ selected ? 'COM_COMMUNITY_UNSELECT_ALL' : 'COM_COMMUNITY_SELECT_ALL' ];

    btnSelect.html( lang );
}

function selectAll() {
    var ct = $('.joms-tab__content:visible'),
        clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        ct.find('.joms-js--friend').remove();
        elem.find('input[type=checkbox]').each(function() {
            this.checked = false;
        });
        return;
    }

    // Add selected.
    clone = ct.find('.joms-js--friend').clone();
    clone.find('input[type=checkbox]').add( ct.find('input[type=checkbox]') ).prop( 'checked', 'checked' );
    ct = elem.find('#joms-popup-tab-selected');
    ct.html( clone );
}

function load() {
    getFriendList();
}

function toggle( e ) {
    var checkbox = $( e.target ),
        ct = checkbox.closest('.joms-tab__content'),
        id, clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        id = checkbox[0].value;
        checkbox.closest('.joms-js--friend').remove();
        elem.find('.joms-js--friend-' + id + ' input[type=checkbox]')[0].checked = false;
        return;
    }

    // Remove selected.
    if ( !checkbox[0].checked ) {
        id = checkbox[0].value;
        elem.find('#joms-popup-tab-selected .joms-js--friend-' + id).remove();
        return;
    }

    // Add selected.
    ct = elem.find('#joms-popup-tab-selected');
    clone = checkbox.closest('.joms-js--friend').clone();
    checkbox = clone.find('input[type=checkbox]');
    checkbox[0].checked = true;
    ct.append( clone );
}

function getFriendList( _keyword ) {
    var isReset = typeof _keyword === 'string';

    if ( isReset ) {
        tabAll.empty();
        start = 0;
        keyword = _keyword;
    } else {
        start += limit;
    }

    xhr && xhr.abort();
    xhr = joms.ajax({
        func: 'system,ajaxLoadFriendsList',
        data: [ keyword, 'pages,inviteUsers', id, start, limit ],
        callback: function( json ) {
            var html;

            if ( json.html ) {
                html = $( $.trim( json.html ) );
                html.each(function() {
                    var checkbox = $( this ).find(':checkbox'),
                        value = checkbox.val();

                    if ( tabSelected.find(':checkbox[value=' + value + ']').length ) {
                        checkbox[0].checked = true;
                    }
                });

                tabAll.append( html );
            }

            if ( !isReset ) {
                tabAll[0].scrollTop = tabAll[0].scrollHeight;
            }

            // Toggle load more.
            if ( json.loadMore ) {
                btnSelect.css({ width: '49%', marginRight: '2%' });
                btnLoad.css({ width: '49%' }).html( window.joms_lang.COM_COMMUNITY_INVITE_LOAD_MORE + ' (' + json.moreCount + ')' ).show();
            } else {
                btnLoad.hide();
                btnSelect.css({ width: '100%', marginRight: '0' });
            }
        }
    });
}

function buildHtml( json ) {
    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--primary" data-btn-save="1">', json.btnInvite, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.delete = factory( root );

    define('popups/page.delete',[ 'utils/popup' ], function() {
        return joms.popup.page.delete;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'pages,ajaxWarnPageDeletion',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save( e, step ) {
    joms.ajax({
        func: 'pages,ajaxDeletePage',
        data: [ id, step || 1 ],
        callback: function( json ) {
            var $ct;

            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().first()
                .append( '<div>' + (json.error || json.message) + '</div>' );

            if ( json.next ) {
                save( null, json.next );
            } else if ( json.redirect ) {
                $ct = elem.find('.joms-js--step2');
                $ct.find('.joms-js--button-done')
                    .html( json.btnDone )
                    .on( 'click', function() {
                        window.location = json.redirect;
                    });

                $ct.find('.joms-popup__action').show();
                $ct.find('.joms-popup__content').removeClass('joms-popup__content--single');
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnDelete, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
            '<div class="joms-popup__action joms-popup__hide">',
            '<button class="joms-button--primary joms-js--button-done"></button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.unpublish = factory( root );

    define('popups/page.unpublish',[ 'utils/popup' ], function() {
        return joms.popup.page.unpublish;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'pages,ajaxShowUnpublishPage',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content">', json.html, '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
        '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.addFeatured = factory( root, $ );

    define('popups/page.addfeatured',[ 'utils/popup' ], function() {
        return joms.popup.page.addFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'pages,ajaxAddFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.removeFeatured = factory( root, $ );

    define('popups/page.removefeatured',[ 'utils/popup' ], function() {
        return joms.popup.page.removeFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'pages,ajaxRemoveFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.banMember = factory( root, $ );

    define('popups/page.banmember',[ 'utils/popup' ], function() {
        return joms.popup.page.banMember;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'pages,ajaxBanMember',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.message || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userid );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.unbanMember = factory( root, $ );

    define('popups/page.unbanmember',[ 'utils/popup' ], function() {
        return joms.popup.page.unbanMember;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'pages,ajaxUnbanMember',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.message || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userid );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.removeMember = factory( root, $ );

    define('popups/page.removemember',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.page.removeMember;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'pages,ajaxConfirmMemberRemoval',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var checkbox = elem.find('input:checkbox'),
        func = checkbox[0].checked ? 'pages,ajaxBanMember' : 'pages,ajaxRemoveMember',
        data = [ userid, id ];

    joms.ajax({
        func: func,
        data: data,
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().append( json.error || json.message );

            if ( json.success ) {
                $( '.joms-js--member-page-' + id + '-' + userid ).remove();
                $( '.joms-js--request-buttons-page-' + id + '-' + userid ).remove();
                $( '.joms-js--request-notice-page-' + id + '-' + userid ).html( json && json.message || '' );
                joms.fn.notification.updateCounter( 'general', id, -1 );
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userId ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userId );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page || (joms.popup.page = {});
    joms.popup.page.report = factory( root );

    define('popups/page.report',[ 'utils/popup' ], function() {
        return joms.popup.page.report;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'system,ajaxReport',
        data: [],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'change', 'select', changeText );
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function changeText( e ) {
    elem.find('textarea').val( e.target.value );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var rTrim = /^\s+|\s+$/g,
        message;

    message = elem.find('textarea').val();
    message = message.replace( rTrim, '' );

    if ( !message ) {
        elem.find('.joms-js--error').show();
        return;
    }

    elem.find('.joms-js--error').hide();

    joms.ajax({
        func: 'system,ajaxSendReport',
        data: [ 'pages,reportPage', window.location.href, message, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            json.html,
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.page = factory( root, joms.popup.page || {});

    define('popups/page',[ 
      'popups/page.share',
      'popups/page.invite',
      'popups/page.delete',
      'popups/page.unpublish',
      'popups/page.addfeatured',
      'popups/page.removefeatured',
      'popups/page.banmember',
      'popups/page.unbanmember',
      'popups/page.removemember',
      'popups/page.report',
    ], function() {
        return joms.popup.page;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group['delete'] = factory( root );

    define('popups/group.delete',[ 'utils/popup' ], function() {
        return joms.popup.group['delete'];
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxWarnGroupDeletion',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save( e, step ) {
    joms.ajax({
        func: 'groups,ajaxDeleteGroup',
        data: [ id, step || 1 ],
        callback: function( json ) {
            var $ct;

            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().first()
                .append( '<div>' + (json.error || json.message) + '</div>' );

            if ( json.next ) {
                save( null, json.next );
            } else if ( json.redirect ) {
                $ct = elem.find('.joms-js--step2');
                $ct.find('.joms-js--button-done')
                    .html( json.btnDone )
                    .on( 'click', function() {
                        window.location = json.redirect;
                    });

                $ct.find('.joms-popup__action').show();
                $ct.find('.joms-popup__content').removeClass('joms-popup__content--single');
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnDelete, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
            '<div class="joms-popup__action joms-popup__hide">',
            '<button class="joms-button--primary joms-js--button-done"></button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.invite = factory( root, $ );

    define('popups/group.invite',[ 'utils/popup' ], function() {
        return joms.popup.group.invite;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, tabAll, tabSelected, btnSelect, btnLoad, id, keyword, start, limit, xhr;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    limit = 200;

    joms.ajax({
        func: 'system,ajaxShowInvitationForm',
        data: [ null, '', id, 1, 1 ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            // Override limit supplied in json.
            if ( json.limit ) {
                limit = +json.limit;
            }

            elem = popup.contentContainer;
            tabAll = elem.find('.joms-tab__content').eq(0);
            tabSelected = elem.find('.joms-tab__content').eq(1);
            btnSelect = elem.find('[data-btn-select]');
            btnLoad = elem.find('[data-btn-load]');

            elem.on( 'keyup', '[data-search]', search );
            elem.on( 'click', '.joms-tab__bar a', changeTab );
            elem.on( 'click', '[data-btn-select]', selectAll );
            elem.on( 'click', '[data-btn-load]', load );
            elem.on( 'click', '[data-btn-save]', save );
            elem.on( 'click', 'input[type=checkbox]', toggle );

            getFriendList('');
        }
    });
}

function search( e ) {
    var elem = $( e.currentTarget );
    getFriendList( elem.val() );
}

function save() {
    var friendsearch = '',
        checkboxes = tabSelected.find('input[type=checkbox]'),
        friends = [],
        emails = elem.find('input[name=emails]').val() || '',
        message = elem.find('[name=message]').val() || '',
        rTrim = /^\s+|\s+$/g,
        params;

    checkboxes.each(function() {
        friends.push( this.value );
    });

    emails = emails.replace( rTrim, '' );
    message = message.replace( rTrim, '' );

    params = [
        [ 'friendsearch', friendsearch ],
        [ 'emails', emails ],
        [ 'message', message ],
        [ 'friends', friends.join(',') ],
    ];

    joms.ajax({
        func: 'system,ajaxSubmitInvitation',
        data: [ 'groups,inviteUsers', id, params ],
        callback: function() {
            elem.off();
            popup.close();
        }
    });
}

function changeTab( e ) {
    var $el = $( e.target ),
        selected = $el.attr('href') === '#joms-popup-tab-selected',
        lang = window.joms_lang[ selected ? 'COM_COMMUNITY_UNSELECT_ALL' : 'COM_COMMUNITY_SELECT_ALL' ];

    btnSelect.html( lang );
}

function selectAll() {
    var ct = $('.joms-tab__content:visible'),
        clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        ct.find('.joms-js--friend').remove();
        elem.find('input[type=checkbox]').each(function() {
            this.checked = false;
        });
        return;
    }

    // Add selected.
    clone = ct.find('.joms-js--friend').clone();
    clone.find('input[type=checkbox]').add( ct.find('input[type=checkbox]') ).prop( 'checked', 'checked' );
    ct = elem.find('#joms-popup-tab-selected');
    ct.html( clone );
}

function load() {
    getFriendList();
}

function toggle( e ) {
    var checkbox = $( e.target ),
        ct = checkbox.closest('.joms-tab__content'),
        id, clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        id = checkbox[0].value;
        checkbox.closest('.joms-js--friend').remove();
        elem.find('.joms-js--friend-' + id + ' input[type=checkbox]')[0].checked = false;
        return;
    }

    // Remove selected.
    if ( !checkbox[0].checked ) {
        id = checkbox[0].value;
        elem.find('#joms-popup-tab-selected .joms-js--friend-' + id).remove();
        return;
    }

    // Add selected.
    ct = elem.find('#joms-popup-tab-selected');
    clone = checkbox.closest('.joms-js--friend').clone();
    checkbox = clone.find('input[type=checkbox]');
    checkbox[0].checked = true;
    ct.append( clone );
}

function getFriendList( _keyword ) {
    var isReset = typeof _keyword === 'string';

    if ( isReset ) {
        tabAll.empty();
        start = 0;
        keyword = _keyword;
    } else {
        start += limit;
    }

    xhr && xhr.abort();
    xhr = joms.ajax({
        func: 'system,ajaxLoadFriendsList',
        data: [ keyword, 'groups,inviteUsers', id, start, limit ],
        callback: function( json ) {
            var html;

            if ( json.html ) {
                html = $( $.trim( json.html ) );
                html.each(function() {
                    var checkbox = $( this ).find(':checkbox'),
                        value = checkbox.val();

                    if ( tabSelected.find(':checkbox[value=' + value + ']').length ) {
                        checkbox[0].checked = true;
                    }
                });

                tabAll.append( html );
            }

            if ( !isReset ) {
                tabAll[0].scrollTop = tabAll[0].scrollHeight;
            }

            // Toggle load more.
            if ( json.loadMore ) {
                btnSelect.css({ width: '49%', marginRight: '2%' });
                btnLoad.css({ width: '49%' }).html( window.joms_lang.COM_COMMUNITY_INVITE_LOAD_MORE + ' (' + json.moreCount + ')' ).show();
            } else {
                btnLoad.hide();
                btnSelect.css({ width: '100%', marginRight: '0' });
            }
        }
    });
}

function buildHtml( json ) {
    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--primary" data-btn-save="1">', json.btnInvite, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.join = factory( root, $ );

    define('popups/group.join',[ 'utils/popup' ], function() {
        return joms.popup.group.join;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxJoinGroup',
        data: [ id ],
        callback: function() {
            window.location.reload();
        }
    });
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.leave = factory( root, $ );

    define('popups/group.leave',[ 'utils/popup' ], function() {
        return joms.popup.group.leave;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxShowLeaveGroup',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.addFeatured = factory( root, $ );

    define('popups/group.addfeatured',[ 'utils/popup' ], function() {
        return joms.popup.group.addFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxAddFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.removeFeatured = factory( root, $ );

    define('popups/group.removefeatured',[ 'utils/popup' ], function() {
        return joms.popup.group.removeFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxRemoveFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.report = factory( root );

    define('popups/group.report',[ 'utils/popup' ], function() {
        return joms.popup.group.report;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'system,ajaxReport',
        data: [],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'change', 'select', changeText );
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function changeText( e ) {
    elem.find('textarea').val( e.target.value );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var rTrim = /^\s+|\s+$/g,
        message;

    message = elem.find('textarea').val();
    message = message.replace( rTrim, '' );

    if ( !message ) {
        elem.find('.joms-js--error').show();
        return;
    }

    elem.find('.joms-js--error').hide();

    joms.ajax({
        func: 'system,ajaxSendReport',
        data: [ 'groups,reportGroup', window.location.href, message, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            json.html,
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.unpublish = factory( root );

    define('popups/group.unpublish',[ 'utils/popup' ], function() {
        return joms.popup.group.unpublish;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'groups,ajaxShowUnpublishGroup',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form')[0].submit();
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content">', json.html, '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
        '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.approve = factory( root, $ );

    define('popups/group.approve',[ 'functions/notification' ], function() {
        return joms.popup.group.approve;
    });

})( window, joms.jQuery, function( window, $ ) {

var id, userid;

function render( _id, _userid ) {
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'groups,ajaxApproveMember',
        data: [ userid, id ],
        callback: function( json ) {
            if ( json ) {
                $( '.joms-js--request-buttons-group-' + id + '-' + userid ).remove();
                $( '.joms-js--request-notice-group-' + id + '-' + userid ).html( json.message || json.error );
                json.success && joms.fn.notification.updateCounter( 'general', id, -1 );
            }
        }
    });
}

// Exports.
return function( id, userId ) {
    render( id, userId );
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.removeMember = factory( root, $ );

    define('popups/group.removemember',[ 'utils/popup', 'functions/notification' ], function() {
        return joms.popup.group.removeMember;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'groups,ajaxConfirmMemberRemoval',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var checkbox = elem.find('input:checkbox'),
        func = checkbox[0].checked ? 'groups,ajaxBanMember' : 'groups,ajaxRemoveMember',
        data = [ userid, id ];

    joms.ajax({
        func: func,
        data: data,
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().append( json.error || json.message );

            if ( json.success ) {
                $( '.joms-js--member-group-' + id + '-' + userid ).remove();
                $( '.joms-js--request-buttons-group-' + id + '-' + userid ).remove();
                $( '.joms-js--request-notice-group-' + id + '-' + userid ).html( json && json.message || '' );
                joms.fn.notification.updateCounter( 'general', id, -1 );
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userId ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userId );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.banMember = factory( root, $ );

    define('popups/group.banmember',[ 'utils/popup' ], function() {
        return joms.popup.group.banMember;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'groups,ajaxBanMember',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.message || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userid );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group || (joms.popup.group = {});
    joms.popup.group.unbanMember = factory( root, $ );

    define('popups/group.unbanmember',[ 'utils/popup' ], function() {
        return joms.popup.group.unbanMember;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'groups,ajaxUnbanMember',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.message || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, userid ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, userid );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.group = factory( root, joms.popup.group || {});

    define('popups/group',[
        'popups/group.delete',
        'popups/group.invite',
        'popups/group.join',
        'popups/group.leave',
        'popups/group.addfeatured',
        'popups/group.removefeatured',
        'popups/group.report',
        'popups/group.unpublish',
        'popups/group.approve',
        'popups/group.removemember',
        'popups/group.banmember',
        'popups/group.unbanmember'
    ], function() {
        return joms.popup.group;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});


(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.inbox || (joms.popup.inbox = {});
    joms.popup.inbox.addRecipient = factory( root, $ );

    define('popups/inbox.addrecipient',[ 'utils/popup' ], function() {
        return joms.popup.inbox.addRecipient;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, tabAll, tabSelected, btnSelect, btnLoad, id, keyword, start, limit, xhr;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    limit = 200;

    joms.ajax({
        func: 'system,ajaxShowFriendsForm',
        data: [ null, '', id, 1, 1 ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            // Override limit supplied in json.
            if ( json.limit ) {
                limit = +json.limit;
            }

            elem = popup.contentContainer;
            tabAll = elem.find('.joms-tab__content').eq(0);
            tabSelected = elem.find('.joms-tab__content').eq(1);
            btnSelect = elem.find('[data-btn-select]');
            btnLoad = elem.find('[data-btn-load]');

            elem.on( 'keyup', '[data-search]', search );
            elem.on( 'click', '.joms-tab__bar a', changeTab );
            elem.on( 'click', '[data-btn-select]', selectAll );
            elem.on( 'click', '[data-btn-load]', load );
            elem.on( 'click', '[data-btn-save]', select );
            elem.on( 'click', 'input[type=checkbox]', toggle );

            getFriendList('');
        }
    });
}

function search( e ) {
    var elem = $( e.currentTarget );
    getFriendList( elem.val() );
}

function select() {
    var to = $('#joms-js--compose-to');
    tabSelected.find('.joms-js--friend').each(function() {
        var item = $( this ),
            chk = item.find(':checkbox'),
            id = chk.val();

        if ( !to.find( '.joms-js--friend-' + id ).length ) {
            to.append( item.clone() );
        }
    });

    // Close popup.
    elem.off();
    popup.close();
    to.show();
}

function changeTab( e ) {
    var $el = $( e.target ),
        selected = $el.attr('href') === '#joms-popup-tab-selected',
        lang = window.joms_lang[ selected ? 'COM_COMMUNITY_UNSELECT_ALL' : 'COM_COMMUNITY_SELECT_ALL' ];

    btnSelect.html( lang );
}

function selectAll() {
    var ct = $('.joms-tab__content:visible'),
        clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        ct.find('.joms-js--friend').remove();
        elem.find('input[type=checkbox]').each(function() {
            this.checked = false;
        });
        return;
    }

    // Add selected.
    clone = ct.find('.joms-js--friend').clone();
    clone.find('input[type=checkbox]').add( ct.find('input[type=checkbox]') ).prop( 'checked', 'checked' );
    ct = elem.find('#joms-popup-tab-selected');
    ct.html( clone );
}

function load() {
    getFriendList();
}

function toggle( e ) {
    var checkbox = $( e.target ),
        ct = checkbox.closest('.joms-tab__content'),
        id, clone;

    // Remove selected.
    if ( ct.attr('id') === 'joms-popup-tab-selected' ) {
        id = checkbox[0].value;
        checkbox.closest('.joms-js--friend').remove();
        elem.find('.joms-js--friend-' + id + ' input[type=checkbox]')[0].checked = false;
        return;
    }

    // Remove selected.
    if ( !checkbox[0].checked ) {
        id = checkbox[0].value;
        elem.find('#joms-popup-tab-selected .joms-js--friend-' + id).remove();
        return;
    }

    // Add selected.
    ct = elem.find('#joms-popup-tab-selected');
    clone = checkbox.closest('.joms-js--friend').clone();
    checkbox = clone.find('input[type=checkbox]');
    checkbox[0].checked = true;
    ct.append( clone );
}

function getFriendList( _keyword ) {
    var isReset = typeof _keyword === 'string';

    if ( isReset ) {
        tabAll.empty();
        start = 0;
        keyword = _keyword;
    } else {
        start += limit;
    }

    xhr && xhr.abort();
    xhr = joms.ajax({
        func: 'system,ajaxLoadFriendsList',
        data: [ keyword, 'friends,inviteUsers', id, start, limit ],
        callback: function( json ) {
            var html;

            if ( json.html ) {
                html = $( $.trim( json.html ) );
                html.each(function() {
                    var checkbox = $( this ).find(':checkbox'),
                        value = checkbox.val();

                    if ( tabSelected.find(':checkbox[value=' + value + ']').length ) {
                        checkbox[0].checked = true;
                    }
                });

                tabAll.append( html );
            }

            if ( !isReset ) {
                tabAll[0].scrollTop = tabAll[0].scrollHeight;
            }

            // Toggle load more.
            if ( json.loadMore ) {
                btnSelect.css({ width: '49%', marginRight: '2%' });
                btnLoad.css({ width: '49%' }).html( window.joms_lang.COM_COMMUNITY_INVITE_LOAD_MORE + ' (' + json.moreCount + ')' ).show();
            } else {
                btnLoad.hide();
                btnSelect.css({ width: '100%', marginRight: '0' });
            }
        }
    });
}

function buildHtml( json ) {
    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--primary" data-btn-save="1">', json.btnSelect, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function (root, $, factory) {

    joms.popup || (joms.popup = {});
    joms.popup.chat || (joms.popup.chat = {});
    joms.popup.chat.addRecipient = factory(root, $);

    define('popups/chat.addrecipient',['utils/popup'], function () {
        return joms.popup.chat.addRecipient;
    });

})(window, joms.jQuery, function (window, $) {

    var popup, elem, tabAll, tabSelected, btnSelect, btnLoad, id, keyword, start, limit, xhr, timeout;

    function render(_popup, _id) {
        if (elem)
            elem.off();
        popup = _popup;
        id = _id;

        limit = 200;

        joms.ajax({
            func: 'system,ajaxShowFriendsForm',
            data: [null, '', '', 1, 1],
            callback: function (json) {
                popup.items[0] = {
                    type: 'inline',
                    src: buildHtml(json)
                };

                popup.updateItemHTML();

                // Override limit supplied in json.
                if (json.limit) {
                    limit = +json.limit;
                }

                elem = popup.contentContainer;
                tabAll = elem.find('.joms-tab__content').eq(0);
                tabSelected = elem.find('.joms-tab__content').eq(1);
                btnSelect = elem.find('[data-btn-select]');
                btnLoad = elem.find('[data-btn-load]');

                elem.on('input', '[data-search]', function(e) { search(e, _id)});
                elem.on('click', '.joms-tab__bar a', changeTab);
                elem.on('click', '[data-btn-select]', selectAll);
                elem.on('click', '[data-btn-load]', function(e) { load(e, _id)});
                elem.on('click', '[data-btn-save]', select);
                elem.on('click', 'input[type=checkbox]', toggle);

                getFriendList('', _id);
            }
        });
    }

    function search(e, _id) {
        var elem = $(e.currentTarget);
        clearTimeout(timeout);
        timeout = setTimeout(function() {
            getFriendList(elem.val(), _id);
        }, 300);
    }

    function select() {
        var added_friends = {};
        tabSelected.find('.joms-js--friend').each(function () {
            var item = $(this),
                chk = item.find(':checkbox'),
                id = chk.val(),
                friend = {
                    id : +id,
                    name: item.find('.joms-avatar--comment a img').attr('alt'),
                    avatar: item.find('.joms-avatar--comment a img').attr('src')
                };
            added_friends[id] = friend;    
        });
        joms_observer.do_action('chat_add_people', added_friends);
        // Close popup.
        elem.off();
        popup.close();
    }

    function changeTab(e) {
        var $el = $(e.target),
            selected = $el.attr('href') === '#joms-popup-tab-selected',
            lang = window.joms_lang[ selected ? 'COM_COMMUNITY_UNSELECT_ALL' : 'COM_COMMUNITY_SELECT_ALL' ];

        btnSelect.html(lang);
    }

    function selectAll() {
        var ct = $('.joms-tab__content:visible'),
            clone;

        // Remove selected.
        if (ct.attr('id') === 'joms-popup-tab-selected') {
            ct.find('.joms-js--friend').remove();
            elem.find('input[type=checkbox]').each(function () {
                this.checked = false;
            });
            return;
        }

        // Add selected.
        clone = ct.find('.joms-js--friend').clone();
        clone.find('input[type=checkbox]').add(ct.find('input[type=checkbox]')).prop('checked', 'checked');
        ct = elem.find('#joms-popup-tab-selected');
        ct.html(clone);
    }

    function load(e, _id) {
        getFriendList('', _id);
    }

    function toggle(e) {
        var checkbox = $(e.target),
            ct = checkbox.closest('.joms-tab__content'),
            id, clone;

        // Remove selected.
        if (ct.attr('id') === 'joms-popup-tab-selected') {
            id = checkbox[0].value;
            checkbox.closest('.joms-js--friend').remove();
            elem.find('.joms-js--friend-' + id + ' input[type=checkbox]')[0].checked = false;
            return;
        }

        // Remove selected.
        if (!checkbox[0].checked) {
            id = checkbox[0].value;
            elem.find('#joms-popup-tab-selected .joms-js--friend-' + id).remove();
            return;
        }

        // Add selected.
        ct = elem.find('#joms-popup-tab-selected');
        clone = checkbox.closest('.joms-js--friend').clone();
        checkbox = clone.find('input[type=checkbox]');
        checkbox[0].checked = true;
        ct.append(clone);
    }

    function getFriendList(_keyword, _id) {
        var isReset = typeof _keyword === 'string';
        var users = _id && typeof _id === 'string' ? _id.split(',') : [];

        if (isReset) {
            tabAll.empty();
            start = 0;
            keyword = _keyword;
        } else {
            start += limit;
        }

        xhr && xhr.abort();
        xhr = joms.ajax({
            func: 'system,ajaxLoadFriendsList',
            data: [keyword, 'friends,inviteUsers', id, start, limit],
            callback: function (json) {
                var html;

                if (json.html) {
                    html = $($.trim(json.html));
                    html.each(function () {
                        var elm = $(this),
                            checkbox = elm.find(':checkbox'),
                            value = checkbox.val();

                        if (tabSelected.find(':checkbox[value=' + value + ']').length) {
                            checkbox[0].checked = true;
                        }


                    });

                    tabAll.append(html);

                    _.each(users, function(id) {
                        var added = tabAll.find('.joms-js--friend-' + id);
                        if (added.length) {
                            added.find('.joms-stream__time label').text(joms_lang.COM_COMMUNITY_APPS_LIST_ADDED);
                        }
                    });
                }

                if (!isReset) {
                    tabAll[0].scrollTop = tabAll[0].scrollHeight;
                }

                // Toggle load more.
                if (json.loadMore) {
                    btnSelect.css({width: '49%', marginRight: '2%'});
                    btnLoad.css({width: '49%'}).html(window.joms_lang.COM_COMMUNITY_INVITE_LOAD_MORE + ' (' + json.moreCount + ')').show();
                } else {
                    btnLoad.hide();
                    btnSelect.css({width: '100%', marginRight: '0'});
                }
            }
        });
    }

    function buildHtml(json) {
        return [
            '<div class="joms-popup joms-popup--whiteblock">',
            '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
            '<div data-ui-object="popup-step-1"', (json.error ? ' class="joms-popup__hide"' : ''), '>',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--primary" data-btn-save="1">', json.btnSelect, '</button>',
            '</div>',
            '</div>',
            '<div data-ui-object="popup-step-2"', (json.error ? '' : ' class="joms-popup__hide"'), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
            '</div>',
            '</div>'
        ].join('');
    }

// Exports.
    return function (id) {
        joms.util.popup.prepare(function (mfp) {
            render(mfp, id);
        });
    };

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.inbox || (joms.popup.inbox = {});
    joms.popup.inbox.remove = factory( root, $ );

    define('popups/inbox.remove',[ 'utils/popup' ], function() {
        return joms.popup.inbox.remove;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, task, msgids;

function render( _popup, _task, _msgids ) {
    var data;

    if ( elem ) elem.off();
    popup = _popup;
    task = _task;
    msgids = _msgids;

    data = [ task ];
    msgids.length || data.push('empty');

    joms.ajax({
        func: 'inbox,ajaxDeleteMessages',
        data: data,
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: task === 'inbox' ? 'inbox,ajaxRemoveFullMessages' : 'inbox,ajaxRemoveSentMessages',
        data: [ msgids.join(',') ],
        callback: function( json ) {
            var i;

            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );

            if ( json.success ) {
                $('.joms-js--message-checkall')[0].checked = false;
                for ( i = 0; i < msgids.length; i++ ) {
                    $( '.joms-js--message-item-' + msgids[i] ).remove();
                }
                if ( !$('.joms-js--message-item').length ) {
                    $('.joms-js--message-ct').remove();
                }
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1 ', ( json.error ? 'joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', ( json.html || '' ), '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2 ', ( json.error ? '' : 'joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( task, msgids ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, task, msgids );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.inbox || (joms.popup.inbox = {});
    joms.popup.inbox.setRead = factory( root, $ );

    define('popups/inbox.setread',[ 'utils/popup' ], function() {
        return joms.popup.inbox.setRead;
    });

})( window, joms.jQuery, function( window ) {

function render( msgids, error ) {
    var i;

    if ( !msgids.length ) {
        joms.util.popup.prepare(function( mfp ) {
            mfp.items[0] = { type: 'inline', src: buildHtml({ error: error }) };
            mfp.updateItemHTML();
        });
        return;
    }

    for ( i = 0; i < msgids.length; i++ ) {
        window.jax.call( 'community', 'inbox,ajaxMarkMessageAsRead', msgids[ i ] );
    }
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-js--step1 ', ( json.error ? 'joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', ( json.html || '' ), '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2 ', ( json.error ? '' : 'joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( msgids, error ) {
    render( msgids, error );
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.inbox || (joms.popup.inbox = {});
    joms.popup.inbox.setUnread = factory( root, $ );

    define('popups/inbox.setunread',[ 'utils/popup' ], function() {
        return joms.popup.inbox.setUnread;
    });

})( window, joms.jQuery, function( window ) {

function render( msgids, error ) {
    var i;

    if ( !msgids.length ) {
        joms.util.popup.prepare(function( mfp ) {
            mfp.items[0] = { type: 'inline', src: buildHtml({ error: error }) };
            mfp.updateItemHTML();
        });
        return;
    }

    for ( i = 0; i < msgids.length; i++ ) {
        window.jax.call( 'community', 'inbox,ajaxMarkMessageAsUnread', msgids[ i ] );
    }
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', ( json.title || '' ), '</div>',
        '<div class="joms-js--step1 ', ( json.error ? 'joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', ( json.html || '' ), '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2 ', ( json.error ? '' : 'joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( msgids, error ) {
    render( msgids, error );
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.inbox = factory( root, joms.popup.inbox || {});

    define('popups/inbox',[
        'popups/inbox.addrecipient',
        'popups/chat.addrecipient',
        'popups/inbox.remove',
        'popups/inbox.setread',
        'popups/inbox.setunread'
    ], function() {
        return joms.popup.inbox;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});


(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.location || (joms.popup.location = {});
    joms.popup.location.view = factory( root );

    define('popups/location.view',[ 'utils/popup' ], function() {
        return joms.popup.location.view;
    });

})( window, function( root ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'activities,ajaxShowMap',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
        }
    });
}

function buildHtml(json){
    if(root.joms_maps_api == "openstreetmap"){
       return buildHtml_openstreetmap(json);
    }else{
        return buildHtml_google(json);
    }
}

function buildHtml_openstreetmap( json ) {
    var latlng, location, src;

    json || (json = {});
    joms.map.executeOpenStreetmap(function(){
      setTimeout(function(){
        var el = joms.jQuery("#joms-locaton-popup-openstreet");
        el.css( 'height', 500 );
        el.css( 'width', 500 );

        var map = new L.Map(el[0],{attributionControl:false});
        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
                 minZoom: 14,
                 center: [51.505, -0.09],
                 id: 'mapbox.streets'
            }).addTo(map);

        var marker = L.marker().addTo(map);
        var position = L.latLng(json.latitude, json.longitude);
        marker.setLatLng( position );
        map.setView(position, 11, { animation: false });  
      },500);
       

    });
   
    return [
        '<div id="joms-locaton-popup" class="joms-popup">',
        '<div id="joms-locaton-popup-openstreet">',
        '</div>',
        '</div>'
    ].join('');
}

function buildHtml_google( json ) {
    var latlng, location, src;

    json || (json = {});

    latlng = json.latitude + ',' + json.longitude;
    location = json.location;
    src = 'https://maps.googleapis.com/maps/api/staticmap?center=' + latlng +
        '&markers=color:red%7Clabel:S%7C' + latlng + '&zoom=14&size=600x350&maptype=roadmap';

    if ( root.joms_gmap_key ) {
        src += '&key=' + root.joms_gmap_key;
    }

    return [
        '<div class="joms-popup joms-popup--location-view">',
        '<div', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<a href="//www.google.com/maps/@', latlng, ',19z" target="_blank">',
            '<img src="', src, '">',
            '</a>',
        '</div>',
        '<div', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single">', json.error, '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.location = factory( root, joms.popup.location || {});

    define('popups/location',[ 'popups/location.view' ], function() {
        return joms.popup.location;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.notification || (joms.popup.notification = {});
    joms.popup.notification.global = factory( root );

    define('popups/notification.global',[ 'utils/popup' ], function() {
        return joms.popup.notification.global;
    });

})( window, function() {

function render( popup ) {
    joms.ajax({
        func: 'notification,ajaxGetNotification',
        data: [ '' ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title">', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single" style="max-height:400px;overflow:auto">',
        '<ul style="margin: 0; list-style: none;">', ( json.html || '' ), '</ul>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function() {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp);
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.notification || (joms.popup.notification = {});
    joms.popup.notification.friend = factory( root );

    define('popups/notification.friend',[ 'utils/popup' ], function() {
        return joms.popup.notification.friend;
    });

})( window, function() {

function render( popup ) {
    joms.ajax({
        func: 'notification,ajaxGetRequest',
        data: [ '' ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title">', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single" style="max-height:400px;overflow:auto">',
        '<ul style="margin: 0; list-style: none;">', ( json.html || '' ), '</ul>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function() {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp);
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.notification || (joms.popup.notification = {});
    joms.popup.notification.chat = factory( root, $ );

    define('popups/notification.chat',[ 'utils/popup' ], function() {
        return joms.popup.notification.chat;
    });

})( window, joms.jQuery, function( window, $ ) {

function render( popup, elem ) {
    var $popover = $( elem ).next( '.joms-popover--toolbar-chat' ),
        json = {};

    json.title = window.joms_lang && joms_lang.COM_COMMUNITY_MESSAGE || 'Message';
    json.html = $popover.html();

    popup.items[0] = {
        type: 'inline',
        src: buildHtml( json )
    };

    popup.updateItemHTML();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title">', ( json.title || '' ), '</div>',
        '<div class="joms-popup__content joms-popup__content--single" style="max-height:400px;overflow:auto">',
        '<ul style="margin: 0; list-style: none;">', ( json.html || '' ), '</ul>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( elem ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, elem );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.notification = factory( root, joms.popup.notification || {});

    define('popups/notification',[
        'popups/notification.global',
        'popups/notification.friend',
        'popups/notification.chat'
    ], function() {
        return joms.popup.notification;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.phototag = factory( root, $ );

})( window, joms.jQuery, function( window, $, undef ) {

var wrapper, elem, img, friends, callback, tagAdded, isPopup, noResult;

function populate( el, tags ) {
    var cssTags = '.joms-phototag__tags',
        cssTag = '.joms-phototag__tag',
        $tags, $tag, tag, pos, top, left, width, tagTop, tagLeft, tagWidth, tagHeight, height, i;

    $( cssTags ).remove();

    if ( tags && tags.length ) {
        // Image measurements.
        img    = $( el );
        pos    = img.position();
        top    = pos.top;
        left   = pos.left;
        width  = img.width();
        height = img.height();

        // Tags container.
        $tags = $( '<div class=' + cssTags.substr(1) + '></div>' );
        $tags.css({
            top: 0,
            left: 0,
            right: 0,
            bottom: 0,
            margin: 'auto',
            width: width,
            height: height
        });

        $tags.insertAfter( img );

        for ( i = 0; i < tags.length; i++ ) {
            tag       = tags[ i ];
            tagTop    = Math.round( height * tag.top );
            tagLeft   = Math.round( width * tag.left );
            tagWidth  = Math.round( width * tag.width );
            tagHeight = Math.round( height * tag.height );

            // Force square.
            tagHeight = tagWidth = Math.max( 10, Math.min( tagWidth, tagHeight ) );

            $tag = $( '<div class=' + cssTag.substr(1) + '><span>' + tag.displayName + '</span></div>' );
            $tag.css({
                top    : tagTop + 'px',
                left   : tagLeft + 'px',
                width  : tagWidth + 'px',
                height : tagHeight + 'px'
            });
            $tag.appendTo( $tags );
        }
    }
}

function create( e, tags, type, groupid, eventid ) {
    var imgOffset, parOffset, pos, top, left, width, height;

    destroy();

    // Hide tagging info.
    $( '.joms-phototag__tags' ).hide();

    wrapper   = $( buildHtml() );
    elem      = wrapper.find('.joms-phototag');
    img       = $( e.target );
    friends   = undef;
    callback  = {};
    width     = img.width();
    height    = img.height();
    imgOffset = img.offset();
    parOffset = img.parent().offset();
    top       = imgOffset.top - parOffset.top;
    left      = imgOffset.left - parOffset.left;
    tagAdded  = tags || [];
    isPopup   = type !== 'page' ? true : false;

    elem.css({
        top: 0,
        left: 0
    });

    wrapper.css({
        top: top,
        left: left,
        width: width,
        height: height
    });

    wrapper.insertAfter( img );

    pos = calcClickPosition( e );

    elem.css({ top: pos.top, left: pos.left });
    elem.on( 'keyup', 'input', filter );
    elem.on( 'click', 'a[data-id]', select );
    elem.on( 'click', 'button', destroy );
    elem.on( 'click', function( e ) {
        e.stopPropagation();
    });
    wrapper.on( 'click', moveBoxPosition );

    if ( +groupid ) {
        joms.fn.tagging.fetchGroupMembers( groupid, function( members ) {
            friends = members;
            filter();
        });
    } else if ( +eventid ) {
        joms.fn.tagging.fetchEventMembers( eventid, function( members ) {
            friends = members;
            filter();
        });
    } else {
        filter();
    }

    // Apparently Android (Chrome?) trigger "onresize" event when keypad being shown,
    // which make phototag immediately closed. Add resize handler only on desktop browser.
    if ( !joms.mobile ) {
        $( window ).on( 'resize.phototag', destroy );
    }
}

function filter( e ) {
    var input, keyword, filtered, ac;

    if ( !friends ) {
        friends = window.joms_friends || [];
    }

    input = $( e ? e.currentTarget : elem.find('input') );
    keyword = input.val().replace( /^\s+|\s+$/g, '' ).toLowerCase();
    filtered = friends;

    filtered = joms._.filter( friends, function( obj ) {
        if ( !obj ) return false;
        if ( !obj.name ) return false;
        if ( tagAdded && tagAdded.indexOf( obj.id + '' ) >= 0 ) return false;
        if ( keyword && obj.name.toLowerCase().indexOf( keyword ) < 0 ) return false;
        return true;
    });

    filtered = filtered.slice(0, 8);
    filtered = joms._.map( filtered, function( obj ) {
        return '<a href="javascript:" data-id="' + obj.id + '">' + obj.name + '</a>';
    });

    if ( !filtered.length ) {
        filtered = [ '<span><em>' + window.joms_lang.COM_COMMUNITY_NO_RESULT_FOUND + '</em></span>' ];
        noResult = true;
    } else {
        noResult = false;
    }

    ac = elem.find('.joms-phototag__autocomplete');
    ac.html( filtered.join('') );

    ac.append(
        '<div><button class="joms-button--neutral joms-button--small joms-button--full">' +
        window.joms_lang.COM_COMMUNITY_PHOTO_DONE_TAGGING +
        '</button></div>'
    );

    ac.show();
}

function select( e ) {
    var ac = elem.find('.joms-phototag__autocomplete'),
        el = $( e.currentTarget ),
        id = el.data('id') || '',
        pos;

    e.stopPropagation();
    ac.hide();

    if ( callback && callback.tagAdded ) {
        tagAdded || (tagAdded = []);
        tagAdded.push( id + '' );
        pos = calcBoxPosition();

        callback.tagAdded(
            id,
            pos.left,
            pos.top,
            pos.width,
            pos.height
        );

        filter();
    }
}

function destroy() {
    // Show tagging info.
    $( '.joms-phototag__tags' ).show();

    if ( elem ) {
        elem.remove();
        wrapper.remove();
        $( window ).off('resize.phototag');
        elem = undef;
        img = undef;

        if ( callback && callback.destroy ) {
            callback.destroy();
        }

        callback = undef;
    }
}

function on( eventType, fn ) {
    callback[ eventType ] = fn;
}

function off( eventType ) {
    if ( !eventType ) {
        callback = {};
    } else if ( callback[ eventType ] ) {
        callback[ eventType ] = undef;
    }
}

function calcClickPosition( e ) {
    var height = img.height(),
        width  = img.width(),
        offset, left, top;

    // Calculate offset position.
    if ( isPopup ) {
        top  = e.clientY - 45 - e.target.offsetTop - 43;
        left = e.clientX - 45 - e.target.offsetLeft - 43;
    } else {
        offset = img.offset();
        top    = e.pageY - offset.top - 43;
        left   = e.pageX - offset.left - 43;
    }

    // Respect wrapper boundaries.
    top  = Math.max( 0, Math.min( top, height - 86 ) );
    left = Math.max( 0, Math.min( left, width - 86 ) );

    return {
        top: top,
        left: left
    };
}

function calcBoxPosition() {
    var pos, ctWidth, ctHeight, boxWidth, boxHeight, boxLeft, boxTop;

    ctWidth = wrapper.width();
    ctHeight = wrapper.height();

    pos = elem.position();
    boxWidth = elem.width();
    boxHeight = elem.height();
    boxLeft = pos.left;
    boxTop = pos.top;

    // Percentage (relative to wrapper height).
    boxWidth = boxWidth / ctWidth;
    boxHeight = boxHeight / ctHeight;

    // Percentage (relative to wrapper dimension).
    boxLeft = boxLeft / ctWidth;
    boxTop = boxTop / ctHeight;

    return {
        top    : boxTop,
        left   : boxLeft,
        width  : boxWidth,
        height : boxHeight
    };
}

function moveBoxPosition( e ) {
    var pos;

    if ( noResult ) {
        destroy();
        return;
    }

    pos = calcClickPosition( e );

    elem.css({
        top: pos.top,
        left: pos.left
    });
}

function buildHtml() {
    return [
        '<div class=joms-phototag__wrapper>',
        '<div class=joms-phototag>',
        '<div class=joms-phototag__input>',
        '<input type=text placeholder="', window.joms_lang.COM_COMMUNITY_SEARCH,'">',
        '<div class="joms-phototag__autocomplete"></div>',
        '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return {
    populate: populate,
    create: create,
    destroy: destroy,
    on: on,
    off: off
};

});

define("utils/phototag", function(){});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.open = factory( root, $ );

    define('popups/photo.open',[ 'utils/popup', 'utils/phototag' ], function() {
        return joms.popup.photo.open;
    });

})( window, joms.jQuery, function( window, $ ) {

var iconCog       = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-cog"></use></svg>',
    iconBubble    = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-bubble"></use></svg>',
    iconThumbsUp  = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-thumbs-up"></use></svg>',
    iconTag       = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-tag"></use></svg>',
    iconNewspaper = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-newspaper"></use></svg>',

    popup, elem, img, spinner, caption, tagBtn, tags, tagLabel, tagRemoveLabel, album, id, list, index, lang,
    canEdit, canDelete, canTag, canMovePhoto, canRotate, albumName, albumUrl, photoUrl, userId, groupId, eventId, isRegistered, isOwner, isAdmin, enableDownload, enableReporting, enableSharing, enableLike, enableReaction;

enableReaction = isEnableReaction();

function render( _popup, _album, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    album = _album;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxGetPhotosByAlbum',
        data: [ album, id ],
        callback: function( json ) {
            json || (json = {});
            lang = json.lang || {};
            canEdit = json.can_edit || false;
            canDelete = json.can_delete || false;
            canTag = json.can_tag || false;
            canMovePhoto = json.can_move_photo || false;
            canRotate = json.can_rotate || false;
            albumName = json.album_name || 'Untitled';
            albumUrl = json.album_url;
            photoUrl = json.photo_url;

            // Priviliges.
            isRegistered = userId = +json.my_id;
            groupId = +json.groupid;
            eventId = +json.eventid;
            isOwner = isRegistered && ( +json.my_id === +json.owner_id );
            isAdmin = +json.is_admin;

            // Settings.
            enableDownload = +json.deleteoriginalphotos ? false : true;
            enableReporting = +json.enablereporting;
            enableSharing = +json.enablesharing;
            enableLike = +json.enablelike;

            if ( albumUrl ) {
                albumName = '<a href="' + albumUrl + '">' + albumName + '</a>';
            }

            popup.items[0] = {
                type: 'inline',
                src: json.error ? buildErrorHtml( json ) : buildHtml( json )
            };

            popup.updateItemHTML();

            // Override popup#close function.
            popup.close = closeOverride;

            elem = popup.contentContainer;

            // Break on error.
            if ( json.error ) {
                return;
            }

            img = elem.find('img');
            spinner = elem.find('.joms-spinner');
            caption = elem.find('.joms-popup__optcaption');
            tagBtn = elem.find('.joms-popup__btn-tag-photo');

            elem.on( 'click', '.mfp-arrow-left', prev );
            elem.on( 'click', '.mfp-arrow-right', next );
            elem.on( 'click', '.joms-popup__btn-tag-photo', tagPrepare );
            elem.on( 'click', '.joms-popup__btn-comments', toggleComments );
            elem.on( 'click', '.joms-popup__btn-comments .joms-icon', toggleComments );
            elem.on( 'click', '.joms-popup__btn-option', toggleDropdown );
            elem.on( 'click', '.joms-popup__btn-share', share );
            elem.on( 'click', '.joms-popup__btn-download', download );
            elem.on( 'click', '.joms-popup__btn-report', report );
            elem.on( 'click', '.joms-popup__btn-upload', upload );
            elem.on( 'click', '.joms-popup__btn-cover', setAsCover );
            elem.on( 'click', '.joms-popup__btn-profile', setAsProfilePicture );
            elem.on( 'click', '.joms-popup__btn-delete', _delete );
            elem.on( 'click', '.joms-popup__btn-move', moveToAnotherAlbum );
            elem.on( 'click', '.joms-popup__btn-like', like );
            elem.on( 'click', '.joms-popup__btn-dislike', dislike );
            elem.on( 'click', '.joms-popup__btn-rotate-left', rotateLeft );
            elem.on( 'click', '.joms-popup__btn-rotate-right', rotateRight );
            elem.on( 'mouseleave', '.joms-popup__dropdown--wrapper', hideDropdown );
            elem.on( 'click', '.joms-js--remove-tag', tagRemove );
            elem.on( 'click', '.joms-js--btn-desc-edit', editDescription );
            elem.on( 'click', '.joms-js--btn-desc-cancel', cancelDescription );
            elem.on( 'click', '.joms-js--btn-desc-save', saveDescription );

            // Hook arrow keys.
            $( document ).off('keyup.photomodal').on( 'keyup.photomodal', function( e ) {
                var tagName = e.target.tagName.toLowerCase(),
                    key = e.keyCode;

                // Prevent navigation when user typing.
                if ( tagName === 'input' || tagName === 'textarea' ) {
                    return;
                }

                if ( key === 37 || key === 39 ) {
                    if ( key === 37 && index > 0 ) {
                        prev();
                    } else if ( key === 39 && index < list.length - 1 ) {
                        next();
                    }
                }
            });

            // Unhook arrow keys on close.
            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                $( document ).off('keyup.photomodal');
            };

            // In case no ID is profided.
            if ( !id ) {
                id = json.list[ json.index ].id;
            }

            fetchComments( id );
            toggleArrows();
            preloadNeighbourImages();
        }
    });
}

// Image load timer.
var loadImageTimer;
var loadSpinnerTimer;

// Image loader.
function loadImage( img, url ) {
    clearTimeout( loadImageTimer );
    clearTimeout( loadSpinnerTimer );

    img.hide();
    img.removeAttr('src');

    loadSpinnerTimer = setTimeout(function() {
        spinner.show();
    }, 100 );

    loadImageTimer = setTimeout(function() {
        $('<img>').on('load', function() {
            clearTimeout( loadSpinnerTimer );
            spinner.hide();
            img.attr( 'src', url );
            img.show();
        }).attr( 'src', url );
    }, 1 );
}

function prev() {
    index--;
    (index < 0) && (index = list.length - 1);
    id = list[index].id;
    loadImage( img, list[index].url );
    caption.html( albumName + ' <span class="joms-popup__optcapindex">' + ( index + 1 ) + ' ' + window.joms_lang.COM_COMMUNITY_OF + ' ' + list.length + '</span>' );
    tagCancel();
    fetchComments( id );
    toggleArrows();
    preloadNeighbourImages();
}

function next() {
    index++;
    (index >= list.length) && (index = 0);
    id = list[index].id;
    loadImage( img, list[index].url );
    caption.html( albumName + ' <span class="joms-popup__optcapindex">' + ( index + 1 ) + ' ' + window.joms_lang.COM_COMMUNITY_OF + ' ' + list.length + '</span>' );
    tagCancel();
    fetchComments( id );
    toggleArrows();
    preloadNeighbourImages();
}

function toggleArrows() {
    var noprev = index <= 0,
        nonext = index >= list.length - 1;

    elem.find('.mfp-arrow-left')[ noprev ? 'hide' : 'show' ]();
    elem.find('.mfp-arrow-right')[ nonext ? 'hide' : 'show' ]();
}

function preloadNeighbourImages() {
    var noprev = index <= 0,
        nonext = index >= list.length - 1,
        img;

    if ( !noprev ) {
        img = new Image();
        img.src = list[ index - 1 ].url;
    }

    if ( !nonext ) {
        img = new Image();
        img.src = list[ index + 1 ].url;
    }
}

function tagPrepare() {
    if ( tagBtn.data('tagging') ) {
        tagCancel();
        return;
    }

    tagBtn.data( 'tagging', 1 );

    elem.find( '.joms-phototag__tags' ).hide();
    elem.children('.joms-popup--photo').addClass('joms-popup--phototag');
    img.off('click.phototag').on( 'click.phototag', tagStart );
    img.addClass('joms-phototag__image');
    elem.find('.joms-popup__btn-tag-photo').html( iconTag + ' ' + lang.done_tagging );
}

function tagStart( e ) {
    var indices = joms._.map( tags, function( item ) {
        return item.userId + '';
    });

    joms.util.phototag.create( e, indices, false, groupId, eventId );
    joms.util.phototag.on( 'tagAdded', tagAdded );
    joms.util.phototag.on( 'destroy', function() {
        tagBtn.removeData('tagging');
        elem.children('.joms-popup--photo').removeClass('joms-popup--phototag');
        img.off('click.phototag');
        img.removeClass('joms-phototag__image');
        elem.find('.joms-popup__btn-tag-photo').html( iconTag + ' <span class="joms-popup__btn-overlay">' + lang.tag_photo + '</span>' );
    });

    elem.children('.joms-popup--photo').removeClass('joms-popup--phototag');
    img.off('click.phototag');
}

function tagAdded( userId, y, x, w, h ) {
    joms.ajax({
        func: 'photos,ajaxAddPhotoTag',
        data: [ id, userId, x, y, w, h ],
        callback: function( json ) {
            var $comments, $tags;

            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( json.success ) {
                tags.push( json.data );

                // Render tag info.
                $comments = elem.find('.joms-popup__comment');
                $tags = $comments.find('.joms-js--tag-info');
                $tags.html( _tagBuildHtml() );
            }
        }
    });
}

function tagCancel() {
    joms.util.phototag.destroy();
}

function tagRemove( e ) {
    var el = $( e.currentTarget ),
        userId = el.data('id');

    joms.ajax({
        func: 'photos,ajaxRemovePhotoTag',
        data: [ id, userId ],
        callback: function( json ) {
            var $comments, $tags, i;

            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( json.success ) {
                for ( i = 0; i < tags.length; i++ ) {
                    if ( +userId === +tags[i].userId ) {
                        tags.splice( i--, 1 );
                    }
                }

                // Render tag info.
                $comments = elem.find('.joms-popup__comment');
                $tags = $comments.find('.joms-js--tag-info');
                $tags.html( _tagBuildHtml() );
            }

        }
    });
}

function _tagBuildHtml() {
    var html, item, str, i;

    if ( !tags || !tags.length ) {
        tags = [];
    }

    joms.util.phototag.populate( img, tags, 'page' );

    if ( !tags.length ) {
        return '';
    }

    html = [];

    for ( i = 0; i < tags.length; i++ ) {
        item = tags[i];
        str = '<a href="' + item.profileUrl + '">' + item.displayName + '</a>';

        if ( item.canRemove ) {
            str += ' (<a href="javascript:" class="joms-js--remove-tag" data-id="' + item.userId + '">' + tagRemoveLabel + '</a>)';
        }

        html.push( str );
    }

    html = html.join(', ');
    html = tagLabel + '<br>' + html;

    return html;
}

function toggleComments( e ) {
    e.stopPropagation();
    elem.children('.joms-popup').toggleClass('joms-popup--togglecomment');
}

function closeOverride() {
    var $ct = elem.children('.joms-popup'),
        className = 'joms-popup--togglecomment';

    if ( $ct.hasClass( className ) ) {
        $ct.removeClass( className );
        return;
    }

    $.magnificPopup.proto.close.call( this );
}

function toggleDropdown( e ) {
    var wrapper = $( e.target ).closest('.joms-popup__dropdown--wrapper'),
        dropdown = wrapper.children('.joms-popup__dropdown');

    dropdown.toggleClass('joms-popup__dropdown--open');
}

function hideDropdown( e ) {
    var wrapper = $( e.target ).closest('.joms-popup__dropdown--wrapper'),
        dropdown = wrapper.children('.joms-popup__dropdown');

    dropdown.removeClass('joms-popup__dropdown--open');
}

function updateDropdownHtml( json ) {
    var html = '',
        like = '',
        count, isPhotoOwner;

    json || (json = {});
    isPhotoOwner = json.is_photo_owner;

    // Dropdown.
    if ( enableSharing ) {
        html += '<a href="javascript:" class="joms-popup__btn-share">' + lang.share + '</a>';
    }

    if ( enableDownload ) {
        html += '<a href="javascript:" class="joms-popup__btn-download">' + lang.download + '</a>';
    }

    if ( isOwner || isAdmin || isPhotoOwner ) {
        html += ( enableSharing || enableDownload ? '<div class="sep"></div>' : '' );
        html += ( isOwner ? '<a href="javascript:" class="joms-popup__btn-upload">' + lang.upload_photos + '</a>' : '' );
        html += ( isOwner ? '<div class="sep"></div>' : '' );
        html += ( isOwner ? '<a href="javascript:" class="joms-popup__btn-profile">' + lang.set_as_profile_picture + '</a>' : '' );
        html += ( isOwner || isAdmin ? '<a href="javascript:" class="joms-popup__btn-cover">' + lang.set_as_album_cover + '</a>' : '' );
        html += ( canDelete ? '<a href="javascript:" class="joms-popup__btn-delete">' + lang.delete_photo + '</a>' : '' );
        html += ( canMovePhoto || isPhotoOwner ? '<a href="javascript:" class="joms-popup__btn-move">' + lang.move_to_another_album + '</a>' : '' );
        html += ( canRotate ? '<div class="sep joms-popup__btn-rotate-toggle"></div>' : '' );
        html += ( canRotate ? '<a href="javascript:" class="joms-popup__btn-rotate-left joms-popup__btn-rotate-toggle">' + lang.rotate_left + '</a>' : '' );
        html += ( canRotate ? '<a href="javascript:" class="joms-popup__btn-rotate-right joms-popup__btn-rotate-toggle">' + lang.rotate_right + '</a>' : '' );
    } else {
        html += ( canDelete ? '<a href="javascript:" class="joms-popup__btn-delete">' + lang.delete_photo + '</a>' : '' );
        html += ( enableReporting ? '<a href="javascript:" class="joms-popup__btn-report">' + lang.report + '</a>' : '' );
    }

    html = '<div class="joms-popup__dropdown"><div class="joms-popup__ddcontent">' + html + '</div></div>';

    // Like.
    if ( enableLike && json && json.like && !enableReaction ) {
        like += '<button class="joms-popup__btn-like joms-js--like-photo-' + id + ( json.like.is_liked ? ' liked' : '' ) + '"';
        like += ' onclick="joms.api.page' + ( json.like.is_liked ? 'Unlike' : 'Like' ) + '(\'photo\', \'' + id + '\');"';
        like += ' data-lang="' + ( json.like.lang || 'Like' ) + '"';
        like += ' data-lang-like="' + ( json.like.lang_like || 'Like' ) + '"';
        like += ' data-lang-liked="' + ( json.like.lang_liked || 'Liked' ) + '">';
        like += iconThumbsUp + ' ';
        like += '<span>';
        like += ( json.like.is_liked ? json.like.lang_liked : json.like.lang_like );

        count = +json.like.count;
        if ( count > 0 ) {
            like += ' (' + count + ')';
        }

        like += '</span></button>';
    }

    elem.find('.joms-popup__dropdown').replaceWith( html );
    elem.find('.joms-popup__btn-like').replaceWith( like );
}

function toggleRotate( rotatable ) {
    var $elems = elem.find('.joms-popup__btn-rotate-toggle');
    if ( typeof rotatable === 'boolean' ) {
        rotatable ? $elems.show() : $elems.hide();
    }
}

function share() {
    joms.api.pageShare( photoUrl.replace( '___photo_id___', id ) );
}

function download() {
    window.open( list[index].original );
}

function report() {
    joms.api.photoReport( userId, photoUrl.replace( '___photo_id___', id ) );
}

function upload() {
    joms.api.photoUpload( album );
}

function setAsCover() {
    joms.ajax({
        func: 'photos,ajaxConfirmDefaultPhoto',
        data: [ album, id ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( window.confirm( stripTags( json.message ) ) ) {
                setAsCoverConfirm();
            }
        }
    });
}

function setAsCoverConfirm() {
    joms.ajax({
        func: 'photos,ajaxSetDefaultPhoto',
        data: [ album, id ],
        callback: function( json ) {
            window.alert( stripTags( json.error || json.message ) );
        }
    });
}

function setAsProfilePicture() {
    joms.ajax({
        func: 'photos,ajaxLinkToProfile',
        data: [ id ],
        callback: function( json ) {
            var form, prop;

            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( window.confirm( stripTags( json.message ) ) ) {
                json.formParams || (json.formParams = {});
                form = $('<form method=post action="' + json.formUrl + '" style="width:1px; height:1px; position:absolute"/>');
                for ( prop in json.formParams ) {
                    form.append('<input type=hidden name="' + prop + '" value="' + json.formParams[prop] + '"/>');
                }

                form.appendTo( document.body );
                form[0].submit();
            }
        }
    });
}

function _delete() {
    joms.ajax({
        func: 'photos,ajaxConfirmRemovePhoto',
        data: [ id ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( window.confirm( stripTags( json.message ) ) ) {
                _deleteConfirm();
            }
        }
    });
}

function _deleteConfirm() {
    joms.ajax({
        func: 'photos,ajaxRemovePhoto',
        data: [ id ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            elem.off();
            popup.close();
            window.location.reload();
        }
    });
}

function moveToAnotherAlbum() {
    joms.api.photoSetAlbum( id );
}

function like() {

}

function dislike() {

}

function rotateLeft() {
    rotate('left');
}

function rotateRight() {
    rotate('right');
}

function rotate( direction ) {
    var id = list[index] && list[index].id;
    if ( !id ) return;

    joms.ajax({
        func: 'photos,ajaxRotatePhoto',
        data: [ id, direction ],
        callback: function( json ) {
            joms._.extend(list[index], json || {});
            img.attr( 'src', list[index].url );
        }
    });
}

function stripTags( html ) {
    html = html.replace( /<\/?[^>]+>/g, '' );
    return html;
}

function buildHtml( json ) {
    var sliderHtml, commentHtml,
        caption = '';

    json || (json = {});
    sliderHtml  = json.error || '';
    commentHtml = json.error ? '' : (json.commentHtml || '');

    if ( !json.error ) {
        list       = json.list || [];
        index      = json.index || 0;
        index      = Math.min( list.length, index );
        sliderHtml = '<img src="' + list[index].url + '" data-index="' + index + '"><div class="joms-spinner" style="display:none"></div>';
        caption    = albumName + ' <span class="joms-popup__optcapindex">' + ( index + 1 ) + ' ' + window.joms_lang.COM_COMMUNITY_OF + ' ' + list.length + '</span>';
    }

    var reaction = enableReaction ? ' joms-reaction--on' : '';

    return [
        '<div class="joms-popup joms-popup--photo'+ reaction +'">',
        '<div class="joms-popup__commentwrapper">',
        '<div class="joms-popup__content">',
        (list && ( list.length > 1 ) ? '<button class="mfp-arrow mfp-arrow-left" type="button" title="' + lang.prev + '"></button>' : ''),
        (list && ( list.length > 1 ) ? '<button class="mfp-arrow mfp-arrow-right" type="button" title="' + lang.next + '"></button>' : ''),
        sliderHtml,
        '<div class="joms-popup__option clearfix">',
        '<div class="joms-popup__optcaption">', ( caption || 'Untitled' ), '</div>',
        '<div class="joms-popup__optoption">',
        '<button class="joms-popup__btn-viewalbum" onclick="window.location=\'', albumUrl, '\'">', iconNewspaper, ' <span class="joms-popup__btn-overlay">', lang.view_album, '</span></button>',
        '<button class="joms-popup__btn-comments">', iconBubble, ' <span class="joms-popup__btn-overlay">', lang.comments, '</span></button>',
        enableReaction ? '' : '<button class="joms-popup__btn-like"></button>',
        ( canTag ? '<button class="joms-popup__btn-tag-photo">' + iconTag + ' <span class="joms-popup__btn-overlay">' + lang.tag_photo + '</span></button>' : '' ),
        '<div class="joms-popup__dropdown--wrapper"><div class="joms-popup__dropdown"></div><button class="joms-popup__btn-option">', iconCog, ' <span class="joms-popup__btn-overlay">', lang.options, '</span></button></div>',
        '</div>',
        '</div>',
        '</div>',
        '<div class="joms-popup__comment">', commentHtml, '</div>',
        '<button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>',
        '</div>',
        '</div>'
    ].join('');
}

function buildErrorHtml( json ) {
    json || (json = {});
    json.title || (json.title = '&nbsp;');

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', json.error, '</div>',
        '</div>'
    ].join('');
}

function fetchComments( id, showAllParams ) {
    var comments = elem.find('.joms-popup__comment');

    if ( !showAllParams ) {
        comments.empty();
    }

    joms.ajax({
        func: 'photos,ajaxSwitchPhotoTrigger',
        data: [ id, showAllParams ? 1 : 0 ],
        callback: function( json ) {
            var $tags;

            if ( !showAllParams ) {
                if ( json.comments && json.showall ) {
                    json.showall = '<div class="joms-comment__more joms-js--more-comments"><a href="javascript:">' + json.showall + '</a></div>';
                    json.comments = $( $.trim( json.comments ) );
                    json.comments.prepend( json.showall );
                }
            }

            if ( showAllParams ) {
                comments.find('.joms-comment').replaceWith( json.comments );
            } else {
                comments.html( json.head || '' );
                comments.append( json.comments );
                comments.append( json.form || '' );

                // Cache tag info.
                tags = json.tagged || [];
                tagLabel = json.tagLabel || '';
                tagRemoveLabel = json.tagRemoveLabel || '';

                // Update some flags if present
                canEdit = typeof json.can_edit === 'undefined' ? canEdit : json.can_edit;
                canDelete = typeof json.can_delete === 'undefined' ? canDelete : json.can_delete;
                canTag = typeof json.can_tag === 'undefined' ? canTag : json.can_tag;
                canMovePhoto = typeof json.can_move_photo === 'undefined' ? canMovePhoto : json.can_move_photo;
                canRotate = typeof json.can_rotate === 'undefined' ? canRotate : json.can_rotate;

                // Render description.
                comments.find('.joms-js--description').html(
                    renderDescription( json.description || {} )
                );

                // Update rotate buttons.
                toggleRotate( !!canRotate );

                // Render tag info.
                $tags = comments.find('.joms-js--tag-info');
                $tags.html( _tagBuildHtml() );

                comments
                    .find('.joms-js--comments,.joms-js--newcomment')
                    .find('textarea.joms-textarea');

                joms.fn.tagging.initInputbox();
            }

            updateDropdownHtml( json );
            initVideoPlayers();
            joms.parseEmoji();
        }
    });
}

function initVideoPlayers() {
    var cssInitialized = '.joms-js--initialized',
        cssVideos = '.joms-js--video',
        videos = $('.joms-comment__body,.joms-js--inbox').find( cssVideos ).not( cssInitialized );

    if ( !videos.length ) {
        return;
    }

    joms.loadCSS( joms.ASSETS_URL + 'vendors/mediaelement/mediaelementplayer.min.css' );
    videos.on( 'click.joms-video', cssVideos + '-play', function() {
        var $el = $( this ).closest( cssVideos );
        joms.util.video.play( $el, $el.data() );
    });

    if ( joms.ios ) {
        setTimeout(function() {
            videos.find( cssVideos + '-play' ).click();
        }, 2000 );
    }
}

function renderDescription( json ) {
    if ( typeof json !== 'object' ) {
        json = {};
    }

    return [
        '<div class="joms-js--btn-desc-content">', ( json.content || '' ), '</div>',
        '<div class="joms-js--btn-desc-editor joms-popup__hide">',
            '<textarea class="joms-textarea" style="margin:0" placeholder="', ( json.lang_placeholder || '' ), '">', br2nl( json.rawcontent || '' ), '</textarea>',
            '<div style="margin-top:5px;text-align:right">',
                '<button class="joms-button--neutral joms-button--small joms-js--btn-desc-cancel">', ( json.lang_cancel || 'Cancel' ), '</button> ',
                '<button class="joms-button--primary joms-button--small joms-js--btn-desc-save">', ( json.lang_save || 'Save' ), '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--btn-desc-edit"', ( canEdit ? '' : ' style="display:none"' ), '><a href="javascript:"',
            ' data-lang-add="', ( json.lang_add || 'Add description' ), '"',
            ' data-lang-edit="', ( json.lang_edit || 'Edit description' ), '">',
                ( json.rawcontent ? json.lang_edit : json.lang_add ),
            '</a>',
        '</div>'
    ].join('');
}

function br2nl( text ) {
    text = text || '';
    text = text.replace( /<br\s*\/?>/g, '\n' );
    return text;
}

function editDescription() {
    elem.find('.joms-js--btn-desc-content').hide();
    elem.find('.joms-js--btn-desc-edit').hide();
    elem.find('.joms-js--btn-desc-editor').show();
}

function cancelDescription() {
    elem.find('.joms-js--btn-desc-editor').hide();
    elem.find('.joms-js--btn-desc-content').show();
    elem.find('.joms-js--btn-desc-edit').show();
}

function saveDescription() {
    var content  = elem.find('.joms-js--btn-desc-content'),
        editor   = elem.find('.joms-js--btn-desc-editor'),
        button   = elem.find('.joms-js--btn-desc-edit'),
        textarea = editor.find('textarea'),
        value    = $.trim( textarea.val() );

    joms.ajax({
        func: 'photos,ajaxSaveCaption',
        data: [ id, value ],
        callback: function( json ) {
            var a = button.find('a');

            if ( json.error ) {
                window.alert( json.error );
                return;
            }

            if ( json.success ) {
                editor.hide();
                content.html( json.caption ).show();
                a.html( a.data( 'lang-' + ( value ? 'edit' : 'add' ) ) );
                button.show();
            }
        }
    });
}

function isEnableReaction() {
    return !!joms.getData('joms_reaction');
}

// Exports.
return joms._.debounce(function( album, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, album, id );
    });
}, 200 );

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.remove = factory( root, $ );

    define('popups/photo.remove',[ 'utils/popup' ], function() {
        return joms.popup.photo.remove;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxConfirmRemovePhoto',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'photos,ajaxRemovePhoto',
        data: [ id ],
        callback: function( json ) {
            var $photo;

            if ( json.error ) {
                elem.find('.joms-js--step1').hide();
                elem.find('.joms-js--step2').show().children().html( json.error || json.message );
            } else {
                $photo = $( '.joms-js--photo-' + id );
                if ( $photo.length && $photo.siblings().length ) {
                    $photo.remove();
                    cancel();
                } else {
                    window.location.reload();
                }
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', json.message, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.report = factory( root );

    define('popups/photo.report',[ 'utils/popup' ], function() {
        return joms.popup.photo.report;
    });

})( window, function() {

var popup, elem, id, url;

function render( _popup, _id, _url ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    url = _url;

    joms.ajax({
        func: 'system,ajaxReport',
        data: [],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'change', 'select', changeText );
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function changeText( e ) {
    elem.find('textarea').val( e.target.value );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var rTrim = /^\s+|\s+$/g,
        message;

    message = elem.find('textarea').val();
    message = message.replace( rTrim, '' );

    if ( !message ) {
        elem.find('.joms-js--error').show();
        return;
    }

    elem.find('.joms-js--error').hide();

    joms.ajax({
        func: 'system,ajaxSendReport',
        data: [ 'photos,reportPhoto', url || window.location.href, message, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            json.html,
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, url ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, url );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.setAvatar = factory( root, $ );

    define('popups/photo.setavatar',[ 'utils/popup' ], function() {
        return joms.popup.photo.setAvatar;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id, url, params;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxLinkToProfile',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            url = json.formUrl || '';
            params = json.formParams || {};

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var form = $('<form method=post action="' + url + '" style="width:1px; height:1px; position:absolute"/>'),
        prop;

    for ( prop in params ) {
        form.append('<input type=hidden name="' + prop + '" value="' + params[prop] + '"/>');
    }

    form.appendTo( document.body );
    form[0].submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.message, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.setCover = factory( root, $ );

    define('popups/photo.setcover',[ 'utils/popup' ], function() {
        return joms.popup.photo.setCover;
    });

})( window, joms.jQuery, function() {

var popup, elem, album, id;

function render( _popup, _album, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    album = _album;
    id = _id;

    joms.ajax({
        func: 'photos,ajaxConfirmDefaultPhoto',
        data: [ album, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'photos,ajaxSetDefaultPhoto',
        data: [ album, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.message, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( album, id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, album, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.upload = factory( root, $ );

    define('popups/photo.upload',[ 'utils/loadlib', 'utils/popup' ], function() {
        return joms.popup.photo.upload;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, uploader, uploaderButton, uploaderPreview, albumid, contextid, context, lang, files, newalbumid;

function render( _popup, _albumid, _contextid, _context ) {
    var data;

    if ( elem ) elem.off();
    popup = _popup;
    albumid = _albumid || false;
    context = _context || false;
    contextid = _contextid || false;

    data = [];
    data.push( albumid || '' );
    data.push( contextid || '' );
    data.push( context || '' );

    joms.ajax({
        func: 'photos,ajaxUploadPhoto',
        data: data,
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            lang = json.lang || {};

            elem = popup.contentContainer;
            uploaderPreview = elem.find('.joms-gallery');

            files = [];

            elem.on( 'click', '.joms-tab__bar a', changeTab );
            elem.on( 'click', '.joms-js--form-toggle', toggleForm );
            elem.on( 'click', '.joms-js--btn-create', createAlbum );
            elem.on( 'click', '.joms-js--btn-add', upload );
            elem.on( 'click', '.joms-js--btn-view', viewAlbum );

            // Init uploader upon render.
            uploadInit();
        }
    });
}

function changeTab( e ) {
    var $btncreate = elem.find('.joms-js--btn-create'),
        $btnadd = elem.find('.joms-js--btn-add'),
        $el = $( e.target ),
        href = $el.attr('href');

    if ( newalbumid || href.match(/select-album/) ) {
        $btncreate.hide();
        $btnadd.show();
    } else {
        $btnadd.hide();
        $btncreate.show();
    }
}

function toggleForm( state ) {
    var $btn = elem.find('.joms-js--form-toggle');

    if ( state !== 'show' && state !== 'hide' ) {
        state = $btn.data('hidden') ? 'show' : 'hide';
    }

    if ( state === 'show' ) {
        $btn.removeData('hidden');
        elem.find('.joms-js--thumbnails').hide();
        elem.find('.joms-js--form-detail').css({ height: '' });
    } else if ( state === 'hide' ) {
        $btn.data('hidden', 'hidden');
        elem.find('.joms-js--form-detail').css({ height: 0 });
        elem.find('.joms-js--thumbnails').show();
    }
}

function createAlbum() {
    var album = $.trim( elem.find('[name=name]').val() ),
        location = $.trim( elem.find('[name=location]').val() ),
        description = $.trim( elem.find('[name=description]').val() ),
        permission = elem.find('[name=permissions]').val(),
        $albumerrormsg = elem.find('[name=name]').siblings('.joms-help').hide(),
        $loading = elem.find('.joms-js--btn-create img');

    if ( !album.length ) {
        $albumerrormsg.show();
        return;
    }

    if ( $loading.is(':visible') ) {
        return;
    }

    $loading.show();

    joms.ajax({
        func: 'photos,ajaxCreateAlbum',
        data: [ album, contextid || '', context || '', location || '', description || '', permission || '' ],
        callback: joms._.debounce(function( json ) {
            $loading.hide();

            if ( json.error ) {
                window.alert( json.error );
                return;
            }

            if ( json.albumid ) {
                albumid = newalbumid = json.albumid;
                elem.find('.joms-js--btn-create').hide();
                elem.find('.joms-js--btn-add').show();

                // Disable input elements on new album tab.
                elem.find('#joms-js__new-album').find('input.joms-input, textarea.joms-textarea, select.joms-select')
                    .attr('disabled', 'disabled');

                toggleForm('hide');
            }
        }, 500 )
    });
}

function upload() {
    uploadInit(function() {
        uploaderButton.click();
    });
}

function uploadInit( callback ) {
    if ( typeof callback !== 'function' ) {
        callback = function() {};
    }

    if ( uploader ) {
        callback();
        return;
    }

    joms.util.loadLib( 'plupload', function () {
        var container, button;

        container = $('<div id="joms-js--photoupload-uploader" aria-hidden="true" style="width:1px; height:1px; overflow:hidden">').appendTo( document.body );
        button    = $('<button id="joms-js--photoupload-uploader-button">').appendTo( container );
        uploader  = new window.plupload.Uploader({
            url: 'index.php?option=com_community&view=photos&task=multiUpload',
            filters: [{ title: 'Image files', extensions: 'jpg,jpeg,png,gif' }],
            container: 'joms-js--photoupload-uploader',
            browse_button: 'joms-js--photoupload-uploader-button',
            runtimes: 'html5,html4'
        });

        uploader.bind( 'FilesAdded', uploadAdded );
        uploader.bind( 'Error', uploadError );
        uploader.bind( 'UploadProgress', uploadProgress );
        uploader.bind( 'FileUploaded', uploadUploaded );
        uploader.bind( 'uploadComplete', uploadComplete );
        uploader.init();

        uploaderButton = container.find('input[type=file]');
        callback();
    });
}

function uploadAdded( up, files ) {
    var html = '',
        i;

    for ( i = 0; i < files.length; i++ ) {
        html += '<li class="joms-gallery__item joms-file--' + files[i].id + '">';
        html += '<div class="joms-gallery__thumbnail"><img src="' + joms.ASSETS_URL + 'photo_thumb.png"></div>';
        html += '<div class="joms-gallery__body">';
        html += '<a class="joms-gallery__title">' + files[i].name + '</a> <span>(' + Math.round( files[i].size / 1024 ) + ' KB)</span>';
        html += '<div class="joms-progressbar"><div class="joms-progressbar__progress" style="width:0%"></div></div>';
        html += '</div>';
        html += '</li>';
    }

    uploaderPreview.append( html );

    elem.find('.joms-js--btn-add').css({ visibility: 'visible' });
    elem.find('.joms-js--btn-view').hide();

    setTimeout(function() {
        uploadStartProxy();
    }, 1000);
}

function uploadStartProxy() {
    var $album = elem.find('[name=name]');
    if ( !$album.is(':visible') ) {
        albumid = elem.find('[name=album-id]').val();
    } else if ( newalbumid ) {
        albumid = newalbumid;
    }

    uploadStart();
}

function uploadStart() {
    elem.find('.joms-js--btn-add').css({ visibility: 'hidden' });
    elem.find('.joms-js--btn-view').hide();
    uploader.settings.url = joms.BASE_URL + 'index.php?option=com_community&view=photos&task=multiUpload&albumid=' + albumid;
    uploader.refresh();
    uploader.start();
}

function uploadError() {
}

function uploadProgress( up, file ) {
    var percent, bar;
    percent = Math.min( 100, Math.floor( file.loaded / file.size * 100 ) );
    bar = elem.find( '.joms-file--' + file.id );
    bar = bar.find( '.joms-progressbar__progress' );
    bar.stop().animate({ width: percent + '%' });
}

function uploadUploaded( up, file, resp ) {
    var json = {},
        item;

    try {
        json = JSON.parse( resp.response );
    } catch (e) {}

    if ( json.error ) {
        uploader.stop();
        if ( json.canContinue ) {
            elem.find('.joms-js--btn-add').css({ visibility: 'visible' });
        } else {
            elem.find('.joms-js--btn-add').css({ visibility: 'hidden' });
        }

        item = elem.find( '.joms-file--' + file.id );
        if ( item.prevAll().length ) {
            elem.find('.joms-js--btn-view').show();
        }
        item.nextAll().addBack().remove();
        window.alert( json.msg );
        return;
    }

    if ( json.info ) {
        files.push({ photoId: json.photoId });
        item = elem.find( '.joms-file--' + file.id );
        item = item.find('img');
        item.attr( 'src', json.info );
        elem.find('.joms-js--btn-add').html( elem.find('.joms-js--btn-add').data('lang-more') );
        elem.find('.joms-js--btn-view').show();

        // Disable tabs and input elements if images are successfully uploaded.
        elem.off('click', '.joms-tab__bar a');
        elem.find('.joms-tab__bar a').removeAttr('href');
        elem.find('input.joms-input, textarea.joms-textarea, select.joms-select').attr('disabled', 'disabled');
    }
}

function uploadComplete() {
    elem.find('.joms-js--btn-add').css({ visibility: 'visible' });
    elem.find('.joms-js--btn-view').show();

    joms.ajax({
        func: 'photos,ajaxUpdateCounter',
        data: [ albumid, JSON.stringify({ files: files }) ],
        callback: function() {}
    });
}

function viewAlbum() {
    joms.ajax({
        func: 'photos,ajaxGetAlbumURL',
        data: [ albumid || '', contextid || '', context || '' ],
        callback: function( json ) {
            if ( json.url ) {
                window.location = json.url;
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--photoupload">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        json.html,
        '</div>'
    ].join('');
}

// Exports.
return function( albumid, contextid, context ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, albumid, contextid, context );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.zoom = factory( root, $ );

    define('popups/photo.zoom',[ 'utils/popup' ], function() {
        return joms.popup.photo.zoom;
    });

})( window, joms.jQuery, function( window, $ ) {

var $cnt, $win;

function render( popup, url ) {
    var evtName = 'resize.joms-photozoom';

    popup.items[0] = {
        type: 'inline',
        src: buildHtml( url )
    };

    $cnt = popup.container;
    $win = $( window );

    // #719 Wait for image to be loaded.
    setTimeout(function() {
        $cnt.find( '.joms-popup img' ).one( 'load', fixResize ).each(function() {
            if ( this.complete ) $( this ).load();
        });
    }, 1 );

    $win.off( evtName )
        .on( evtName, fixResize );

    popup.updateItemHTML();
    popup.st.callbacks || (popup.st.callbacks = {});
    popup.st.callbacks.close = function() {
        $win.off( evtName );
    };
}

function buildHtml( url ) {
    url = url || '';
    url = url.replace( 'thumb_', '' );
    return [
        '<div class="joms-popup-wrapper" style="width:100%;height:100%;margin:0 auto;text-align:center">',
        '<div class="joms-popup" style="max-width:100%;left:auto;right:auto;position:relative;top:0;display:none;">',
        '<img src="' + url + '" style="width:auto;max-width:100%; display:none;">',
        '</div>',
        '</div>'
    ].join('');
}

var fixResize = joms._.debounce(function() {
    var $pop = $cnt.find( '.joms-popup' ).css({ position: '', display: '', top: '', width: '' });
    var $img = $pop.find( 'img' ).css({ height: '' });

    // Unwrap from temporary wrapper.
    if ( $cnt.find( '.joms-popup-wrapper' ).length ) {
        $cnt.find( '.joms-popup-wrapper .mfp-close' ).appendTo( $pop );
        $pop.unwrap();
    }

    var $mfp = $pop.parents('.mfp-content'),
        xHeight, ratio, height, width;

    height = $img.get(0).height;
    width = $img.get(0).width; 

    ratio = width / height;

    xHeight = $mfp.width() / ratio;

    if (xHeight > $mfp.height()) {
        width = 'auto';
        height = $mfp.height();
    } else {
        width = $mfp.width();
        height = 'auto';
    }

    $img.css({
        display: 'block',
        height: height,
        width: width
    });

    $pop.css({ position: 'relative', width: $img.width() });
    
}, 100 );

// Exports.
return function( url ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, url );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo || (joms.popup.photo = {});
    joms.popup.photo.setAlbum = factory( root, $ );

    define('popups/photo.setalbum',[ 'utils/popup' ], function() {
        return joms.popup.photo.setAlbum;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    if ( Object.prototype.toString.call( id ) !== '[object Array]' ) {
        id = [ id ];
    }

    joms.ajax({
        func: 'photos,ajaxSetPhotoAlbum',
        data: [ id.join(',') ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var albumid = elem.find('[name=albumid]').val();

    joms.ajax({
        func: 'photos,ajaxConfirmPhotoAlbum',
        data: [ albumid, id.join(',') ],
        callback: function( json ) {
            var message = [],
                $album, $photo, i;

            if ( json.message ) {
                message.push( json.message );
            }

            // Remove moved photos from album page.
            if ( json.moved && json.moved.length ) {
                for ( i = 0; i < json.moved.length; i++ ) {
                    $album = $( '.joms-js--album-' + json.moved[i].old_album );
                    if ( $album.length ) {
                        $photo = $album.find( '.joms-js--photo-' + json.moved[i].id );
                        $photo.remove();
                    }
                }
            }

            // Map errors.
            if ( Object.prototype.toString.call( json.error ) === '[object Array]' ) {
                if ( json.error.length ) {
                    for ( i = 0; i < json.error.length; i++ ) {
                        json.error[i] = '<li>ID: ' + json.error[i][0] + ' - ' + json.error[i][1] + '</li>';
                    }
                    message.push( '<ul>' + json.error.join('') + '</ul>' );
                }
            } else if ( typeof json.error === 'string' ) {
                message.push( json.error );
            }

            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( message.join('<br/>') );
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', (json.html || ''), '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.photo = factory( root, joms.popup.photo || {});

    define('popups/photo',[
        'popups/photo.open',
        'popups/photo.remove',
        'popups/photo.report',
        'popups/photo.setavatar',
        'popups/photo.setcover',
        'popups/photo.upload',
        'popups/photo.zoom',
        'popups/photo.setalbum'
    ], function() {
        return joms.popup.photo;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.pm || (joms.popup.pm = {});
    joms.popup.pm.send = factory( root );

    define('popups/pm.send',[ 'utils/popup' ], function() {
        return joms.popup.pm.send;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'inbox,ajaxCompose',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;

            elem.find('textarea.joms-textarea').jomsTagging();

            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var body = elem.find('[name=body]').val(),
        att = elem.find('.joms-textarea__attachment'),
        photo, file, attachment = {};

    body = body
        .replace( /\t/g, '\\t' )
        .replace( /\n/g, '\\n' )
        .replace( /&quot;/g,  '"' );

    if ( elem.data('saving') ) {
        return;
    }

    elem.data( 'saving', 1 );

    if ( att.is(':visible') ) {
        photo = att.find('.joms-textarea__attachment--thumbnail img');
        file = photo.siblings('b');
        if ( photo.is(':visible') && photo.attr('src') ) {
            attachment = {
                type: 'image',
                id: photo.data('photo_id')
            };
        } else if ( file.is(':visible') ) {
            attachment = {
                type: 'file',
                id: file.data('id')
            };
        }
    }

    joms.ajax({
        func: 'chat,ajaxPrivateMessageSend',
        data: [ id, body, JSON.stringify(attachment) ],
        callback: function( json ) {
            var step1 = elem.find('[data-ui-object=popup-step-1]'),
                step2 = elem.find('[data-ui-object=popup-step-2]');

            elem.removeData('saving');

            step2.find('[data-ui-object=popup-message]').html( json );
            step1.hide();
            step2.show();
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            (json.html || ''),
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.pm = factory( root, joms.popup.pm || {});

    define('popups/pm',[ 'popups/pm.send' ], function() {
        return joms.popup.pm;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.search || (joms.popup.search = {});
    joms.popup.search.save = factory( root, $ );

    define('popups/search.save',[],function() {
        return joms.popup.search.save;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, data;

function render( _popup, _data ) {
    var json, keys, key, values, value, i;

    if ( elem ) elem.off();
    popup = _popup;
    data = _data || {};
    json = data.json || {};
    keys = ( data.keys || '' ).split(',');
    values = [];

    for ( i = 0; i < keys.length; i++ ) {
        key = keys[i];

        if (( json['fieldType' + key] === 'date' ) || ( json['fieldType' + key] === 'birthdate' ) || ( json['condition' + key] === 'between' )) {
            value = json['value' + key] + ',' + json['value' + key + '_2'];
        } else {
            value = json['value' + key];
        }

        values[i] = [
            'field=' + json[ 'field' + key ] + ',' +
            'condition=' + json[ 'condition' + key ] + ',' +
            'fieldType=' + json[ 'fieldType' + key ] + ',' +
            'value=' + value
        ];
    }

    joms.ajax({
        func: 'memberlist,ajaxShowSaveForm',
        data: [ data.operator, data.avatar_only ? 1 : 0 ].concat( values ),
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var $title = elem.find('[name=title]'),
        $description = elem.find('[name=description]'),
        error = false;

    if ( !$.trim( $title.val() ) ) {
        $title.siblings('.joms-help').show();
        error = true;
    } else {
        $title.siblings('.joms-help').hide();
    }

    if ( !$.trim( $description.val() ) ) {
        $description.siblings('.joms-help').show();
        error = true;
    } else {
        $description.siblings('.joms-help').hide();
    }

    if ( error ) {
        return;
    }

    elem.find('form').submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSave, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( data ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, data );
    });
};

});


(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.search = factory( root, joms.popup.search || {});

    define('popups/search',[ 'popups/search.save' ], function() {
        return joms.popup.search;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.tnc = factory( root );

})( window, function() {

var popup;

function render( _popup ) {
    popup = _popup;

    joms.ajax({
        func: 'register,ajaxShowTnc',
        data: [ 0 ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single" style="max-height:400px;overflow:auto;">', ( json.html || '&nbsp;' ), '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function() {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp );
    });
};

});

define("popups/tnc", function(){});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.changeVanityURL = factory( root, $ );

    define('popups/user.changevanityurl',[ 'utils/popup' ], function() {
        return joms.popup.user.changeVanityURL;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxUpdateURL',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form').submit();
}

function buildHtml( json ) {
    var action = '';

    json || (json = {});

    if ( json.btnUpdate && json.btnCancel ) {
        action = [
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnUpdate, '</button>',
            '</div>'
        ].join('');
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content">', ( json.html || json.message ), '</div>',
        action,
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.addFeatured = factory( root, $ );

    define('popups/user.addfeatured',[ 'utils/popup' ], function() {
        return joms.popup.user.addFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'search,ajaxAddFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.removeFeatured = factory( root, $ );

    define('popups/user.removefeatured',[ 'utils/popup' ], function() {
        return joms.popup.user.removeFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'search,ajaxRemoveFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.st.callbacks || (popup.st.callbacks = {});
            popup.st.callbacks.close = function() {
                window.location.reload();
            };

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.ban = factory( root, $ );

    define('popups/user.ban',[ 'utils/popup' ], function() {
        return joms.popup.user.ban;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxBanUser',
        data: [ id, 0 ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form').submit();
}

function buildHtml( json ) {
    var action = '';

    json || (json = {});

    if ( !json.error ) {
        action = [
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        ].join('');
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content', ( json.error ? ' joms-popup__content--single' : '' ), '">', ( json.html || json.error ), '</div>',
        action,
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.unban = factory( root, $ );

    define('popups/user.unban',[ 'utils/popup' ], function() {
        return joms.popup.user.unban;
    });

})( window, joms.jQuery, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxBanUser',
        data: [ id, 1 ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form').submit();
}

function buildHtml( json ) {
    var action = '';

    json || (json = {});

    if ( !json.error ) {
        action = [
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        ].join('');
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content', ( json.error ? ' joms-popup__content--single' : '' ), '">', ( json.html || json.error ), '</div>',
        action,
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.block = factory( root, $ );

    define('popups/user.block',[ 'utils/popup' ], function() {
        return joms.popup.user.block;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxConfirmBlockUser',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'profile,ajaxBlockUser',
        data: [ id ],
        callback: function( json ) {
            if ( !json.success ) {
                elem.find('.joms-popup__action').hide();
                elem.find('.joms-popup__content').html( json.error );
                return;
            }

            popup.close();
            window.location.reload();
        }
    });
}

function buildHtml( json ) {
    var action;

    json || (json = {});

    if ( json.error ) {
        action = [
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-js--button-cancel">', json.btnClose, '</button>',
            '</div>'
        ].join('');
    } else {
        action = [
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>'
        ].join('');
    }

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content">', ( json.error || json.html || json.message ), '</div>',
        action,
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.unblock = factory( root, $ );

    define('popups/user.unblock',[ 'utils/popup' ], function() {
        return joms.popup.user.unblock;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxConfirmUnBlockUser',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'profile,ajaxUnblockUser',
        data: [ id ],
        callback: function( json ) {
            if ( !json.success ) {
                elem.find('.joms-popup__action').hide();
                elem.find('.joms-popup__content').html( json.error );
                return;
            }

            popup.close();
            window.location.reload();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content">', ( json.html || json.message ), '</div>',
        '<div class="joms-popup__action">',
        '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
        '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.ignore = factory( root, $ );

    define('popups/user.ignore',[ 'utils/popup' ], function() {
        return joms.popup.user.ignore;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxConfirmIgnoreUser',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'profile,ajaxIgnoreUser',
        data: [ id ],
        callback: function( json ) {
            if ( !json.success ) {
                elem.find('.joms-popup__action').hide();
                elem.find('.joms-popup__content').html( json.error );
                return;
            }

            popup.close();
            window.location.reload();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content">', ( json.html || json.message ), '</div>',
        '<div class="joms-popup__action">',
        '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
        '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.report = factory( root );

    define('popups/user.report',[ 'utils/popup' ], function() {
        return joms.popup.user.report;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'system,ajaxReport',
        data: [],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'change', 'select', changeText );
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function changeText( e ) {
    elem.find('textarea').val( e.target.value );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var rTrim = /^\s+|\s+$/g,
        message;

    message = elem.find('textarea').val();
    message = message.replace( rTrim, '' );

    if ( !message ) {
        elem.find('.joms-js--error').show();
        return;
    }

    elem.find('.joms-js--error').hide();

    joms.ajax({
        func: 'system,ajaxSendReport',
        data: [ 'profile,reportProfile', window.location.href, message, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            json.html,
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user || (joms.popup.user = {});
    joms.popup.user.unignore = factory( root, $ );

    define('popups/user.unignore',[ 'utils/popup' ], function() {
        return joms.popup.user.unignore;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxConfirmUnIgnoreUser',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'profile,ajaxUnIgnoreUser',
        data: [ id ],
        callback: function( json ) {
            if ( !json.success ) {
                elem.find('.joms-popup__action').hide();
                elem.find('.joms-popup__content').html( json.error );
                return;
            }

            popup.close();
            window.location.reload();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content">', ( json.html || json.message ), '</div>',
        '<div class="joms-popup__action">',
        '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnNo, '</a> &nbsp;',
        '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.user = factory( root, joms.popup.user || {});

    define('popups/user',[
        'popups/user.changevanityurl',
        'popups/user.addfeatured',
        'popups/user.removefeatured',
        'popups/user.ban',
        'popups/user.unban',
        'popups/user.block',
        'popups/user.unblock',
        'popups/user.ignore',
        'popups/user.report',
        'popups/user.unignore'
    ], function() {
        return joms.popup.user;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});


(function( root, $, factory ) {

    joms.util || (joms.util = {});
    joms.util.videotag = factory( root, $ );

})( window, joms.jQuery, function( window, $, undef ) {

var wrapper, elem, img, friends, callback, tagAdded, noResult;

function create( e, tags, groupid, eventid ) {
    var pos, top, left, width, height;

    destroy();

    wrapper  = $( buildHtml() );
    elem     = wrapper.find('.joms-phototag');
    img      = e && e.currentTarget ? $( e.currentTarget ).closest('.joms-popup--video').find('iframe,video,.joms-js--video').eq(0) : $( e );
    friends  = undef;
    callback = {};
    width    = img.width();
    height   = img.height();
    pos      = img.position();
    top      = pos.top;
    left     = pos.left;
    tagAdded = tags || [];

    elem.css({
        top: 0,
        left: 0
    });

    wrapper.css({
        top: top,
        left: left,
        width: width,
        height: height
    });

    wrapper.insertBefore( img );

    pos = calcClickPosition( e );

    elem.css({ top: pos.top, left: pos.left });
    elem.on( 'keyup', 'input', filter );
    elem.on( 'click', 'a[data-id]', select );
    elem.on( 'click', 'button', destroy );
    elem.on( 'click', function( e ) {
        e.stopPropagation();
    });
    wrapper.on( 'click', moveBoxPosition );

    if ( +groupid ) {
        joms.fn.tagging.fetchGroupMembers( groupid, function( members ) {
            friends = members;
            filter();
        });
    } else if ( +eventid ) {
        joms.fn.tagging.fetchEventMembers( eventid, function( members ) {
            friends = members;
            filter();
        });
    } else {
        filter();
    }

    if ( joms.ios ) {
        try {
            window.scrollTo( window.scrollLeft, elem.find('input').offset().top - 100 );
        } catch (e) {}
    }

    // Apparently Android (Chrome?) trigger "onresize" event when keypad being shown,
    // which make phototag immediately closed. Add resize handler only on desktop browser.
    if ( !joms.mobile ) {
        $( window ).on( 'resize.phototag', destroy );
    }
}

function filter( e ) {
    var input, keyword, filtered, ac;

    if ( !friends ) {
        friends = window.joms_friends || [];
    }

    input = $( e ? e.currentTarget : elem.find('input') );
    keyword = input.val().replace( /^\s+|\s+$/g, '' ).toLowerCase();
    filtered = friends;

    filtered = joms._.filter( friends, function( obj ) {
        if ( !obj ) return false;
        if ( !obj.name ) return false;
        if ( tagAdded && tagAdded.indexOf( obj.id + '' ) >= 0 ) return false;
        if ( keyword && obj.name.toLowerCase().indexOf( keyword ) < 0 ) return false;
        return true;
    });

    filtered = filtered.slice(0, 8);
    filtered = joms._.map( filtered, function( obj ) {
        return '<a href="javascript:" data-id="' + obj.id + '">' + obj.name + '</a>';
    });

    if ( !filtered.length ) {
        filtered = [ '<span><em>' + window.joms_lang.COM_COMMUNITY_NO_RESULT_FOUND + '</em></span>' ];
        noResult = true;
    } else {
        noResult = false;
    }

    ac = elem.find('.joms-phototag__autocomplete');
    ac.html( filtered.join('') );

    ac.append(
        '<div><button class="joms-button--neutral joms-button--small joms-button--full">' +
        window.joms_lang.COM_COMMUNITY_PHOTO_DONE_TAGGING +
        '</button></div>'
    );

    ac.show();
}

function select( e ) {
    var ac = elem.find('.joms-phototag__autocomplete'),
        el = $( e.currentTarget ),
        id = el.data('id') || '',
        pos;

    e.stopPropagation();
    ac.hide();

    if ( callback && callback.tagAdded ) {
        tagAdded || (tagAdded = []);
        tagAdded.push( id + '' );
        pos = calcBoxPosition();

        callback.tagAdded(
            id,
            pos.left,
            pos.top,
            pos.width,
            pos.height
        );

        filter();
    }
}

function destroy() {
    if ( elem ) {
        elem.remove();
        wrapper.remove();
        $( window ).off('resize.phototag');
        elem = undef;
        img = undef;

        if ( callback && callback.destroy ) {
            callback.destroy();
        }

        callback = undef;
    }
}

function on( eventType, fn ) {
    callback[ eventType ] = fn;
}

function off( eventType ) {
    if ( !eventType ) {
        callback = {};
    } else if ( callback[ eventType ] ) {
        callback[ eventType ] = undef;
    }
}

function calcClickPosition() {
    var height = img.height(),
        width  = img.width(),
        left, top;

    // Respect wrapper boundaries.
    top  = Math.max( 0, height - 86 ) / 4.5;
    left = Math.max( 0, width - 86 ) / 2;

    return {
        top: top,
        left: left
    };
}

function calcBoxPosition() {
    var pos, ctWidth, ctHeight, boxWidth, boxHeight, boxLeft, boxTop;

    ctWidth = wrapper.width();
    ctHeight = wrapper.height();

    pos = elem.position();
    boxWidth = elem.width();
    boxHeight = elem.height();
    boxLeft = pos.left + boxWidth / 2;
    boxTop = pos.top + boxHeight / 2;

    // Percentage (relative to wrapper height).
    boxWidth = boxWidth / ctHeight;
    boxHeight = boxHeight / ctHeight;

    // Percentage (relative to wrapper dimension).
    boxLeft = boxLeft / ctWidth;
    boxTop = boxTop / ctHeight;

    return {
        top    : boxTop,
        left   : boxLeft,
        width  : boxWidth,
        height : boxHeight
    };
}

function moveBoxPosition( e ) {
    var pos;

    if ( noResult ) {
        destroy();
        return;
    }

    pos = calcClickPosition( e );

    elem.css({
        top: pos.top,
        left: pos.left
    });
}

function buildHtml() {
    return [
        '<div class=joms-phototag__wrapper>',
        '<div class=joms-phototag>',
        '<div class=joms-phototag__input>',
        '<input type=text placeholder="', window.joms_lang.COM_COMMUNITY_SEARCH,'">',
        '<div class="joms-phototag__autocomplete"></div>',
        '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return {
    create: create,
    destroy: destroy,
    on: on,
    off: off
};

});

define("utils/videotag", function(){});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.open = factory( root, $ );

    define('popups/video.open',[ 'utils/popup', 'utils/videotag' ], function() {
        return joms.popup.video.open;
    });

})( window, joms.jQuery, function( window, $ ) {

var iconCog      = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-cog"></use></svg>',
    iconBubble   = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-bubble"></use></svg>',
    iconThumbsUp = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-thumbs-up"></use></svg>',
    iconTag      = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-tag"></use></svg>',

    popup, elem, tagBtn, tags, tagLabel, tagRemoveLabel, id, lang,
    canEdit, canDelete, videoUrl, userId, groupId, eventId, isRegistered, isOwner, isAdmin, enableProfileVideo, enableReporting, enableSharing, enableFeature;

var enableReaction = isEnableReaction();

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'videos,ajaxShowVideoWindow',
        data: [ id ],
        callback: function( json ) {
            json || (json = {});
            lang = json.lang || {};
            canEdit = json.can_edit || false;
            canDelete = json.can_delete || false;
            videoUrl = json.video_url;

            // Priviliges.
            isRegistered = userId = +json.my_id;
            groupId = +json.groupid;
            eventId = +json.eventid;
            isOwner = isRegistered && ( +json.my_id === +json.owner_id );
            isAdmin = +json.is_admin;

            // Settings.
            enableProfileVideo = +json.enableprofilevideo;
            enableReporting = +json.enablereporting;
            enableSharing = +json.enablesharing;
            enableFeature = json.enablefeature;

            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            // Override popup#close function.
            popup.close = closeOverride;

            initVideo();

            elem = popup.contentContainer;
            tagBtn = elem.find('.joms-popup__btn-tag-video');

            elem.on( 'click', '.joms-popup__btn-tag-video', tagPrepare );
            elem.on( 'click', '.joms-popup__btn-comments', toggleComments );
            elem.on( 'click', '.joms-popup__btn-option', toggleDropdown );
            elem.on( 'click', '.joms-popup__btn-share', share );
            elem.on( 'click', '.joms-popup__btn-report', report );
            elem.on( 'click', '.joms-popup__btn-fetch', _fetch );
            elem.on( 'click', '.joms-popup__btn-profile', setAsProfileVideo );
            elem.on( 'click', '.joms-popup__btn-feature', feature );
            elem.on( 'click', '.joms-popup__btn-edit', _edit );
            elem.on( 'click', '.joms-popup__btn-delete', _delete );
            elem.on( 'mouseleave', '.joms-popup__dropdown--wrapper', hideDropdown );
            elem.on( 'click', '.joms-js--remove-tag', tagRemove );
            elem.on( 'click', '.joms-js--btn-desc-toggle', toggleDescription );
            elem.on( 'click', '.joms-js--btn-desc-edit', editDescription );
            elem.on( 'click', '.joms-js--btn-desc-cancel', cancelDescription );
            elem.on( 'click', '.joms-js--btn-desc-save', saveDescription );

            fetchComments( id );
        }
    });
}

function stripTags( html ) {
    html = html.replace( /<\/?[^>]+>/g, '' );
    return html;
}

function buildHtml( json ) {
    var playerHtml;

    json || (json = {});
    playerHtml = json.error || json.playerHtml || '';
    var reaction = enableReaction ? ' joms-reaction--on' : '';
    return [
        '<div class="joms-popup joms-popup--video'+ reaction +'">',
        '<div class="joms-popup__commentwrapper">',
        '<div class="joms-popup__content">',
        '<div class="joms-popup__video">',
        playerHtml,
        '</div>',
        '<div class="joms-popup__option clearfix">',
        '<div class="joms-popup__optcaption">',
        ' &nbsp;<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-eye"></use></svg> ',
        json.hits,
        '</div>',
        '<div class="joms-popup__optoption">',
        '<button class="joms-popup__btn-comments">', iconBubble, ' <span class="joms-popup__btn-overlay">', lang.comments, '</span></button>',
        getLikeHtml( json.like ),
        ( canEdit ? '<button class="joms-popup__btn-tag-video">' + iconTag + ' <span class="joms-popup__btn-overlay">' + lang.tag_video + '</span></button>' : '' ),
        '<div class="joms-popup__dropdown--wrapper">', updateDropdownHtml( json ), '<button class="joms-popup__btn-option">', iconCog, ' <span class="joms-popup__btn-overlay">', lang.options, '</span></button></div>',
        '</div>',
        '</div>',
        '</div>',
        '<div class="joms-popup__comment"></div>',
        '<button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>',
        '</div>',
        '</div>'
    ].join('');
}

function getLikeHtml( json ) {
    var html, count;

    // Like info.
    html = '';
    if ( json && !enableReaction) {
        html += '<button class="joms-popup__btn-like joms-js--like-videos-' + id + ( json.is_liked ? ' liked' : '' ) + '"';
        html += ' onclick="joms.api.page' + ( json.is_liked ? 'Unlike' : 'Like' ) + '(\'videos\', \'' + id + '\');"';
        html += ' data-lang="' + ( json.lang || 'Like' ) + '"';
        html += ' data-lang-like="' + ( json.lang_like || 'Like' ) + '"';
        html += ' data-lang-liked="' + ( json.lang_liked || 'Liked' ) + '">';
        html += iconThumbsUp + ' ';
        html += '<span>';
        html += ( json.is_liked ? json.lang_liked : json.lang_like );

        count = +json.count;
        if ( count > 0 ) {
            html += ' (' + count + ')';
        }

        html += '</span></button>';
    }

    return html;
}

function tagPrepare( e ) {
    if ( tagBtn.data('tagging') ) {
        tagBtn.removeData('tagging');
        tagBtn.html( iconTag + ' <span class="joms-popup__btn-overlay">' + lang.tag_video + '</span>' );
        tagCancel();
    } else {
        tagBtn.data( 'tagging', 1 );
        tagBtn.html( iconTag + ' ' + lang.done_tagging );
        tagStart( e );
    }
}

function tagStart( e ) {
    var indices = joms._.map( tags, function( item ) {
        return item.userId + '';
    });

    joms.util.videotag.create( e, indices, groupId, eventId );
    joms.util.videotag.on( 'tagAdded', tagAdded );
    joms.util.videotag.on( 'destroy', function() {
        tagBtn.removeData('tagging');
        tagBtn.html( iconTag + ' <span class="joms-popup__btn-overlay">' + lang.tag_video + '</span>' );
    });
}

function tagAdded( userId ) {
    joms.ajax({
        func: 'videos,ajaxAddVideoTag',
        data: [ id, userId ],
        callback: function( json ) {
            var $comments, $tags;

            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( json.success ) {
                tags.push( json.data );

                // Render tag info.
                $comments = elem.find('.joms-popup__comment');
                $tags = $comments.find('.joms-js--tag-info');
                $tags.html( _tagBuildHtml() );
            }
        }
    });
}

function tagCancel() {
    joms.util.videotag.destroy();
}

function tagRemove( e ) {
    var el = $( e.currentTarget ),
        userId = el.data('id');

    joms.ajax({
        func: 'videos,ajaxRemoveVideoTag',
        data: [ id, userId ],
        callback: function( json ) {
            var $comments, $tags, i;

            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( json.success ) {
                for ( i = 0; i < tags.length; i++ ) {
                    if ( +userId === +tags[i].userId ) {
                        tags.splice( i--, 1 );
                    }
                }

                // Render tag info.
                $comments = elem.find('.joms-popup__comment');
                $tags = $comments.find('.joms-js--tag-info');
                $tags.html( _tagBuildHtml() );
            }

        }
    });
}

function _tagBuildHtml() {
    var html, item, str, i;

    if ( !tags || !tags.length ) {
        return '';
    }

    html = [];

    for ( i = 0; i < tags.length; i++ ) {
        item = tags[i];
        str = '<a href="' + item.profileUrl + '">' + item.displayName + '</a>';

        if ( item.canRemove ) {
            str += ' (<a href="javascript:" class="joms-js--remove-tag" data-id="' + item.userId + '">' + tagRemoveLabel + '</a>)';
        }

        html.push( str );
    }

    html = html.join(', ');
    html = tagLabel + '<br>' + html;

    return html;
}

function toggleComments() {
    elem.children('.joms-popup').toggleClass('joms-popup--togglecomment');
}

function closeOverride() {
    var $ct = elem.children('.joms-popup'),
        className = 'joms-popup--togglecomment';

    if ( $ct.hasClass( className ) ) {
        $ct.removeClass( className );
        return;
    }

    $.magnificPopup.proto.close.call( this );
}

function toggleDropdown( e ) {
    var wrapper = $( e.target ).closest('.joms-popup__dropdown--wrapper'),
        dropdown = wrapper.children('.joms-popup__dropdown');

    dropdown.toggleClass('joms-popup__dropdown--open');
}

function hideDropdown( e ) {
    var wrapper = $( e.target ).closest('.joms-popup__dropdown--wrapper'),
        dropdown = wrapper.children('.joms-popup__dropdown');

    dropdown.removeClass('joms-popup__dropdown--open');
}

function updateDropdownHtml( json ) {
    var html = '';

    json || (json = {});

    if ( enableSharing ) {
        html += '<a href="javascript:" class="joms-popup__btn-share">' + lang.share + '</a>';
        html += '<div class="sep"></div>';
    }

    if ( isOwner || isAdmin ) {
        html += '<a href="javascript:" class="joms-popup__btn-fetch">' + lang.fetch + '</a>';
        html += ( isOwner && enableProfileVideo ? '<a href="javascript:" class="joms-popup__btn-profile">' + lang.set_as_profile_video + '</a>' : '' );
        if ( isAdmin && enableFeature ) {
            if ( enableFeature === 'add' ) {
                html += '<a href="javascript:" class="joms-popup__btn-feature" data-featured="0">' + lang.make_feature + '</a>';
            } else if ( enableFeature === 'remove' ) {
                html += '<a href="javascript:" class="joms-popup__btn-feature" data-featured="1">' + lang.remove_featured + '</a>';
            }
        }
        html += '<div class="sep"></div>';
        html += ( canEdit ? '<a href="javascript:" class="joms-popup__btn-edit">' + lang.edit_video + '</a>' : '' );
        html += ( canDelete ? '<a href="javascript:" class="joms-popup__btn-delete">' + lang.delete_video + '</a>' : '' );
    } else {
        html += ( canEdit ? '<a href="javascript:" class="joms-popup__btn-edit">' + lang.edit_video + '</a>' : '' );
        html += ( canDelete ? '<a href="javascript:" class="joms-popup__btn-delete">' + lang.delete_video + '</a>' : '' );
        html += ( enableReporting ? '<a href="javascript:" class="joms-popup__btn-report">' + lang.report + '</a>' : '' );
    }

    html = '<div class="joms-popup__dropdown"><div class="joms-popup__ddcontent">' + html + '</div></div>';

    return html;
}

function share() {
    joms.api.pageShare( videoUrl );
}

function report() {
    joms.api.videoReport( userId, videoUrl );
}

function _fetch() {
    joms.api.videoFetchThumbnail( id );
}

function setAsProfileVideo() {
    joms.ajax({
        func: 'profile,ajaxConfirmLinkProfileVideo',
        data: [ id ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( window.confirm( stripTags( json.html ) ) ) {
                setAsProfileVideoConfirm();
            }
        }
    });
}

function setAsProfileVideoConfirm() {
    joms.ajax({
        func: 'profile,ajaxLinkProfileVideo',
        data: [ id ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            window.alert( stripTags( json.message ) );
            setTimeout(function() {
                window.location.reload();
            }, 500 );
        }
    });
}

function feature( e ) {
    var $btn = $( e.currentTarget ),
        isFeatured = +$btn.data('featured');

    if ( isFeatured ) {
        joms.api.videoRemoveFeatured( id );
    } else {
        joms.api.videoAddFeatured( id );
    }
}

function _edit() {
    joms.api.videoEdit( id );
}

function _delete() {
    joms.ajax({
        func: 'videos,ajaxConfirmRemoveVideo',
        data: [ id ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            if ( window.confirm( stripTags( json.html ) ) ) {
                _deleteConfirm();
            }
        }
    });
}

function _deleteConfirm() {
    joms.ajax({
        func: 'videos,ajaxRemoveVideo',
        data: [ id ],
        callback: function( json ) {
            if ( json.error ) {
                window.alert( stripTags( json.error ) );
                return;
            }

            window.alert( stripTags( json.message ) );
            setTimeout(function() {
                window.location.reload();
            }, 500 );
        }
    });
}

function fetchComments( id, showAllParams ) {
    var comments = elem.find('.joms-popup__comment');

    if ( !showAllParams ) {
        comments.empty();
    }

    joms.ajax({
        func: 'videos,ajaxGetInfo',
        data: [ id, showAllParams ? 1 : 0 ],
        callback: function( json ) {
            var $tags;

            if ( !showAllParams ) {
                if ( json.comments && json.showall ) {
                    json.showall = '<div class="joms-comment__more joms-js--more-comments"><a href="javascript:">' + json.showall + '</a></div>';
                    json.comments = $( json.comments );
                    json.comments.prepend( json.showall );
                }
            }

            if ( showAllParams ) {
                comments.find('.joms-comment').replaceWith( json.comments );
            } else {
                comments.html( json.head || '' );
                comments.append( json.comments );
                comments.append( json.form || '' );

                // Render description.
                comments.find('.joms-js--description').html(
                    renderDescription( json.description || {} )
                );

                // Cache tag info.
                tags = json.tagged || [];
                tagLabel = json.tagLabel || '';
                tagRemoveLabel = json.tagRemoveLabel || '';

                // Render tag info.
                $tags = comments.find('.joms-js--tag-info');
                $tags.html( _tagBuildHtml() );

                comments.find('textarea.joms-textarea');
                joms.fn.tagging.initInputbox();
            }

            initVideoPlayers();
            joms.parseEmoji();
        }
    });
}

function initVideo() {
    var cssVideo = '.joms-js--video',
        video = $('.joms-popup__content').find( cssVideo );

    if ( !video.length ) {
        return;
    }

    joms.loadCSS( joms.ASSETS_URL + 'vendors/mediaelement/mediaelementplayer.min.css' );
    video.on( 'click.joms-video', cssVideo + '-play', function() {
        var $el = $( this ).closest( cssVideo );
        joms.util.video.play( $el, $el.data() );
    });
}

function initVideoPlayers() {
    var initialized = '.joms-js--initialized',
        cssVideos = '.joms-js--video',
        videos = $('.joms-comment__body,.joms-js--inbox').find( cssVideos ).not( initialized ).addClass( initialized.substr(1) );

    if ( !videos.length ) {
        return;
    }

    joms.loadCSS( joms.ASSETS_URL + 'vendors/mediaelement/mediaelementplayer.min.css' );
    videos.on( 'click.joms-video', cssVideos + '-play', function() {
        var $el = $( this ).closest( cssVideos );
        joms.util.video.play( $el, $el.data() );
    });

    if ( joms.ios ) {
        setTimeout(function() {
            videos.find( cssVideos + '-play' ).click();
        }, 2000 );
    }
}

function renderDescription( json ) {
    var showExcerpt;

    if ( typeof json !== 'object' ) {
        json = {};
    }

    if ( json.content ) {
        if ( json.excerpt !== json.rawcontent ) {
            showExcerpt = true;
        }
    }

    return [
        '<div class="joms-js--btn-desc-content">',
            '<span class="joms-js--btn-desc-excerpt"', ( showExcerpt ? '' : ' style="display:none"' ), '>', ( json.excerpt || '' ), '</span>',
            '<span class="joms-js--btn-desc-fulltext"', ( showExcerpt ? ' style="display:none"' : '' ), '>', ( json.content || '' ), '</span>',
            '<div><a href="javascript:" class="joms-js--btn-desc-toggle"', ( showExcerpt ? '' : ' style="display:none"' ), '>', window.joms_lang.COM_COMMUNITY_SHOW_MORE, '</a></div>',
        '</div>',
        '<div class="joms-js--btn-desc-editor joms-popup__hide">',
            '<textarea class="joms-textarea" style="margin:0" placeholder="', ( json.lang_placeholder || '' ), '">', br2nl( json.content || '' ), '</textarea>',
            '<div style="margin-top:5px;text-align:right">',
                '<button class="joms-button--neutral joms-button--small joms-js--btn-desc-cancel">', ( json.lang_cancel || 'Cancel' ), '</button> ',
                '<button class="joms-button--primary joms-button--small joms-js--btn-desc-save">', ( json.lang_save || 'Save' ), '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--btn-desc-edit"', ( canEdit ? '' : ' style="display:none"' ), '><a href="javascript:"',
            ' data-lang-add="', ( json.lang_add || 'Add description' ), '"',
            ' data-lang-edit="', ( json.lang_edit || 'Edit description' ), '">',
                ( json.content ? json.lang_edit : json.lang_add ),
            '</a>',
        '</div>'
    ].join('');
}

function br2nl( text ) {
    text = text || '';
    text = text.replace( /<br\s*\/?>/g, '\n' );
    return text;
}

function toggleDescription() {
    var $excerpt = elem.find('.joms-js--btn-desc-excerpt'),
        $fulltext = elem.find('.joms-js--btn-desc-fulltext'),
        $button = elem.find('.joms-js--btn-desc-toggle');

    if ( $fulltext.is(':visible') ) {
        $fulltext.hide();
        $excerpt.show();
        $button.html( window.joms_lang.COM_COMMUNITY_SHOW_MORE );
    } else {
        $excerpt.hide();
        $fulltext.show();
        $button.html( window.joms_lang.COM_COMMUNITY_SHOW_LESS );
    }
}

function editDescription() {
    elem.find('.joms-js--btn-desc-content').hide();
    elem.find('.joms-js--btn-desc-edit').hide();
    elem.find('.joms-js--btn-desc-editor').show();
}

function cancelDescription() {
    elem.find('.joms-js--btn-desc-editor').hide();
    elem.find('.joms-js--btn-desc-content').show();
    elem.find('.joms-js--btn-desc-edit').show();
}

function saveDescription() {
    var content  = elem.find('.joms-js--btn-desc-content'),
        editor   = elem.find('.joms-js--btn-desc-editor'),
        button   = elem.find('.joms-js--btn-desc-edit'),
        textarea = editor.find('textarea'),
        value    = $.trim( textarea.val() );

    joms.ajax({
        func: 'videos,ajaxSaveDescription',
        data: [ id, value ],
        callback: function( json ) {
            var a = button.find('a'),
                $cexcerpt, $cfulltext, $cbutton;

            if ( json.error ) {
                window.alert( json.error );
                return;
            }

            if ( json.success ) {

                $cexcerpt = content.find('.joms-js--btn-desc-excerpt');
                $cfulltext = content.find('.joms-js--btn-desc-fulltext');
                $cbutton = content.find('.joms-js--btn-desc-toggle');

                // Update content.
                if ( !json.caption || json.caption === json.excerpt ) {
                    $cexcerpt.hide();
                    $cbutton.hide();
                    $cfulltext.html( json.caption ).show();
                } else {
                    $cexcerpt.html( json.excerpt ).show();
                    $cbutton.html( window.joms_lang.COM_COMMUNITY_SHOW_MORE ).show();
                    $cfulltext.html( json.caption ).hide();
                }

                editor.hide();
                content.show();

                a.html( a.data( 'lang-' + ( value ? 'edit' : 'add' ) ) );
                button.show();
            }
        }
    });
}

function isEnableReaction() {
    return !!joms.getData('joms_reaction');
}


// Exports.
return joms._.debounce(function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
}, 200 );

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.add = factory( root, $ );

    define('popups/video.add',[ 'utils/loadlib', 'utils/popup' ], function() {
        return joms.popup.video.add;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, uploader, uploaderButton, contextid, context;

function render( _popup, _contextid, _context ) {
    var data;

    if ( elem ) elem.off();
    popup = _popup;
    context = _context || false;
    contextid = _contextid || false;

    data = [];
    if ( contextid ) {
        data.push( context || '' );
        data.push( contextid || '' );
    }

    joms.ajax({
        func: 'videos,ajaxAddVideo',
        data: data,
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;

            elem.on( 'submit', '.joms-js--form-link', link );
            elem.on( 'click', '.joms-js--select-file', upload );
            elem.on( 'submit', '.joms-js--form-upload', uploadStart );

            // Init uploader upon render.
            uploadInit();
        }
    });
}

function link( e ) {
    e.preventDefault();
    var form = $( e.currentTarget ),
        rTrim = /^\s+|\s+$/g,
        url = form.find('[name=videoLinkUrl]'),
        cat = form.find('[name=category_id]'),
        urlVal = url.val().trim( rTrim, '' ),
        catVal = +cat.val(),
        btnSubmit = form.find('[type=submit]'),
        langLinking = btnSubmit.data('lang-linking') || 'Linking***';

    url.siblings('[data-elem=form-warning]')[ urlVal ? 'hide' : 'show' ]();
    cat.parents('.joms-select--wrapper').siblings('[data-elem=form-warning]')[ catVal ? 'hide' : 'show' ]();

    if ( urlVal && catVal ) {
        form.removeAttr('onsubmit');
        btnSubmit.val(langLinking);
        btnSubmit.prop('disabled', true);
        elem.off( 'submit', '.joms-js--form-link' );
        setTimeout(function() {
           form.submit();
        }, 300 );
    }
}

function upload() {
    uploadInit(function() {
        uploaderButton.click();
    });
}

function uploadInit( callback ) {
    if ( typeof callback !== 'function' ) {
        callback = function() {};
    }

    if ( uploader ) {
        callback();
        return;
    }

    joms.util.loadLib( 'plupload', function () {
        var container, button;

        container = $('<div id="joms-js--videoupload-uploader" aria-hidden="true" style="width:1px; height:1px; overflow:hidden">').appendTo( document.body );
        button    = $('<button id="joms-js--videoupload-uploader-button">').appendTo( container );
        uploader  = new window.plupload.Uploader({
            url: 'index.php?option=com_community&view=videos&task=uploadvideo',
            filters: [{ title: 'Video files', extensions: '3g2,3gp,asf,asx,avi,flv,mov,mp4,mpg,rm,swf,vob,wmv,m4v' }],
            container: 'joms-js--videoupload-uploader',
            browse_button: 'joms-js--videoupload-uploader-button',
            runtimes: 'html5,html4',
            multi_selection: false
        });

        uploader.bind( 'FilesAdded', uploadAdded );
        uploader.bind( 'BeforeUpload', uploadBeforeUpload );
        uploader.bind( 'Error', uploadError );
        uploader.bind( 'UploadProgress', uploadProgress );
        uploader.bind( 'FileUploaded', uploadUploaded );
        uploader.bind( 'uploadComplete', uploadComplete );
        uploader.init();

        uploaderButton = container.find('input[type=file]');
        callback();
    });
}

function uploadAdded( up, files ) {
    if ( !(files && files.length) )
        return;

    var span = elem.find('.joms-js--select-file'),
        file = files[0],
        name = '<span>' + file.name + '</span>',
        size = file.size || 0,
        unit = 'Bytes';

    for ( var units = [ 'KB', 'MB', 'GB' ]; size >= 1000 && units.length; ) {
        unit = units.shift();
        size = Math.ceil( size / 1000 );
    }

    if ( size )
        name += ' <span>(' + size + ' ' + unit + ')</span>';

    span.html( name );
}

function uploadStart( e ) {
    e.preventDefault();
    var form = $( e.currentTarget ),
        rTrim = /^\s+|\s+$/g,
        title = form.find('[name=title]'),
        cat = form.find('[name=category_id]'),
        titleVal = title.val().trim( rTrim, '' ),
        catVal = +cat.val(),
        bar;

    title.siblings('[data-elem=form-warning]')[ titleVal ? 'hide' : 'show' ]();
    cat.siblings('[data-elem=form-warning]')[ catVal ? 'hide' : 'show' ]();

    if ( !titleVal || !catVal ) {
        return false;
    }

    bar = form.find('.joms-progressbar__progress');
    bar.css({ width: 0 });

    uploader.refresh();
    uploader.start();
}

function uploadBeforeUpload() {
    var raw = elem.find('.joms-js--form-upload').serializeArray(),
        params = {},
        i;

    for ( i = 0; i < raw.length; i++ ) {
        params[ raw[i].name ] = raw[i].value;
    }

    // Attach parameters to uploader.
    uploader.settings.multipart_params = params;
}

function uploadError( up, error ) {
    var message = 'Undefined error.';
    if ( error && error.code && error.message ) {
        message = '(' + error.code + ') ' + error.message;
    }

    elem.find('.joms-js--select-file').html('&nbsp;');
    uploader.splice();
    uploader.refresh();
    window.alert( message );
}

function uploadProgress( up, file ) {
    var percent, form, bar;

    percent = Math.min( 100, Math.floor( file.loaded / file.size * 100 ) );
    form = elem.find('.joms-js--form-upload');
    bar = form.find( '.joms-progressbar__progress' );
    bar.stop().animate({ width: percent + '%' });
}

function uploadUploaded( up, file, resp ) {
    var json = {};

    try {
        json = JSON.parse( resp.response );
    } catch (e) {}

    if ( json.status !== 'success' ){
        window.alert( json.message || 'Undefined error.' );
        return;
    }

    setTimeout(function() {
        window.alert( json.processing_str );
        popup.close();
    }, 1000 );
}

function uploadComplete() {
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--videoupload">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        ( json.html ? json.html : '<div class="joms-popup__content joms-popup__content--single">' + json.error + '</div>' ),
        '</div>'
    ].join('');
}

// Exports.
return function( contextid, context ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, contextid, context );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.edit = factory( root );

    define('popups/video.edit',[ 'utils/popup' ], function() {
        return joms.popup.video.edit;
    });

})( window, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'videos,ajaxEditVideo',
        data: [ id, window.location.href ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    elem.find('form').submit();
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--600">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSave, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.fetchThumbnail = factory( root, $ );

    define('popups/video.fetchthumbnail',[ 'utils/popup' ], function() {
        return joms.popup.video.fetchThumbnail;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'videos,ajaxFetchThumbnail',
        data: [ id, 'myvideos' ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">',
        ( json.message || json.error || '' ),
        ( json.thumbnail ? '<div style="padding-top:10px;"><img src="' + json.thumbnail + '" style="max-width:100%;"></div>' : '' ),
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.linkToProfile = factory( root, $ );

    define('popups/video.linktoprofile',[ 'utils/popup' ], function() {
        return joms.popup.video.linkToProfile;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'profile,ajaxConfirmLinkProfileVideo',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'profile,ajaxLinkProfileVideo',
        data: [ id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );

            if ( json.success ) {
                setTimeout(function() {
                    window.location.reload();
                }, 1000 );
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.remove = factory( root );

    define('popups/video.remove',[ 'utils/popup' ], function() {
        return joms.popup.video.remove;
    });

})( window, function( window ) {

var popup, elem, id;

function render( _popup, _id, redirect ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'videos,ajaxConfirmRemoveVideo',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', { redirect: redirect ? 1 : 0 }, save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save( e ) {
    joms.ajax({
        func: 'videos,ajaxRemoveVideo',
        data: [ id, e.data.redirect ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );

            if ( json.success ) {
                setTimeout(function() {
                    if ( json.redirect ) {
                        window.location = json.redirect;
                    } else {
                        window.location.reload();
                    }
                }, 1000 );
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, redirect ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, redirect );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.report = factory( root );

    define('popups/video.report',[ 'utils/popup' ], function() {
        return joms.popup.video.report;
    });

})( window, function() {

var popup, elem, id, url;

function render( _popup, _id, _url ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    url = _url;

    joms.ajax({
        func: 'system,ajaxReport',
        data: [],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'change', 'select', changeText );
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function changeText( e ) {
    elem.find('textarea').val( e.target.value );
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    var rTrim = /^\s+|\s+$/g,
        message;

    message = elem.find('textarea').val();
    message = message.replace( rTrim, '' );

    if ( !message ) {
        elem.find('.joms-js--error').show();
        return;
    }

    elem.find('.joms-js--error').hide();

    joms.ajax({
        func: 'system,ajaxSendReport',
        data: [ 'videos,reportVideo', url || window.location.href, message, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );
        }
    });
}


function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock joms-popup--500">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1', ( json.error ? ' joms-popup__hide' : '' ), '">',
            json.html,
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnCancel, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnSend, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-js--step2', ( json.error ? '' : ' joms-popup__hide' ), '">',
            '<div class="joms-popup__content joms-popup__content--single">', ( json.error || '' ), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, url ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, url );
    });
};

});
(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.addFeatured = factory( root, $ );

    define('popups/video.addfeatured',[ 'utils/popup' ], function() {
        return joms.popup.video.addFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'videos,ajaxAddFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.removeFeatured = factory( root, $ );

    define('popups/video.removefeatured',[ 'utils/popup' ], function() {
        return joms.popup.video.removeFeatured;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'videos,ajaxRemoveFeatured',
        data: [ id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            if ( json.success ) {
                popup.st.callbacks || (popup.st.callbacks = {});
                popup.st.callbacks.close = function() {
                    window.location.reload();
                };
            }

            popup.updateItemHTML();
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-popup__content joms-popup__content--single">', ( json.html || json.error || '' ), '</div>',
        '<div class="joms-popup__action">',
        '<button class="joms-button--neutral joms-button--small joms-js--button-close">', window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON, '</button>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video || (joms.popup.video = {});
    joms.popup.video.removeLinkFromProfile = factory( root, $ );

    define('popups/video.removelinkfromprofile',[ 'utils/popup' ], function() {
        return joms.popup.video.removeLinkFromProfile;
    });

})( window, joms.jQuery, function( window ) {

var popup, elem, id, userid;

function render( _popup, _id, _userid ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;
    userid = _userid;

    joms.ajax({
        func: 'profile,ajaxRemoveConfirmLinkProfileVideo',
        data: [ userid, id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '.joms-js--button-cancel', cancel );
            elem.on( 'click', '.joms-js--button-save', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'profile,ajaxRemoveLinkProfileVideo',
        data: [ userid, id ],
        callback: function( json ) {
            elem.find('.joms-js--step1').hide();
            elem.find('.joms-js--step2').show().children().html( json.error || json.message );

            if ( json.success ) {
                setTimeout(function() {
                    window.location.reload();
                }, 1000 );
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div class="joms-js--step1">',
            '<div class="joms-popup__content">', json.html, '</div>',
            '<div class="joms-popup__action">',
            '<button class="joms-button--neutral joms-button--small joms-left joms-js--button-cancel">', json.btnNo, '</button> &nbsp;',
            '<button class="joms-button--primary joms-button--small joms-js--button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '<div class="joms-popup__hide joms-js--step2">',
            '<div class="joms-popup__content joms-popup__content--single"></div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id, user ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id, user );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.video = factory( root, joms.popup.video || {});

    define('popups/video',[
        'popups/video.open',
        'popups/video.add',
        'popups/video.edit',
        'popups/video.fetchthumbnail',
        'popups/video.linktoprofile',
        'popups/video.remove',
        'popups/video.report',
        'popups/video.addfeatured',
        'popups/video.removefeatured',
        'popups/video.removelinkfromprofile'
    ], function() {
        return joms.popup.video;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.poll || (joms.popup.poll = {});
    joms.popup.poll.removeoption = factory( root );

    define('popups/poll.removeoption',[ 'utils/popup' ], function() {
        return joms.popup.poll.removeoption;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'polls,ajaxConfirmDeletePollOption',
        data: [ '', id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'polls,ajaxDeletePollOption',
        data: [ '', id ],
        callback: function( json ) {
            var item;

            elem.off();
            popup.close();

            if ( json.success ) {
                item = joms.jQuery('.joms-poll-item-'+id);
                item.fadeOut( 500, function() {
                    item.remove();
                });
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div>',
            '<div class="joms-popup__content">', ( json.error || json.message ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.poll || (joms.popup.poll = {});
    joms.popup.poll.delete = factory( root );

    define('popups/poll.delete',[ 'utils/popup' ], function() {
        return joms.popup.poll.delete;
    });

})( window, function() {

var popup, elem, id;

function render( _popup, _id ) {
    if ( elem ) elem.off();
    popup = _popup;
    id = _id;

    joms.ajax({
        func: 'polls,ajaxWarnPollDeletion',
        data: [ '', id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();

            elem = popup.contentContainer;
            elem.on( 'click', '[data-ui-object=popup-button-cancel]', cancel );
            elem.on( 'click', '[data-ui-object=popup-button-save]', save );
        }
    });
}

function cancel() {
    elem.off();
    popup.close();
}

function save() {
    joms.ajax({
        func: 'polls,ajaxDeletePoll',
        data: [ '', id ],
        callback: function( json ) {
            var item;

            elem.off();
            popup.close();
            
            if ( json.success ) {
                item = joms.jQuery('.joms-poll__item-'+id);
                item.fadeOut( 500, function() {
                    item.remove();
                });
            }
        }
    });
}

function buildHtml( json ) {
    json || (json = {});

    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div>',
            '<div class="joms-popup__content">', ( json.error || json.message ), '</div>',
            '<div class="joms-popup__action">',
            '<a href="javascript:" class="joms-button--neutral joms-button--small joms-left" data-ui-object="popup-button-cancel">', json.btnCancel, '</a> &nbsp;',
            '<button class="joms-button--primary joms-button--small" data-ui-object="popup-button-save">', json.btnYes, '</button>',
            '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, id );
    });
};

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.poll || (joms.popup.poll = {});
    joms.popup.poll.voted = factory( root, $ );

    define('popups/poll.voted',[ 'utils/popup' ], function() {
        return joms.popup.poll.voted;
    });

})( window, joms.jQuery, function( window, $ ) {

var popup, elem, tabAll, tabSelected, btnSelect, btnLoad, id, keyword, start, limit, xhr;

function render( _popup, poll_id, option_id ) {
    if ( elem ) elem.off();
    popup = _popup;

    joms.ajax({
        func: 'polls,ajaxShowVotedUsers',
        data: [ poll_id, option_id ],
        callback: function( json ) {
            popup.items[0] = {
                type: 'inline',
                src: buildHtml( json )
            };

            popup.updateItemHTML();
        }
    });
}


function buildHtml( json ) {
    return [
        '<div class="joms-popup joms-popup--whiteblock">',
        '<div class="joms-popup__title"><button class="mfp-close" type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>', json.title, '</div>',
        '<div data-ui-object="popup-step-1"', ( json.error ? ' class="joms-popup__hide"' : '' ), '>',
            '<div class="joms-popup__content">', json.html, '</div>',
        '</div>',
        '<div data-ui-object="popup-step-2"', ( json.error ? '' : ' class="joms-popup__hide"' ), '>',
            '<div class="joms-popup__content joms-popup__content--single" data-ui-object="popup-message">', (json.error || ''), '</div>',
        '</div>',
        '</div>'
    ].join('');
}

// Exports.
return function( poll_id, option_id ) {
    joms.util.popup.prepare(function( mfp ) {
        render( mfp, poll_id, option_id );
    });
};

});

(function( root, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.poll = factory( root, joms.popup.poll || {});

    define('popups/poll',[ 'popups/poll.removeoption', 'popups/poll.delete', 'popups/poll.voted' ], function() {
        return joms.popup.poll;
    });

})( window, function( window, sub ) {

// Exports.
return joms._.extend({}, sub );

});

(function( root, $, factory ) {

    joms.popup || (joms.popup = {});
    joms.popup.reaction = factory( root, joms.popup.reaction || {}, $);

})( window, joms.jQuery, function( window, sub, $ ) {
    var popup;
    function render( _popup, element, uid, reactId ) {
        popup = _popup;
        
        $(popup.modal).find(".tingle-modal__close").remove();
        reactId = reactId ? reactId : 0;
        joms.ajax({
            func: 'system,ajaxShowReactedUsers',
            data: [element, uid, reactId],
            context:this,
            callback: function( json ) {


                setTimeout( function() {
                    popup.setContent( buildHtml( json ) );
                    var $content = $(popup.getContent());
                   
                    $content.find(".joms-popup__title").data('popup',popup);
                    $content.find(".mfp-close").on('click',$content,function(){popup.close();})
                    
                    var $react = $content.find('li.joms-reacted__item');
                    $react.on('click', getUsersByReaction);
                }, 100);

              
            }
        })
    }

    function getUsersByReaction(event) {
        var $elm = $(event.currentTarget);
        var element = $elm.attr('data-element');
        var reactId = $elm.attr('data-reactid');
        var uid = $elm.attr('data-uid');
        var $modalContent = $(popup.getContent()); 
        var $loading = $modalContent.find('.joms-js--loading');
        var $content = $modalContent.find('.joms-reacted__content');
        var $items = $modalContent.find('li.joms-reacted__item');

        if (!$elm.hasClass('active')) {
            $items.removeClass('active');
            $elm.addClass('active');
            $content.hide();
            $loading.show();

            joms.ajax({
                func: 'system,ajaxGetUsersByReaction',
                data: [element, uid, reactId],
                callback: function( json ) {
                    $content.html(json.html);
                    $content.show();
                    $loading.hide();
                }
            })
        }
    }

    function buildHtml( json ) { 
        return [
            '<div class="joms-popup--whiteblock">',
                '<div class="joms-popup__title">',
                    '<button class="mfp-close"  type="button" title="',window.joms_lang.COM_COMMUNITY_CLOSE_BUTTON_TITLE,'">×</button>',
                    json.title,
                '</div>',
                '<div class="joms-popup__content joms-popup__reacted">', json.html, '</div>',
            '</div>'
        ].join('');
    }

    // Exports.
    return function( element, uid, reactId ) {
        joms.util.dialog.prepare(function( mfp ) {
            render( mfp, element, uid, reactId );
        });
    }
});

define("popups/reaction", function(){});

(function( root, $, factory ) {
	joms.dialog || (joms.dialog = {});
    joms.dialog.reacted = factory( root, $);

    define('dialog/reacted',[ 'dialog/reacted' ], function() {
        return joms.dialog.reacted;
    });

})( window, joms.jQuery, function( window, $ ) {
	var modal;

	function render( _modal, element, uid, reactId ) {
		modal = _modal;
        reactId = reactId ? reactId : 0;
        joms.ajax({
            func: 'system,ajaxShowReactedUsers',
            data: [element, uid, reactId],
            callback: function( json ) {
                setTimeout( function() {
                modal.setContent( json.html );
                var $content = $(modal.getContent());
                var $react = $content.find('li.joms-reacted__item');
                $react.on('click', getUsersByReaction);
                }, 5000);

            }
        })
    }

    function getUsersByReaction(e) {
        var $elm = $(e.currentTarget);
        var element = $elm.attr('data-element');
        var reactId = $elm.attr('data-reactid');
        var uid = $elm.attr('data-uid');
        var $modalContent = $(modal.getContent()); 
        var $loading = $modalContent.find('.joms-js--loading');
        var $content = $modalContent.find('.joms-reacted__content');
        var $items = $modalContent.find('li.joms-reacted__item');

        if (!$elm.hasClass('active')) {
            $items.removeClass('active');
            $elm.addClass('active');
            $content.hide();
            $loading.show();

            joms.ajax({
                func: 'system,ajaxGetUsersByReaction',
                data: [element, uid, reactId],
                callback: function( json ) {
                    $content.html(json.html);
                    $content.show();
                    $loading.hide();
                }
            })
        }
    }

	return function( element, uid, reactId ) {
		joms.util.dialog.prepare( function( modal ) {
			render( modal, element, uid, reactId );
		})
	}
});
(function( root, $, factory ) {

    joms.view || (joms.view = {});
    joms.view.cover = factory( root, $ );

    define('views/cover',[],function() {
        return joms.view.cover;
    });

})( window, joms.jQuery, function( window, $ ) {

var type, id, cover, img, hammertime, repositioning;

function reposition( _type, _id ) {
    var top, maxHeight;

    type  = _type;
    id    = _id;
    cover = $('.joms-focus__cover');
    img   = cover.children('.joms-js--cover-image').children('img');

    if ( !img ) return;

    cover.css('cursor', 'move');
    cover.children('.joms-focus__header').hide();
    cover.children('.joms-focus__actions--reposition')
        .on( 'click', 'input', repositionAction )
        .show();

    img.data( 'top', img.position().top );

    // set reposition flag
    repositioning = true;

    hammertime = new joms.Hammer( img[0] );
    hammertime.on( 'dragstart dragup dragdown dragend', function( e ) {
        var newTop;
        if ( e.type === 'dragstart' ) {
            top = img.position().top;
            maxHeight = cover.height() - img.height();
        } else if ( e.type !== 'dragend' ) {
            newTop = Math.min( 0, top + e.gesture.deltaY );
            newTop = Math.max( maxHeight, newTop );
            img.css({ top: newTop });
        }
    });
}

function repositionAction( e ) {
    var elem;
    elem = $( e.target );
    cover.children('.joms-focus__actions--reposition').off( 'click', 'input' );
    elem.data('ui-object') === 'button-save' ? repositionSave() : repositionCancel();
}

function repositionSave() {
    var top;

    top = pixelToPercent( img.position().top, cover.height() );
    repositionReset();

    joms.ajax({
        func: 'photos,ajaxSetPhotoPhosition',
        data: [ type, id, top ]
    });
}

function repositionCancel() {
    img.css({ top: img.data('top') });
    repositionReset();
}

function repositionReset() {
    cover.css('cursor', '');
    cover.children('.joms-focus__actions--reposition').hide();
    cover.children('.joms-focus__header').show();
    cover = null;
    img = null;
    hammertime = null;
    repositioning = null;
}

function pixelToPercent( imgTop, coverHeight ) {
    var percent;
    percent = imgTop * 100 / coverHeight;
    percent = Math.round( percent * 10000 ) / 10000;
    return percent + '%';
}

function click( albumId, photoId ) {
    if ( !repositioning ) {
        joms.api.photoOpen( albumId, photoId );
    }
}

// Exports.
return {
    reposition: reposition,
    click: click
};

});

(function( root, $, factory ) {

    joms.view || (joms.view = {});
    joms.view.page = factory( root, $ );

    define('views/page',[ 'utils/hovercard', 'popups/page' ], function() {
        return joms.view.page;
    });

})( window, joms.jQuery, function( window, $ ) {

function initialize() {
    // joms.util.hovercard.initialize();
}

function like( type, id ) {
    if (type === 'profile') {
        $('a.joms-js--like-profile-' + id).attr('onclick', 'javascript:;')
    }

    joms.ajax({
        func: 'system,ajaxLike',
        data: [ type, id ],
        callback: function( json ) {
            if ( json.success ) {
                update( 'like', type, id, json.likeCount );
                location.reload();
            }
        }
    });
}

function unlike( type, id ) {
    if (type === 'profile') {
        $('a.joms-js--like-profile-' + id).attr('onclick', 'javascript:;')
    }
    
    joms.ajax({
        func: 'system,ajaxUnlike',
        data: [ type, id ],
        callback: function( json ) {
            if ( json.success ) {
                update( 'unlike', type, id, json.likeCount );
                location.reload();
            }
        }
    });
}

function share( url ) {
    joms.popup.page.share( url );
}

function update( action, type, id, count ) {
    var elem;

    elem = $( '.joms-js--like-' + type + '-' + id );
    elem.each(function() {
        var tagName = this.tagName.toLowerCase(),
            elem = $( this );

        if ( tagName === 'a' ) {
            if ( elem.hasClass('joms-popup__btn-like') ) {
                updatePopupButton( elem, action, type, id, count );
            } else {
                updateFocusButton( elem, action, type, id, count );
            }
        } else if ( tagName === 'button' ) {
            if ( elem.hasClass('joms-popup__btn-like') ) {
                updatePopupButton( elem, action, type, id, count );
            } else {
                updateButton( elem, action, type, id, count );
            }
        }
    });
}

function updatePopupButton( elem, action, type, id, count ) {
    var icon = '<svg viewBox="0 0 16 16" class="joms-icon"><use xlink:href="#joms-icon-thumbs-up"></use></svg>',
        lang;

    if ( action === 'like' ) {
        elem.attr( 'onclick', 'joms.view.page.unlike("' + type + '", "' + id + '");' );
        elem.addClass('liked');
        lang = elem.data('lang-liked');
    } else if ( action === 'unlike' ) {
        elem.attr( 'onclick', 'joms.view.page.like("' + type + '", "' + id + '");' );
        elem.removeClass('liked');
        lang = elem.data('lang-like');
    }

    lang = lang || elem.data('lang');
    count = +count;
    if ( count > 0 ) {
        lang += ' (' + count + ')';
    }

    elem.html( icon + ' <span>' + lang + '</span>' );
}

function updateFocusButton( elem, action, type, id, count ) {
    var lang;

    elem.find('span').html( count );

    if ( action === 'like' ) {
        elem.attr( 'onclick', 'joms.view.page.unlike("' + type + '", "' + id + '");' );
        elem.addClass('liked');
        if ( lang = elem.data('lang-liked') ) {
            elem.find('.joms-js--lang').text( lang );
        }
    } else if ( action === 'unlike' ) {
        elem.attr( 'onclick', 'joms.view.page.like("' + type + '", "' + id + '");' );
        elem.removeClass('liked');
        if ( lang = elem.data('lang-like') ) {
            elem.find('.joms-js--lang').text( lang );
        }
    }
}

function updateButton( elem, action, type, id, count ) {
    var lang;

    if ( action === 'like' ) {
        elem.attr( 'onclick', 'joms.view.page.unlike("' + type + '", "' + id + '");' );
        elem.removeClass('joms-button--neutral');
        elem.addClass('joms-button--primary');
        lang = elem.data('lang-liked');
    } else if ( action === 'unlike' ) {
        elem.attr( 'onclick', 'joms.view.page.like("' + type + '", "' + id + '");' );
        elem.addClass('joms-button--neutral');
        elem.removeClass('joms-button--primary');
        lang = elem.data('lang-like');
    }

    lang = lang || elem.data('lang') || '';
    count = +count;
    if ( count > 0 ) {
        lang += ' (' + count + ')';
    }

    elem.html( lang );
}

function react( uid, reactId, type ) {
    var current = getReaction( reactId),
        text = current.text,
        name = current.name,
        reactClass = 'reaction-btn--' + name,
        $btn = $('.joms-button--reaction[data-uid='+uid+'][data-type=page]'),
        element = $btn.attr('data-element'),
        streamBtn;
    
    // sync status between photo popup and stream item
    if (element === 'photo') {
        $streamBtn = $('.joms-button--reaction[data-element=photo'+ uid +']');
        if ($streamBtn.length) {
            $btn = $btn.add( $streamBtn );
        }
    }

    var classes = [
        'reaction-btn--like',
        'reaction-btn--love',
        'reaction-btn--haha',
        'reaction-btn--wow',
        'reaction-btn--sad',
        'reaction-btn--angry'
    ];
    
    $btn.removeClass(classes.join(' '));

    if (type === 'onBar') {
        $btn.addClass('reaction-btn--animate');
        setTimeout(function() {
            $btn.removeClass('reaction-btn--animate');
        }, 200);
    }

    $btn.addClass( reactClass );
    $btn.text( text );

    $btn.attr('data-reactid', reactId);
    $btn.attr('data-action', 'unreact');
    $btn.attr('onclick', 'javascript:;');

    joms.ajax({
        func: 'system,ajaxLike',
        data: [ element, uid, reactId ],
        callback: function( json ) {
            var $status = $btn.parents('.joms-stream__actions').siblings('.joms-stream__status');
            
            $status.show();
            $status.html(json.html);
            
            var onclick = 'joms.view.page.unreact('+uid+', '+reactId+')';
            $btn.attr('onclick', onclick);
        }
    });
}

function unreact( uid, reactId ) {
    var $btn = $('.joms-stream__actions .joms-button--reaction[data-uid='+uid+'][data-type=page]'),
        element = $btn.attr('data-element'),
        text = $btn.attr('data-lang-like'),
        streamBtn;
    
    // sync status between photo popup and stream item
    if (element === 'photo') {
        $streamBtn = $('.joms-button--reaction[data-element=photo'+ uid +']');
        if ($streamBtn.length) {
            $btn = $btn.add( $streamBtn );
        }
    }

    var classes = [
        'reaction-btn--like',
        'reaction-btn--love',
        'reaction-btn--haha',
        'reaction-btn--wow',
        'reaction-btn--sad',
        'reaction-btn--angry'
    ];
    
    $btn.removeClass(classes.join(' '));
    $btn.text( text );
    $btn.attr('data-reactid', 1);
    $btn.attr('data-action', 'react');
    $btn.attr('onclick', 'javascript:;');

    joms.ajax({
        func: 'system,ajaxUnlike',
        data: [ element, uid, reactId ],
        callback: function( json ) {
            var $status = $btn.parents('.joms-stream__actions').siblings('.joms-stream__status');

            if (!json.html) {
                $status.hide();
            }

            $status.html(json.html);

            var onclick = 'joms.view.page.react('+uid+', 1)';
            $btn.attr('onclick', onclick);
        }
    });
}

function getReaction( reactId ) {
    var data = joms.getData('joms_reaction');
    var react = data.filter(function(item) {
        return item.id == reactId;
    }).pop();

    return react;
}
// Exports.
return {
    initialize: initialize,
    like: like,
    unlike: unlike,
    share: share,

    react: react,
    unreact: unreact
};

});

(function( root, $, factory ) {
	joms.view || (joms.view = {});
	joms.view.poll = factory( root, $ );
})( window, joms.jQuery, function( window, $ ) {

var html;

html = $('#joms-template-poll-option__input').html();

function addOption(elm) {
	$(html).insertBefore(elm);
	$('.poll-input').last().focus();
}

function removeOption(elm) {
	var $option = $(elm).parents('.joms-poll-option'),
		$hiddenInput = $option.find('[name="pollItemId[]"]');
	if ($hiddenInput.length) {
		var itemid = $hiddenInput.val();
		joms.popup.poll.removeoption( itemid );
	} else {
		$option.remove();
	}
}

function deletePoll ( id ) {
	joms.popup.poll.delete( id );
}

function vote( poll_id, option_id ) {
	var $onStream = $('.joms-poll__container-'+poll_id),
		$onModule = $( '.joms-poll__module-container-'+poll_id ),
		$container = $onStream.add( $onModule ),
		$loader = $container.find('.joms-poll__loader'),
		type = [];
	
	if ($onStream.length) {
		type.push( 'stream' )
	}

	if ($onModule.length) {
		type.push( 'module' )
	}

	ajaxPollVote(poll_id, option_id, type.join('.'));
	if ($container.find('.input--radio').length) {
		clearOtherVote( $container, option_id);
	}
}

function clearOtherVote( $container, option_id ) {
	var $inputs = $container.find('.joms-poll_input').not('.joms-poll_input-'+option_id);

	$inputs.each(function(index, el) {
		$(el).is(':checked') && $(el).prop('checked', false);
	});
}

function ajaxPollVote( poll_id, option_id, type ) {
	var $onStream = $('.joms-poll__container-'+poll_id),
		$onModule = $( '.joms-poll__module-container-'+poll_id ),
		$container = $onStream.add( $onModule ),
		$loader = $container.find('.joms-poll__loader'),
		$list = $('.joms-poll__option-list-' + poll_id),
		collapse = $list.attr('data-collapse');

	$loader.fadeIn(300);
	joms.ajax({
		func: 'polls,ajaxPollVote',
		data: [ poll_id, option_id, collapse, type ],
		callback: function( json ) {
			$loader.fadeOut(300);
			if (json.success) {
				json.html.stream && $onStream.html( json.html.stream );
				json.html.module && $onModule.html( json.html.module );
			} else {
				alert('ajax vote error! Please contact your admin.');
			}
		}
	});
}

function showVotedUsers( poll_id, option_id ) {
	joms.popup.poll.voted( poll_id, option_id );
}

function moreOptions( poll_id ) {
	var $list = $('.joms-poll__option-list-' + poll_id),
		$moreBtn = $('.joms-poll__more-' + poll_id);
	
	$list.attr('data-collapse', 1);
	$list.find('li').show();
	$moreBtn.hide();
}

return {
	addOption: addOption,
	removeOption: removeOption,
	delete: deletePoll,
	vote: vote,
	showVotedUsers: showVotedUsers,
	moreOptions: moreOptions
}

});
define("views/poll", function(){});

(function( root, factory ) {

    joms.api = factory( root );

    define('api',[
        'functions/announcement',
        'functions/facebook',
        'functions/invitation',
        'utils/field',
        'popups/info',
        'popups/login',
        'popups/album',
        'popups/announcement',
        'popups/app',
        'popups/avatar',
        'popups/comment',
        'popups/cover',
        'popups/discussion',
        'popups/event',
        'popups/fbc',
        'popups/file',
        'popups/friend',
        'popups/follower',
        'popups/page',
        'popups/group',
        'popups/inbox',
        'popups/location',
        'popups/notification',
        'popups/photo',
        'popups/pm',
        'popups/search',
        'popups/tnc',
        'popups/user',
        'popups/video',
        'popups/poll',
        'popups/reaction',
        'dialog/reacted',
        'views/cover',
        'views/page',
        'views/stream',
        'views/poll'
    ], function() {
        return joms.api;
    });

})( window, function() {

// Exports.
return {

    /** Login form. */
    login: function( json ) {
        joms.popup.login( json );
    },

    /** User. */
    userChangeVanityURL: function( id ) {
        joms.popup.user.changeVanityURL( id );
    },
    userAddFeatured: function( id ) {
        joms.popup.user.addFeatured( id );
    },
    userRemoveFeatured: function( id ) {
        joms.popup.user.removeFeatured( id );
    },
    userBan: function( id ) {
        joms.popup.user.ban( id );
    },
    userUnban: function( id ) {
        joms.popup.user.unban( id );
    },
    userBlock: function( id ) {
        joms.popup.user.block( id );
    },
    userUnblock: function( id ) {
        joms.popup.user.unblock( id );
    },
    userIgnore: function( id ) {
        joms.popup.user.ignore( id );
    },
    userUnignore: function( id ) {
        joms.popup.user.unignore( id );
    },
    userReport: function( id ) {
        joms.popup.user.report( id );
    },

    /** Avatar (profile picture). */
    avatarChange: function( type, id, e ) {
        joms.popup.avatar.change( type, id );
        if ( e ) {
            e.stopPropagation();
            e.preventDefault();
        }
    },
    avatarRemove: function( type, id ) {
        joms.popup.avatar.remove( type, id );
    },
    avatarRotate: function( type, id, direction, callback ) {
        joms.popup.avatar.rotate( type, id, direction, callback );
    },

    /** Profile cover. */
    coverChange: function( type, id ) {
        joms.popup.cover.change( type, id );
    },
    coverRemove: function( type, id ) {
        joms.popup.cover.remove( type, id );
    },
    coverReposition: function( type, id ) {
        joms.view.cover.reposition( type, id );
    },
    coverClick: function( albumId, photoId ) {
        joms.view.cover.click( albumId, photoId );
    },

    /** Events. */
    eventInvite: function( id, type ) {
        joms.popup.event.invite( id, type );
    },
    eventJoin: function( id ) {
        joms.popup.event.join( id );
    },
    eventLeave: function( id ) {
        joms.popup.event.leave( id );
    },
    eventResponse: function() {
        joms.popup.event.response.apply( this, arguments );
    },
    eventAddFeatured: function( id ) {
        joms.popup.event.addFeatured( id );
    },
    eventRemoveFeatured: function( id ) {
        joms.popup.event.removeFeatured( id );
    },
    eventReport: function( id ) {
        joms.popup.event.report( id );
    },
    eventDelete: function( id ) {
        joms.popup.event[ 'delete' ]( id );
    },
    eventRejectGuest: function( id, userId ) {
        joms.popup.event.rejectGuest( id, userId );
    },
    eventBanMember: function( id, userId ) {
        joms.popup.event.banMember( id, userId );
    },
    eventUnbanMember: function( id, userId ) {
        joms.popup.event.unbanMember( id, userId );
    },
    eventUnpublish: function( id ) {
        joms.popup.event.unpublish( id );
    },

    /** Friends. */
    friendAdd: function( id ) {
        joms.popup.friend.add( id );
    },
    friendAddCancel: function( id ) {
        joms.popup.friend.addCancel( id );
    },
    friendRemove: function( id ) {
        joms.popup.friend.remove( id );
    },
    friendResponse: function( id ) {
        joms.popup.friend.response( id );
    },
    friendApprove: function( id ) {
        joms.popup.friend.approve( id );
    },
    friendReject: function( id ) {
        joms.popup.friend.reject( id );
    },

    /** Followers. */
    followAdd: function( id ) {
        joms.popup.follower.add( id );
    },
    followRemove: function( id ) {
        joms.popup.follower.remove( id );
    },
    /** Groups. */
    groupInvite: function( id ) {
        joms.popup.group.invite( id, 1, 1 );
    },
    groupJoin: function( id ) {
        joms.popup.group.join( id );
    },
    groupLeave: function( id ) {
        joms.popup.group.leave( id );
    },
    groupAddFeatured: function( id ) {
        joms.popup.group.addFeatured( id );
    },
    groupRemoveFeatured: function( id ) {
        joms.popup.group.removeFeatured( id );
    },
    groupReport: function( id ) {
        joms.popup.group.report( id );
    },
    groupUnpublish: function( id ) {
        joms.popup.group.unpublish( id );
    },
    groupDelete: function( id ) {
        joms.popup.group[ 'delete' ]( id );
    },
    groupApprove: function( id, userId ) {
        joms.popup.group.approve( id, userId );
    },
    groupRemoveMember: function( id, userId ) {
        joms.popup.group.removeMember( id, userId );
    },
    groupBanMember: function( id, userId ) {
        joms.popup.group.banMember( id, userId );
    },
    groupUnbanMember: function( id, userId ) {
        joms.popup.group.unbanMember( id, userId );
    },

    /** Notifications. */
    notificationGeneral: function() {
        joms.view.toolbar.notificationGeneral();
    },
    notificationFriend: function() {
        joms.view.toolbar.notificationFriend();
    },
    notificationPm: function() {
        joms.view.toolbar.notificationPm();
    },

    /** Photos. */
    photoUpload: function( albumId, contextId, context ) {
        joms.popup.photo.upload( albumId, contextId, context );
    },
    photoOpen: function( albumId, id ) {
        joms.popup.photo.open( albumId, id );
    },
    photoRemove: function( id ) {
        joms.popup.photo.remove( id );
    },
    photoZoom: function( url ) {
        joms.popup.photo.zoom( url );
    },
    photoSetAvatar: function( id ) {
        joms.popup.photo.setAvatar( id );
    },
    photoSetCover: function( albumId, id ) {
        joms.popup.photo.setCover( albumId, id );
    },
    photoSetAlbum: function( id ) {
        joms.popup.photo.setAlbum( id );
    },
    photoReport: function( id, url ) {
        joms.popup.photo.report( id, url );
    },

    /** Photo albums. */
    albumRemove: function( id ) {
        joms.popup.album.remove( id );
    },
    albumAddFeatured: function( id ) {
        joms.popup.album.addFeatured( id );
    },
    albumRemoveFeatured: function( id ) {
        joms.popup.album.removeFeatured( id );
    },

    /** Private messages. */
    pmSend: function( id ) {
        joms.popup.pm.send( id );
    },

    /** Videos. */
    videoAdd: function( contextId, context ) {
        joms.popup.video.add( contextId, context );
    },
    videoOpen: function( id ) {
        joms.popup.video.open( id );
    },
    videoEdit: function( id ) {
        joms.popup.video.edit( id );
    },
    videoRemove: function( id, redirect ) {
        joms.popup.video.remove( id, redirect );
    },
    videoAddFeatured: function( id ) {
        joms.popup.video.addFeatured( id );
    },
    videoRemoveFeatured: function( id ) {
        joms.popup.video.removeFeatured( id );
    },
    videoLinkToProfile: function( id ) {
        joms.popup.video.linkToProfile( id );
    },
    videoRemoveLinkFromProfile: function( id, userId ) {
        joms.popup.video.removeLinkFromProfile( id, userId );
    },
    videoFetchThumbnail: function( id ) {
        joms.popup.video.fetchThumbnail( id );
    },
    videoReport: function( id, url ) {
        joms.popup.video.report( id, url );
    },

    locationView: function( id ) {
        joms.popup.location.view( id );
    },

    /** Stream. */
    streamLike: function( id ) {
        joms.view.stream.like( id );
    },
    streamUnlike: function( id ) {
        joms.view.stream.unlike( id );
    },
    streamEdit: function( id, el ) {
        joms.view.stream.edit( id, el );
    },
    streamEditLocation: function( id ) {
        joms.view.stream.editLocation( id );
    },
    streamRemove: function( id ) {
        joms.view.stream.remove( id );
    },
    streamRemoveLocation: function( id ) {
        joms.view.stream.removeLocation( id );
    },
    streamRemoveMood: function( id ) {
        joms.view.stream.removeMood( id );
    },
    streamRemoveTag: function( id ) {
        joms.view.stream.removeTag( id );
    },
    streamSelectPrivacy: function( id ) {
        joms.view.stream.selectPrivacy( id );
    },
    streamShare: function( id ) {
        joms.view.stream.share( id );
    },
    streamHide: function( id, userId ) {
        joms.view.stream.hide( id, userId );
    },
    streamShowLikes: function( id, target ) {
        joms.view.stream.showLikes( id, target );
    },
    streamShowComments: function( id, type ) {
        joms.view.stream.showComments( id, type );
    },
    streamShowOthers: function( id ) {
        joms.view.stream.showOthers( id );
    },
    streamReport: function( id, commentid ) {
        joms.view.stream.report( id, commentid);
    },
    streamToggleText: function( id ) {
        joms.view.stream.toggleText( id );
    },
    streamAddFeatured: function( id ) {
        joms.view.stream.addFeatured( id );
    },
    streamRemoveFeatured: function( id ) {
        joms.view.stream.removeFeatured( id );
    },

    /** Streams. */
    streamsLoadMore: function() {
        joms.view.streams.loadMore();
    },

    /** Comment system. */
    commentLike: function( id ) {
        joms.view.comment.like( id );
    },
    commentUnlike: function( id ) {
        joms.view.comment.unlike( id );
    },
    commentEdit: function( id, el, type ) {
        joms.view.comment.edit( id, el, type );
    },
    commentCancel: function( id ) {
        joms.view.comment.cancel( id );
    },
    commentRemove: function( id, type ) {
        joms.view.comment.remove( id, type );
    },
    commentRemoveTag: function( id, type ) {
        joms.view.comment.removeTag( id, type );
    },
    commentRemovePreview: function( id, type ) {
        joms.view.comment.removePreview( id, type );
    },
    commentRemoveThumbnail: function( id, type ) {
        joms.view.comment.removeThumbnail( id, type );
    },
    commentShowLikes: function( id ) {
        joms.popup.comment.showLikes( id );
    },
    commentToggleText: function( id ) {
        joms.view.comment.toggleText( id );
    },

    /** Application */
    appAbout: function( name ) {
        joms.popup.app.about( name );
    },
    appBrowse: function( pos ) {
        joms.popup.app.browse( pos );
    },
    appPrivacy: function( name ) {
        joms.popup.app.privacy( name );
    },
    appRemove: function( id ) {
        joms.popup.app.remove( id );
    },
    appSetting: function( id, name ) {
        joms.popup.app.setting( id, name );
    },

    /** Search. */
    searchSave: function( data ) {
        joms.popup.search.save( data );
    },

    /** Page */
    pageLike: function( type, id ) {
        joms.view.page.like( type, id );
    },
    pageUnlike: function( type, id ) {
        joms.view.page.unlike( type, id );
    },
    pageShare: function( url ) {
        joms.view.page.share( url );
    },
    pageInvite: function( id ) {
        joms.popup.page.invite( id );
    },
    pageDelete: function( id ) {
        joms.popup.page.delete( id );
    },
    pagePublish: function( id ) {
        joms.popup.page.publish( id );
    },
    pageUnpublish: function( id ) {
        joms.popup.page.unpublish( id );
    },
    pageAddFeatured: function( id ) {
        joms.popup.page.addFeatured( id ); 
    },
    pageRemoveFeatured: function( id ) {
        joms.popup.page.removeFeatured( id ); 
    },
    pageBanMember: function( id, userId ) {
        joms.popup.page.banMember( id, userId );
    },
    pageUnbanMember: function( id, userId ) {
        joms.popup.page.unbanMember( id, userId );
    },
    pageRemoveMember: function( id, userId ) {
        joms.popup.page.removeMember( id, userId );
    },
    pageReport: function( id ) {
        joms.popup.page.report( id );
    },

    /** Invitation */
    invitationAccept: function( type, id ) {
        joms.fn.invitation.accept( type, id );
    },
    invitationReject: function( type, id ) {
        joms.fn.invitation.reject( type, id );
    },

    /** File */
    fileUpload: function( type, id ) {
        joms.popup.file.upload( type, id );
    },
    fileList: function( type, id ) {
        joms.popup.file.list( type, id );
    },
    fileDownload: function( type, id, path ) {
        joms.popup.file.download( type, id, path );
    },
    fileRemove: function( type, id ) {
        joms.popup.file.remove( type, id );
    },
    fileUpdateHit: function( id, location ) {
        joms.popup.file.updateHit( id, location );
    },

    /** Discussion */
    discussionLock: function( groupId, id ) {
        joms.popup.discussion.lock( groupId, id );
    },
    discussionRemove: function( groupId, id ) {
        joms.popup.discussion.remove( groupId, id );
    },

    /** Announcement */
    announcementEdit: function( groupId, id ) {
        joms.fn.announcement.edit( groupId, id );
    },
    announcementEditCancel: function( groupId, id ) {
        joms.fn.announcement.editCancel( groupId, id );
    },
    announcementRemove: function( groupId, id ) {
        joms.popup.announcement.remove( groupId, id );
    },

    /** Inbox */
    inboxRemove: function( task, msgIds ) {
        joms.popup.inbox.remove( task, msgIds );
    },
    inboxSetRead: function( msgIds, error ) {
        joms.popup.inbox.setRead( msgIds, error );
    },
    inboxSetUnread: function( msgIds, error ) {
        joms.popup.inbox.setUnread( msgIds, error );
    },

    /** Terms of services */
    tnc: function() {
        joms.popup.tnc();
    },

    /** Facebook connect */
    fbcUpdate: function() {
        joms.popup.fbc.update();
    }

};

});

require([
    'core',
    'utils/crop',
    'utils/dropdown',
    'utils/hovercard',
    'utils/reaction',
    'utils/loadlib',
    'utils/location-autocomplete',
    'utils/popup',
    'utils/tab',
    'utils/tagging',
    'utils/validation',
    'utils/video',
    'utils/wysiwyg',
    'utils/dialog',
    'utils/emoji',
    'functions/tagging',
    'views/comment',
    'utils/emoticon',
    'views/customize',
    'views/misc',
    'views/stream',
    'views/streams',
    'views/toolbar',
    'api'
], function() {

    joms.onStart(function() {

        if (joms.getData('client') === 'site') {
            joms.view.comment.start();
            joms.view.page.initialize();
            joms.view.stream.start();
            joms.view.streams.start();
            joms.view.toolbar.start();
            joms.view.customize.start();
            joms.view.misc.start();

            joms.util.dropdown.start();
            joms.util.tab.start();
            joms.util.validation.start();
            joms.util.hovercard.initialize();
            joms.util.reaction.initialize();


            // Fetch all friends in context (group, event, or default) if user is logged-in.
            if ( +window.joms_my_id ) {
                joms.fn.tagging.fetchFriendsInContext();
            }
        }

        joms.util.wysiwyg.start();
    });

    joms.jQuery(function() {
        joms.start();
    });
});

define("bundle", function(){});

}());

Anon7 - 2022
AnonSec Team