├── .gitignore ├── Procfile ├── README.md ├── app.py ├── requirements.txt ├── static ├── images │ ├── iPad_white_thumb.png │ ├── pusher-logo-p.png │ └── pusher-logo.png ├── javascripts │ ├── jquery.emojipicker.js │ ├── jquery.emojipicker.tw.js │ └── ui_components │ │ ├── Chat.js │ │ ├── MainView.js │ │ ├── Messages.js │ │ └── WelcomeView.js └── stylesheets │ ├── devices.min.css │ ├── jquery.emojipicker.css │ ├── jquery.emojipicker.tw.css │ └── styles.css └── templates └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | venv/ 2 | *.pyc 3 | .env 4 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn app:app --log-file=- -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pusher & React Real-Time Chat App 2 | 3 | This is an example chat application using React for a componentised UI and Pusher for real-time chat messages. 4 | 5 | The UI components can be found in `static/javascripts/ui_components`. 6 | 7 | The back-end is a Python app, found in `app.py`. 8 | 9 | ## Tutorial 10 | 11 | There is a full tutorial on [building a real-time chat application with React and Pusher](https://blog.pusher.com/making-reactjs-realtime-with-websockets/) available. 12 | 13 | ## Running the App 14 | 15 | You'll need a Pusher account, so [signup for a free account](https://pusher.com/signup). 16 | 17 | You'll then need to install the application Python package dependencies. We'd recommend you do this in a [Virtual Environment](http://docs.python-guide.org/en/latest/dev/virtualenvs/): 18 | 19 | ```bash 20 | $ virtualenv venv 21 | $ source venv/bin/activate 22 | ``` 23 | 24 | Then install the dependencies: 25 | 26 | ``` 27 | pip install -r requirements.txt 28 | ``` 29 | 30 | Prior to running the Python app you'll need some environmental variables to be set. 31 | 32 | * `PUSHER_CHAT_APP_ID` - your Pusher application ID 33 | * `PUSHER_CHAT_APP_KEY` - your Pusher application key 34 | * `PUSHER_CHAT_APP_SECRET` - your Pusher application secret 35 | 36 | You can do this from the command line as part of running the application: 37 | 38 | ```bash 39 | PUSHER_CHAT_APP_ID=YOUR_APP_ID PUSHER_CHAT_APP_KEY=YOUR_APP_KEY PUSHER_CHAT_APP_SECRET=YOUR_APP_SECRET python app.py 40 | ``` 41 | 42 | Or, probably much more easily, with the help of [foreman](https://github.com/ddollar/foreman) and by setting these values in a `.env` file: 43 | 44 | ``` 45 | PUSHER_CHAT_APP_ID=YOUR_APP_ID 46 | PUSHER_CHAT_APP_KEY=YOUR_APP_KEY 47 | PUSHER_CHAT_APP_SECRET=YOUR_APP_SECRET 48 | ``` 49 | 50 | Then running: 51 | 52 | ```bash 53 | $ foreman start 54 | ``` 55 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from pusher import Pusher 2 | import os 3 | import cgi 4 | from flask import Flask, render_template, request 5 | 6 | app = Flask(__name__, static_url_path='/static') 7 | 8 | app_id = os.environ.get('PUSHER_CHAT_APP_ID') 9 | key = os.environ.get('PUSHER_CHAT_APP_KEY') 10 | secret = os.environ.get('PUSHER_CHAT_APP_SECRET') 11 | 12 | pusher = Pusher( 13 | app_id=app_id, 14 | key=key, 15 | secret=secret 16 | ) 17 | 18 | @app.route("/") 19 | def show_index(): 20 | return render_template('index.html', pusher_app_key=key) 21 | 22 | @app.route('/messages', methods=['POST']) 23 | def new_message(): 24 | name, text = request.form['name'], cgi.escape(request.form['text']) 25 | time = request.form['time'] 26 | pusher.trigger('messages', 'new_message', { 27 | 'text': text, 28 | 'name': name, 29 | 'time': time 30 | }) 31 | return "great success!" 32 | 33 | if __name__ == "__main__": 34 | app.run(debug=True) 35 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pusher==1.2.3 2 | Flask==0.10.1 3 | cryptography 4 | gunicorn 5 | -------------------------------------------------------------------------------- /static/images/iPad_white_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pusher-community/react-realtime-chat/9e88053ae96b615e24a8262cc123ca45cbbc9848/static/images/iPad_white_thumb.png -------------------------------------------------------------------------------- /static/images/pusher-logo-p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pusher-community/react-realtime-chat/9e88053ae96b615e24a8262cc123ca45cbbc9848/static/images/pusher-logo-p.png -------------------------------------------------------------------------------- /static/images/pusher-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pusher-community/react-realtime-chat/9e88053ae96b615e24a8262cc123ca45cbbc9848/static/images/pusher-logo.png -------------------------------------------------------------------------------- /static/javascripts/jquery.emojipicker.js: -------------------------------------------------------------------------------- 1 | ;(function($) { 2 | 3 | var pluginName = "emojiPicker", 4 | defaults = { 5 | width: '200', 6 | height: '350', 7 | position: 'right', 8 | fadeTime: 100, 9 | iconColor: 'black', 10 | iconBackgroundColor: '#eee', 11 | container: 'body', 12 | button: true 13 | }; 14 | 15 | var MIN_WIDTH = 200, 16 | MAX_WIDTH = 600, 17 | MIN_HEIGHT = 100, 18 | MAX_HEIGHT = 350, 19 | MAX_ICON_HEIGHT = 50; 20 | 21 | function Plugin( element, options ) { 22 | 23 | this.element = element; 24 | this.$el = $(element); 25 | 26 | this.settings = $.extend( {}, defaults, options ); 27 | 28 | this.$container = $(this.settings.container); 29 | 30 | // (type) Safety first 31 | this.settings.width = parseInt(this.settings.width); 32 | this.settings.height = parseInt(this.settings.height); 33 | 34 | // Check for valid width/height 35 | if(this.settings.width >= MAX_WIDTH) { 36 | this.settings.width = MAX_WIDTH; 37 | } else if (this.settings.width < MIN_WIDTH) { 38 | this.settings.width = MIN_WIDTH; 39 | } 40 | if (this.settings.height >= MAX_HEIGHT) { 41 | this.settings.height = MAX_HEIGHT; 42 | } else if (this.settings.height < MIN_HEIGHT) { 43 | this.settings.height = MIN_HEIGHT; 44 | } 45 | 46 | var possiblePositions = [ 'left', 47 | 'right' 48 | /*,'top', 49 | 'bottom'*/]; 50 | if($.inArray(this.settings.position,possiblePositions) == -1) { 51 | this.settings.position = defaults.position; //current default 52 | } 53 | 54 | // Do not enable if on mobile device (emojis already present) 55 | if(!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 56 | this.init(); 57 | } 58 | 59 | } 60 | 61 | $.extend(Plugin.prototype, { 62 | 63 | init: function() { 64 | this.active = false; 65 | this.addPickerIcon(); 66 | this.createPicker(); 67 | this.listen(); 68 | }, 69 | 70 | addPickerIcon: function() { 71 | // The wrapper is not needed if they have chosen to not use a button 72 | if (this.settings.button) { 73 | var elementHeight = this.$el.outerHeight(); 74 | var iconHeight = elementHeight > MAX_ICON_HEIGHT ? 75 | MAX_ICON_HEIGHT : 76 | elementHeight; 77 | 78 | // This can cause issues if the element is not visible when it is initiated 79 | var objectWidth = this.$el.width(); 80 | 81 | this.$el.width(objectWidth); 82 | 83 | this.$wrapper = this.$el 84 | .wrap("
") 85 | .parent(); 86 | 87 | this.$icon = $('
') 88 | .height(iconHeight) 89 | .width(iconHeight) 90 | .addClass(this.settings.iconColor) 91 | .css('backgroundColor', this.settings.iconBackgroundColor); 92 | this.$wrapper.append( this.$icon ); 93 | } 94 | 95 | }, 96 | 97 | createPicker: function() { 98 | 99 | // Show template 100 | this.$picker = $( getPickerHTML() ) 101 | .appendTo( this.$container ) 102 | .width(this.settings.width) 103 | .height(this.settings.height) 104 | .css('z-index',10000); 105 | 106 | // Picker height 107 | this.$picker.find('section') 108 | .height(parseInt(this.settings.height) - 40); // 40 is height of the tabs 109 | 110 | // Tab size based on width 111 | if (this.settings.width < 240) { 112 | this.$picker.find('.emoji').css({'width':'1em', 'height':'1em'}); 113 | } 114 | 115 | }, 116 | 117 | listen: function() { 118 | // If the button is being used, wrapper has not been set, 119 | // and will not need a listener 120 | if (this.settings.button){ 121 | // Clicking on the picker icon 122 | this.$wrapper.find('.emojiPickerIcon') 123 | .click( $.proxy(this.iconClicked, this) ); 124 | } 125 | 126 | // Click event for emoji 127 | this.$picker.find('section div') 128 | .click( $.proxy(this.emojiClicked, this) ); 129 | 130 | // Click event for active tab 131 | this.$picker.find('nav .tab') 132 | .click( $.proxy(this.emojiCategoryClicked, this) ); 133 | 134 | this.$picker.click( $.proxy(this.pickerClicked, this) ); 135 | 136 | $(document.body).click( $.proxy(this.clickOutside, this) ); 137 | 138 | // Resize events forces a reposition, which may or may not actually be required 139 | $(window).resize( $.proxy(this.updatePosition, this) ); 140 | }, 141 | 142 | updatePosition: function() { 143 | 144 | /* Process: 145 | 1. Find the nearest positioned element by crawling up the ancestors, record it's offset 146 | 2. Find the bottom left or right of the input element, record this (Account for position setting of left or right) 147 | 3. Find the difference between the two, as this will become our new position 148 | 4. Magic. 149 | 150 | N.B. The removed code had a reference to top/bottom positioning, but I don't see the use case for this.. 151 | */ 152 | 153 | // Step 1 154 | // Luckily jquery already does this... 155 | var positionedParent = this.$picker.offsetParent(); 156 | var parentOffset = positionedParent.offset(); // now have a top/left object 157 | 158 | // Step 2 159 | var elOffset = this.$el.offset(); 160 | if(this.settings.position == 'right'){ 161 | elOffset.left += this.$el.outerWidth() - this.settings.width; 162 | } 163 | elOffset.top += this.$el.outerHeight(); 164 | 165 | // Step 3 166 | var diffOffset = { 167 | top: (elOffset.top - parentOffset.top), 168 | left: (elOffset.left - parentOffset.top) 169 | }; 170 | 171 | this.$picker.css({ 172 | top: diffOffset.top, 173 | left: diffOffset.left 174 | }); 175 | 176 | return this; 177 | }, 178 | 179 | hide: function() { 180 | this.$picker.hide(this.settings.fadeTime, 'linear', function() { 181 | this.active = false; 182 | }.bind(this)); 183 | }, 184 | 185 | show: function() { 186 | this.$el.focus(); 187 | this.updatePosition(); 188 | this.$picker.show(this.settings.fadeTime, 'linear', function() { 189 | this.active = true; 190 | }.bind(this)); 191 | }, 192 | 193 | /************ 194 | * EVENTS * 195 | ************/ 196 | 197 | iconClicked : function(e) { 198 | if ( this.$picker.is(':hidden') ) { 199 | this.show(); 200 | } else { 201 | this.hide(); 202 | } 203 | }, 204 | 205 | emojiClicked: function(e) { 206 | var emojiShortcode = $(e.target).attr('class').split('emoji-')[1]; 207 | var emojiUnicode = toUnicode(findEmoji(emojiShortcode).unicode); 208 | 209 | insertAtCaret(this.element, emojiUnicode); 210 | 211 | // trigger change event on input 212 | $(this.element).trigger("keyup"); 213 | }, 214 | 215 | emojiCategoryClicked: function(e) { 216 | var section = ''; 217 | 218 | // Update tab 219 | this.$picker.find('nav .tab').removeClass('active'); 220 | if ($(e.target).parent().hasClass('tab')) { 221 | section = $(e.target).parent().attr('data-tab'); 222 | $(e.target).parent('.tab').addClass('active'); 223 | } else { 224 | section = $(e.target).attr('data-tab'); 225 | $(e.target).addClass('active'); 226 | } 227 | 228 | // Update section 229 | this.$picker.find('section').addClass('hidden');//.hide(); 230 | this.$picker.find('section.' + section).removeClass('hidden');//.show(); 231 | }, 232 | 233 | pickerClicked: function(e) { 234 | e.stopPropagation(); 235 | }, 236 | 237 | clickOutside: function(e) { 238 | if ( this.active ) { 239 | this.hide(); 240 | } 241 | } 242 | 243 | }); 244 | 245 | $.fn[ pluginName ] = function ( options ) { 246 | 247 | // Calling a function 248 | if (typeof options === 'string') { 249 | this.each(function() { 250 | var plugin = $.data( this, pluginName ); 251 | switch(options) { 252 | case 'toggle': 253 | plugin.iconClicked(); 254 | break; 255 | } 256 | }); 257 | return this; 258 | } 259 | 260 | this.each(function() { 261 | // Don't attach to the same element twice 262 | if ( !$.data( this, pluginName ) ) { 263 | $.data( this, pluginName, new Plugin( this, options ) ); 264 | } 265 | }); 266 | return this; 267 | }; 268 | 269 | /* ---------------------------------------------------------------------- */ 270 | 271 | function getPickerHTML() { 272 | var nodes = []; 273 | var categories = [ 274 | { name: 'emotion', symbol: 'grinning' }, 275 | { name: 'animal', symbol: 'whale' }, 276 | { name: 'food', symbol: 'hamburger' }, 277 | { name: 'folderol', symbol: 'sunny' }, 278 | { name: 'thing', symbol: 'kiss' }, 279 | { name: 'travel', symbol: 'rocket' } 280 | ]; 281 | var aliases = { 282 | 'people': 'emotion', 283 | 'symbol': 'thing', 284 | 'undefined': 'thing' 285 | } 286 | var items = {}; 287 | 288 | // Re-Sort Emoji table 289 | $.each($.fn.emojiPicker.emojis, function(i, emoji) { 290 | var category = aliases[ emoji.category ] || emoji.category; 291 | items[ category ] = items[ category ] || []; 292 | items[ category ].push( emoji ); 293 | }); 294 | 295 | nodes.push('
'); 296 | nodes.push(''); 307 | for (var i in categories) { 308 | nodes.push('
'); 312 | for (var j in items[ categories[i].name ] ) { 313 | var emoji = items[ categories[i].name ][ j ]; 314 | nodes.push('
'); 315 | } 316 | nodes.push('
'); 317 | } 318 | nodes.push('
'); 319 | return nodes.join("\n"); 320 | } 321 | 322 | function findEmoji(emojiShortcode) { 323 | var emojis = $.fn.emojiPicker.emojis; 324 | for (var i = 0; i < emojis.length; i++) { 325 | if (emojis[i].shortcode == emojiShortcode) { 326 | return emojis[i]; 327 | } 328 | } 329 | } 330 | 331 | function insertAtCaret(inputField, myValue) { 332 | if (document.selection) { 333 | //For browsers like Internet Explorer 334 | inputField.focus(); 335 | var sel = document.selection.createRange(); 336 | sel.text = myValue; 337 | inputField.focus(); 338 | } 339 | else if (inputField.selectionStart || inputField.selectionStart == '0') { 340 | //For browsers like Firefox and Webkit based 341 | var startPos = inputField.selectionStart; 342 | var endPos = inputField.selectionEnd; 343 | var scrollTop = inputField.scrollTop; 344 | inputField.value = inputField.value.substring(0, startPos)+myValue+inputField.value.substring(endPos,inputField.value.length); 345 | inputField.focus(); 346 | inputField.selectionStart = startPos + myValue.length; 347 | inputField.selectionEnd = startPos + myValue.length; 348 | inputField.scrollTop = scrollTop; 349 | } else { 350 | inputField.focus(); 351 | inputField.value += myValue; 352 | } 353 | } 354 | 355 | function toUnicode(code) { 356 | var codes = code.split('-').map(function(value, index) { 357 | return parseInt(value, 16); 358 | }); 359 | return String.fromCodePoint.apply(null, codes); 360 | } 361 | 362 | if (!String.fromCodePoint) { 363 | // ES6 Unicode Shims 0.1 , © 2012 Steven Levithan http://slevithan.com/ , MIT License 364 | String.fromCodePoint = function fromCodePoint () { 365 | var chars = [], point, offset, units, i; 366 | for (i = 0; i < arguments.length; ++i) { 367 | point = arguments[i]; 368 | offset = point - 0x10000; 369 | units = point > 0xFFFF ? [0xD800 + (offset >> 10), 0xDC00 + (offset & 0x3FF)] : [point]; 370 | chars.push(String.fromCharCode.apply(null, units)); 371 | } 372 | return chars.join(""); 373 | } 374 | } 375 | 376 | })(jQuery); 377 | -------------------------------------------------------------------------------- /static/javascripts/jquery.emojipicker.tw.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $.fn.emojiPicker.emojis = [ 3 | { 4 | "name": "bangbang", 5 | "unicode": "203C", 6 | "shortcode": "bangbang", 7 | "description": "DOUBLE EXCLAMATION MARK", 8 | "category": "symbol" 9 | }, 10 | { 11 | "name": "interrobang", 12 | "unicode": "2049", 13 | "shortcode": "interrobang", 14 | "description": "EXCLAMATION QUESTION MARK", 15 | "category": "folderol" 16 | }, 17 | { 18 | "name": "tm", 19 | "unicode": "2122", 20 | "shortcode": "tm", 21 | "description": "TRADE MARK SIGN", 22 | "category": "folderol" 23 | }, 24 | { 25 | "name": "information_source", 26 | "unicode": "2139", 27 | "shortcode": "information_source", 28 | "description": "INFORMATION SOURCE", 29 | "category": "folderol" 30 | }, 31 | { 32 | "name": "left_right_arrow", 33 | "unicode": "2194", 34 | "shortcode": "left_right_arrow", 35 | "description": "LEFT RIGHT ARROW", 36 | "category": "folderol" 37 | }, 38 | { 39 | "name": "arrow_up_down", 40 | "unicode": "2195", 41 | "shortcode": "arrow_up_down", 42 | "description": "UP DOWN ARROW", 43 | "category": "folderol" 44 | }, 45 | { 46 | "name": "arrow_upper_left", 47 | "unicode": "2196", 48 | "shortcode": "arrow_upper_left", 49 | "description": "NORTH WEST ARROW", 50 | "category": "folderol" 51 | }, 52 | { 53 | "name": "arrow_upper_right", 54 | "unicode": "2197", 55 | "shortcode": "arrow_upper_right", 56 | "description": "NORTH EAST ARROW", 57 | "category": "folderol" 58 | }, 59 | { 60 | "name": "arrow_lower_right", 61 | "unicode": "2198", 62 | "shortcode": "arrow_lower_right", 63 | "description": "SOUTH EAST ARROW", 64 | "category": "folderol" 65 | }, 66 | { 67 | "name": "arrow_lower_left", 68 | "unicode": "2199", 69 | "shortcode": "arrow_lower_left", 70 | "description": "SOUTH WEST ARROW", 71 | "category": "folderol" 72 | }, 73 | { 74 | "name": "leftwards_arrow_with_hook", 75 | "unicode": "21A9", 76 | "shortcode": "leftwards_arrow_with_hook", 77 | "description": "LEFTWARDS ARROW WITH HOOK", 78 | "category": "folderol" 79 | }, 80 | { 81 | "name": "arrow_right_hook", 82 | "unicode": "21AA", 83 | "shortcode": "arrow_right_hook", 84 | "description": "RIGHTWARDS ARROW WITH HOOK", 85 | "category": "folderol" 86 | }, 87 | { 88 | "name": "watch", 89 | "unicode": "231A", 90 | "shortcode": "watch", 91 | "description": "WATCH", 92 | "category": "thing" 93 | }, 94 | { 95 | "name": "hourglass", 96 | "unicode": "231B", 97 | "shortcode": "hourglass", 98 | "description": "HOURGLASS", 99 | "category": "thing" 100 | }, 101 | { 102 | "name": "fast_forward", 103 | "unicode": "23E9", 104 | "shortcode": "fast_forward", 105 | "description": "BLACK RIGHT-POINTING DOUBLE TRIANGLE" 106 | }, 107 | { 108 | "name": "rewind", 109 | "unicode": "23EA", 110 | "shortcode": "rewind", 111 | "description": "BLACK LEFT-POINTING DOUBLE TRIANGLE", 112 | "category": "thing" 113 | }, 114 | { 115 | "name": "arrow_double_up", 116 | "unicode": "23EB", 117 | "shortcode": "arrow_double_up", 118 | "description": "BLACK UP-POINTING DOUBLE TRIANGLE", 119 | "category": "folderol" 120 | }, 121 | { 122 | "name": "arrow_double_down", 123 | "unicode": "23EC", 124 | "shortcode": "arrow_double_down", 125 | "description": "BLACK DOWN-POINTING DOUBLE TRIANGLE", 126 | "category": "folderol" 127 | }, 128 | { 129 | "name": "alarm_clock", 130 | "unicode": "23F0", 131 | "shortcode": "alarm_clock", 132 | "description": "ALARM CLOCK", 133 | "category": "thing" 134 | }, 135 | { 136 | "name": "hourglass_flowing_sand", 137 | "unicode": "23F3", 138 | "shortcode": "hourglass_flowing_sand", 139 | "description": "HOURGLASS WITH FLOWING SAND", 140 | "category": "thing" 141 | }, 142 | { 143 | "name": "m", 144 | "unicode": "24C2", 145 | "shortcode": "m", 146 | "description": "CIRCLED LATIN CAPITAL LETTER M", 147 | "category": "folderol" 148 | }, 149 | { 150 | "name": "black_small_square", 151 | "unicode": "25AA", 152 | "shortcode": "black_small_square", 153 | "description": "BLACK SMALL SQUARE", 154 | "category": "folderol" 155 | }, 156 | { 157 | "name": "white_small_square", 158 | "unicode": "25AB", 159 | "shortcode": "white_small_square", 160 | "description": "WHITE SMALL SQUARE", 161 | "category": "folderol" 162 | }, 163 | { 164 | "name": "arrow_forward", 165 | "unicode": "25B6", 166 | "shortcode": "arrow_forward", 167 | "description": "BLACK RIGHT-POINTING TRIANGLE", 168 | "category": "folderol" 169 | }, 170 | { 171 | "name": "arrow_backward", 172 | "unicode": "25C0", 173 | "shortcode": "arrow_backward", 174 | "description": "BLACK LEFT-POINTING TRIANGLE", 175 | "category": "folderol" 176 | }, 177 | { 178 | "name": "white_medium_square", 179 | "unicode": "25FB", 180 | "shortcode": "white_medium_square", 181 | "description": "WHITE MEDIUM SQUARE", 182 | "category": "folderol" 183 | }, 184 | { 185 | "name": "black_medium_square", 186 | "unicode": "25FC", 187 | "shortcode": "black_medium_square", 188 | "description": "BLACK MEDIUM SQUARE", 189 | "category": "folderol" 190 | }, 191 | { 192 | "name": "white_medium_small_square", 193 | "unicode": "25FD", 194 | "shortcode": "white_medium_small_square", 195 | "description": "WHITE MEDIUM SMALL SQUARE", 196 | "category": "folderol" 197 | }, 198 | { 199 | "name": "black_medium_small_square", 200 | "unicode": "25FE", 201 | "shortcode": "black_medium_small_square", 202 | "description": "BLACK MEDIUM SMALL SQUARE", 203 | "category": "folderol" 204 | }, 205 | { 206 | "name": "sunny", 207 | "unicode": "2600", 208 | "shortcode": "sunny", 209 | "description": "BLACK SUN WITH RAYS", 210 | "category": "thing" 211 | }, 212 | { 213 | "name": "cloud", 214 | "unicode": "2601", 215 | "shortcode": "cloud", 216 | "description": "CLOUD", 217 | "category": "thing" 218 | }, 219 | { 220 | "name": "phone", 221 | "unicode": "260E", 222 | "shortcode": "phone", 223 | "description": "BLACK TELEPHONE", 224 | "category": "thing" 225 | }, 226 | { 227 | "name": "ballot_box_with_check", 228 | "unicode": "2611", 229 | "shortcode": "ballot_box_with_check", 230 | "description": "BALLOT BOX WITH CHECK", 231 | "category": "thing" 232 | }, 233 | { 234 | "name": "umbrella", 235 | "unicode": "2614", 236 | "shortcode": "umbrella", 237 | "description": "UMBRELLA WITH RAIN DROPS", 238 | "category": "thing" 239 | }, 240 | { 241 | "name": "coffee", 242 | "unicode": "2615", 243 | "shortcode": "coffee", 244 | "description": "HOT BEVERAGE", 245 | "category": "thing" 246 | }, 247 | { 248 | "name": "point_up", 249 | "unicode": "261D", 250 | "shortcode": "point_up", 251 | "description": "WHITE UP POINTING INDEX", 252 | "category": "people" 253 | }, 254 | { 255 | "name": "relaxed", 256 | "unicode": "263A", 257 | "shortcode": "relaxed", 258 | "description": "WHITE SMILING FACE", 259 | "category": "emotion" 260 | }, 261 | { 262 | "name": "aries", 263 | "unicode": "2648", 264 | "shortcode": "aries", 265 | "description": "ARIES", 266 | "category": "folderol" 267 | }, 268 | { 269 | "name": "taurus", 270 | "unicode": "2649", 271 | "shortcode": "taurus", 272 | "description": "TAURUS", 273 | "category": "folderol" 274 | }, 275 | { 276 | "name": "gemini", 277 | "unicode": "264A", 278 | "shortcode": "gemini", 279 | "description": "GEMINI", 280 | "category": "folderol" 281 | }, 282 | { 283 | "name": "cancer", 284 | "unicode": "264B", 285 | "shortcode": "cancer", 286 | "description": "CANCER", 287 | "category": "folderol" 288 | }, 289 | { 290 | "name": "leo", 291 | "unicode": "264C", 292 | "shortcode": "leo", 293 | "description": "LEO", 294 | "category": "folderol" 295 | }, 296 | { 297 | "name": "virgo", 298 | "unicode": "264D", 299 | "shortcode": "virgo", 300 | "description": "VIRGO", 301 | "category": "folderol" 302 | }, 303 | { 304 | "name": "libra", 305 | "unicode": "264E", 306 | "shortcode": "libra", 307 | "description": "LIBRA", 308 | "category": "folderol" 309 | }, 310 | { 311 | "name": "scorpius", 312 | "unicode": "264F", 313 | "shortcode": "scorpius", 314 | "description": "SCORPIUS", 315 | "category": "folderol" 316 | }, 317 | { 318 | "name": "sagittarius", 319 | "unicode": "2650", 320 | "shortcode": "sagittarius", 321 | "description": "SAGITTARIUS", 322 | "category": "folderol" 323 | }, 324 | { 325 | "name": "capricorn", 326 | "unicode": "2651", 327 | "shortcode": "capricorn", 328 | "description": "CAPRICORN", 329 | "category": "folderol" 330 | }, 331 | { 332 | "name": "aquarius", 333 | "unicode": "2652", 334 | "shortcode": "aquarius", 335 | "description": "AQUARIUS", 336 | "category": "folderol" 337 | }, 338 | { 339 | "name": "pisces", 340 | "unicode": "2653", 341 | "shortcode": "pisces", 342 | "description": "PISCES", 343 | "category": "folderol" 344 | }, 345 | { 346 | "name": "spades", 347 | "unicode": "2660", 348 | "shortcode": "spades", 349 | "description": "BLACK SPADE SUIT", 350 | "category": "folderol" 351 | }, 352 | { 353 | "name": "clubs", 354 | "unicode": "2663", 355 | "shortcode": "clubs", 356 | "description": "BLACK CLUB SUIT", 357 | "category": "folderol" 358 | }, 359 | { 360 | "name": "hearts", 361 | "unicode": "2665", 362 | "shortcode": "hearts", 363 | "description": "BLACK HEART SUIT", 364 | "category": "folderol" 365 | }, 366 | { 367 | "name": "diamonds", 368 | "unicode": "2666", 369 | "shortcode": "diamonds", 370 | "description": "BLACK DIAMOND SUIT", 371 | "category": "folderol" 372 | }, 373 | { 374 | "name": "hotsprings", 375 | "unicode": "2668", 376 | "shortcode": "hotsprings", 377 | "description": "HOT SPRINGS", 378 | "category": "thing" 379 | }, 380 | { 381 | "name": "recycle", 382 | "unicode": "267B", 383 | "shortcode": "recycle", 384 | "description": "BLACK UNIVERSAL RECYCLING SYMBOL", 385 | "category": "folderol" 386 | }, 387 | { 388 | "name": "wheelchair", 389 | "unicode": "267F", 390 | "shortcode": "wheelchair", 391 | "description": "WHEELCHAIR SYMBOL", 392 | "category": "thing" 393 | }, 394 | { 395 | "name": "anchor", 396 | "unicode": "2693", 397 | "shortcode": "anchor", 398 | "description": "ANCHOR", 399 | "category": "thing" 400 | }, 401 | { 402 | "name": "warning", 403 | "unicode": "26A0", 404 | "shortcode": "warning", 405 | "description": "WARNING SIGN", 406 | "category": "thing" 407 | }, 408 | { 409 | "name": "zap", 410 | "unicode": "26A1", 411 | "shortcode": "zap", 412 | "description": "HIGH VOLTAGE SIGN", 413 | "category": "thing" 414 | }, 415 | { 416 | "name": "white_circle", 417 | "unicode": "26AA", 418 | "shortcode": "white_circle", 419 | "description": "MEDIUM WHITE CIRCLE", 420 | "category": "folderol" 421 | }, 422 | { 423 | "name": "black_circle", 424 | "unicode": "26AB", 425 | "shortcode": "black_circle", 426 | "description": "MEDIUM BLACK CIRCLE", 427 | "category": "folderol" 428 | }, 429 | { 430 | "name": "soccer", 431 | "unicode": "26BD", 432 | "shortcode": "soccer", 433 | "description": "SOCCER BALL", 434 | "category": "thing" 435 | }, 436 | { 437 | "name": "baseball", 438 | "unicode": "26BE", 439 | "shortcode": "baseball", 440 | "description": "BASEBALL", 441 | "category": "thing" 442 | }, 443 | { 444 | "name": "snowman", 445 | "unicode": "26C4", 446 | "shortcode": "snowman", 447 | "description": "SNOWMAN WITHOUT SNOW", 448 | "category": "thing" 449 | }, 450 | { 451 | "name": "partly_sunny", 452 | "unicode": "26C5", 453 | "shortcode": "partly_sunny", 454 | "description": "SUN BEHIND CLOUD", 455 | "category": "thing" 456 | }, 457 | { 458 | "name": "ophiuchus", 459 | "unicode": "26CE", 460 | "shortcode": "ophiuchus", 461 | "description": "OPHIUCHUS", 462 | "category": "folderol" 463 | }, 464 | { 465 | "name": "no_entry", 466 | "unicode": "26D4", 467 | "shortcode": "no_entry", 468 | "description": "NO ENTRY", 469 | "category": "folderol" 470 | }, 471 | { 472 | "name": "church", 473 | "unicode": "26EA", 474 | "shortcode": "church", 475 | "description": "CHURCH", 476 | "category": "travel" 477 | }, 478 | { 479 | "name": "fountain", 480 | "unicode": "26F2", 481 | "shortcode": "fountain", 482 | "description": "FOUNTAIN", 483 | "category": "travel" 484 | }, 485 | { 486 | "name": "golf", 487 | "unicode": "26F3", 488 | "shortcode": "golf", 489 | "description": "FLAG IN HOLE", 490 | "category": "travel" 491 | }, 492 | { 493 | "name": "boat", 494 | "unicode": "26F5", 495 | "shortcode": "boat", 496 | "description": "SAILBOAT", 497 | "category": "travel" 498 | }, 499 | { 500 | "name": "tent", 501 | "unicode": "26FA", 502 | "shortcode": "tent", 503 | "description": "TENT", 504 | "category": "travel" 505 | }, 506 | { 507 | "name": "fuelpump", 508 | "unicode": "26FD", 509 | "shortcode": "fuelpump", 510 | "description": "FUEL PUMP", 511 | "category": "travel" 512 | }, 513 | { 514 | "name": "scissors", 515 | "unicode": "2702", 516 | "shortcode": "scissors", 517 | "description": "BLACK SCISSORS", 518 | "category": "thing" 519 | }, 520 | { 521 | "name": "white_check_mark", 522 | "unicode": "2705", 523 | "shortcode": "white_check_mark", 524 | "description": "WHITE HEAVY CHECK MARK", 525 | "category": "folderol" 526 | }, 527 | { 528 | "name": "airplane", 529 | "unicode": "2708", 530 | "shortcode": "airplane", 531 | "description": "AIRPLANE", 532 | "category": "thing" 533 | }, 534 | { 535 | "name": "email", 536 | "unicode": "2709", 537 | "shortcode": "email", 538 | "description": "ENVELOPE", 539 | "category": "thing" 540 | }, 541 | { 542 | "name": "fist", 543 | "unicode": "270A", 544 | "shortcode": "fist", 545 | "description": "RAISED FIST", 546 | "category": "people" 547 | }, 548 | { 549 | "name": "hand", 550 | "unicode": "270B", 551 | "shortcode": "hand", 552 | "description": "RAISED HAND", 553 | "category": "people" 554 | }, 555 | { 556 | "name": "v", 557 | "unicode": "270C", 558 | "shortcode": "v", 559 | "description": "VICTORY HAND", 560 | "category": "folderol" 561 | }, 562 | { 563 | "name": "pencil2", 564 | "unicode": "270F", 565 | "shortcode": "pencil2", 566 | "description": "PENCIL", 567 | "category": "thing" 568 | }, 569 | { 570 | "name": "black_nib", 571 | "unicode": "2712", 572 | "shortcode": "black_nib", 573 | "description": "BLACK NIB", 574 | "category": "folderol" 575 | }, 576 | { 577 | "name": "heavy_check_mark", 578 | "unicode": "2714", 579 | "shortcode": "heavy_check_mark", 580 | "description": "HEAVY CHECK MARK", 581 | "category": "folderol" 582 | }, 583 | { 584 | "name": "heavy_multiplication_x", 585 | "unicode": "2716", 586 | "shortcode": "heavy_multiplication_x", 587 | "description": "HEAVY MULTIPLICATION X", 588 | "category": "folderol" 589 | }, 590 | { 591 | "name": "sparkles", 592 | "unicode": "2728", 593 | "shortcode": "sparkles", 594 | "description": "SPARKLES", 595 | "category": "folderol" 596 | }, 597 | { 598 | "name": "eight_spoked_asterisk", 599 | "unicode": "2733", 600 | "shortcode": "eight_spoked_asterisk", 601 | "description": "EIGHT SPOKED ASTERISK", 602 | "category": "folderol" 603 | }, 604 | { 605 | "name": "eight_pointed_black_star", 606 | "unicode": "2734", 607 | "shortcode": "eight_pointed_black_star", 608 | "description": "EIGHT POINTED BLACK STAR", 609 | "category": "folderol" 610 | }, 611 | { 612 | "name": "snowflake", 613 | "unicode": "2744", 614 | "shortcode": "snowflake", 615 | "description": "SNOWFLAKE", 616 | "category": "thing" 617 | }, 618 | { 619 | "name": "sparkle", 620 | "unicode": "2747", 621 | "shortcode": "sparkle", 622 | "description": "SPARKLE", 623 | "category": "thing" 624 | }, 625 | { 626 | "name": "x", 627 | "unicode": "274C", 628 | "shortcode": "x", 629 | "description": "CROSS MARK", 630 | "category": "folderol" 631 | }, 632 | { 633 | "name": "negative_squared_cross_mark", 634 | "unicode": "274E", 635 | "shortcode": "negative_squared_cross_mark", 636 | "description": "NEGATIVE SQUARED CROSS MARK", 637 | "category": "folderol" 638 | }, 639 | { 640 | "name": "question", 641 | "unicode": "2753", 642 | "shortcode": "question", 643 | "description": "BLACK QUESTION MARK ORNAMENT", 644 | "category": "folderol" 645 | }, 646 | { 647 | "name": "grey_question", 648 | "unicode": "2754", 649 | "shortcode": "grey_question", 650 | "description": "WHITE QUESTION MARK ORNAMENT", 651 | "category": "folderol" 652 | }, 653 | { 654 | "name": "grey_exclamation", 655 | "unicode": "2755", 656 | "shortcode": "grey_exclamation", 657 | "description": "WHITE EXCLAMATION MARK ORNAMENT", 658 | "category": "folderol" 659 | }, 660 | { 661 | "name": "exclamation", 662 | "unicode": "2757", 663 | "shortcode": "exclamation", 664 | "description": "HEAVY EXCLAMATION MARK SYMBOL", 665 | "category": "folderol" 666 | }, 667 | { 668 | "name": "heart", 669 | "unicode": "2764", 670 | "shortcode": "heart", 671 | "description": "HEAVY BLACK HEART", 672 | "category": "folderol" 673 | }, 674 | { 675 | "name": "heavy_plus_sign", 676 | "unicode": "2795", 677 | "shortcode": "heavy_plus_sign", 678 | "description": "HEAVY PLUS SIGN", 679 | "category": "folderol" 680 | }, 681 | { 682 | "name": "heavy_minus_sign", 683 | "unicode": "2796", 684 | "shortcode": "heavy_minus_sign", 685 | "description": "HEAVY MINUS SIGN", 686 | "category": "folderol" 687 | }, 688 | { 689 | "name": "heavy_division_sign", 690 | "unicode": "2797", 691 | "shortcode": "heavy_division_sign", 692 | "description": "HEAVY DIVISION SIGN", 693 | "category": "folderol" 694 | }, 695 | { 696 | "name": "arrow_right", 697 | "unicode": "27A1", 698 | "shortcode": "arrow_right", 699 | "description": "BLACK RIGHTWARDS ARROW", 700 | "category": "folderol" 701 | }, 702 | { 703 | "name": "curly_loop", 704 | "unicode": "27B0", 705 | "shortcode": "curly_loop", 706 | "description": "CURLY LOOP", 707 | "category": "folderol" 708 | }, 709 | { 710 | "name": "loop", 711 | "unicode": "27BF", 712 | "shortcode": "loop", 713 | "description": "DOUBLE CURLY LOOP", 714 | "category": "folderol" 715 | }, 716 | { 717 | "name": "arrow_heading_up", 718 | "unicode": "2934", 719 | "shortcode": "arrow_heading_up", 720 | "description": "ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS", 721 | "category": "folderol" 722 | }, 723 | { 724 | "name": "arrow_heading_down", 725 | "unicode": "2935", 726 | "shortcode": "arrow_heading_down", 727 | "description": "ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS", 728 | "category": "folderol" 729 | }, 730 | { 731 | "name": "arrow_left", 732 | "unicode": "2B05", 733 | "shortcode": "arrow_left", 734 | "description": "LEFTWARDS BLACK ARROW", 735 | "category": "folderol" 736 | }, 737 | { 738 | "name": "arrow_up", 739 | "unicode": "2B06", 740 | "shortcode": "arrow_up", 741 | "description": "UPWARDS BLACK ARROW", 742 | "category": "folderol" 743 | }, 744 | { 745 | "name": "arrow_down", 746 | "unicode": "2B07", 747 | "shortcode": "arrow_down", 748 | "description": "DOWNWARDS BLACK ARROW", 749 | "category": "folderol" 750 | }, 751 | { 752 | "name": "black_large_square", 753 | "unicode": "2B1B", 754 | "shortcode": "black_large_square", 755 | "description": "BLACK LARGE SQUARE", 756 | "category": "folderol" 757 | }, 758 | { 759 | "name": "white_large_square", 760 | "unicode": "2B1C", 761 | "shortcode": "white_large_square", 762 | "description": "WHITE LARGE SQUARE", 763 | "category": "folderol" 764 | }, 765 | { 766 | "name": "star", 767 | "unicode": "2B50", 768 | "shortcode": "star", 769 | "description": "WHITE MEDIUM STAR", 770 | "category": "thing" 771 | }, 772 | { 773 | "name": "o", 774 | "unicode": "2B55", 775 | "shortcode": "o", 776 | "description": "HEAVY LARGE CIRCLE", 777 | "category": "folderol" 778 | }, 779 | { 780 | "name": "wavy_dash", 781 | "unicode": "3030", 782 | "shortcode": "wavy_dash", 783 | "description": "WAVY DASH", 784 | "category": "folderol" 785 | }, 786 | { 787 | "name": "part_alternation_mark", 788 | "unicode": "303D", 789 | "shortcode": "part_alternation_mark", 790 | "description": "PART ALTERNATION MARK", 791 | "category": "folderol" 792 | }, 793 | { 794 | "name": "congratulations", 795 | "unicode": "3297", 796 | "shortcode": "congratulations", 797 | "description": "CIRCLED IDEOGRAPH CONGRATULATION", 798 | "category": "folderol" 799 | }, 800 | { 801 | "name": "secret", 802 | "unicode": "3299", 803 | "shortcode": "secret", 804 | "description": "CIRCLED IDEOGRAPH SECRET", 805 | "category": "folderol" 806 | }, 807 | { 808 | "name": "mahjong", 809 | "unicode": "1F004", 810 | "shortcode": "mahjong", 811 | "description": "MAHJONG TILE RED DRAGON", 812 | "category": "folderol" 813 | }, 814 | { 815 | "name": "black_joker", 816 | "unicode": "1F0CF", 817 | "shortcode": "black_joker", 818 | "description": "PLAYING CARD BLACK JOKER", 819 | "category": "folderol" 820 | }, 821 | { 822 | "name": "a", 823 | "unicode": "1F170", 824 | "shortcode": "a", 825 | "description": "NEGATIVE SQUARED LATIN CAPITAL LETTER A", 826 | "category": "folderol" 827 | }, 828 | { 829 | "name": "b", 830 | "unicode": "1F171", 831 | "shortcode": "b", 832 | "description": "NEGATIVE SQUARED LATIN CAPITAL LETTER B", 833 | "category": "folderol" 834 | }, 835 | { 836 | "name": "o2", 837 | "unicode": "1F17E", 838 | "shortcode": "o2", 839 | "description": "NEGATIVE SQUARED LATIN CAPITAL LETTER O", 840 | "category": "folderol" 841 | }, 842 | { 843 | "name": "parking", 844 | "unicode": "1F17F", 845 | "shortcode": "parking", 846 | "description": "NEGATIVE SQUARED LATIN CAPITAL LETTER P", 847 | "category": "folderol" 848 | }, 849 | { 850 | "name": "ab", 851 | "unicode": "1F18E", 852 | "shortcode": "ab", 853 | "description": "NEGATIVE SQUARED AB", 854 | "category": "folderol" 855 | }, 856 | { 857 | "name": "cl", 858 | "unicode": "1F191", 859 | "shortcode": "cl", 860 | "description": "SQUARED CL", 861 | "category": "folderol" 862 | }, 863 | { 864 | "name": "cool", 865 | "unicode": "1F192", 866 | "shortcode": "cool", 867 | "description": "SQUARED COOL", 868 | "category": "folderol" 869 | }, 870 | { 871 | "name": "free", 872 | "unicode": "1F193", 873 | "shortcode": "free", 874 | "description": "SQUARED FREE", 875 | "category": "folderol" 876 | }, 877 | { 878 | "name": "id", 879 | "unicode": "1F194", 880 | "shortcode": "id", 881 | "description": "SQUARED ID", 882 | "category": "folderol" 883 | }, 884 | { 885 | "name": "new", 886 | "unicode": "1F195", 887 | "shortcode": "new", 888 | "description": "SQUARED NEW", 889 | "category": "folderol" 890 | }, 891 | { 892 | "name": "ng", 893 | "unicode": "1F196", 894 | "shortcode": "ng", 895 | "description": "SQUARED NG", 896 | "category": "folderol" 897 | }, 898 | { 899 | "name": "ok", 900 | "unicode": "1F197", 901 | "shortcode": "ok", 902 | "description": "SQUARED OK", 903 | "category": "folderol" 904 | }, 905 | { 906 | "name": "sos", 907 | "unicode": "1F198", 908 | "shortcode": "sos", 909 | "description": "SQUARED SOS", 910 | "category": "folderol" 911 | }, 912 | { 913 | "name": "up", 914 | "unicode": "1F199", 915 | "shortcode": "up", 916 | "description": "SQUARED UP WITH EXCLAMATION MARK", 917 | "category": "folderol" 918 | }, 919 | { 920 | "name": "vs", 921 | "unicode": "1F19A", 922 | "shortcode": "vs", 923 | "description": "SQUARED VS", 924 | "category": "folderol" 925 | }, 926 | { 927 | "name": "koko", 928 | "unicode": "1F201", 929 | "shortcode": "koko", 930 | "description": "SQUARED KATAKANA KOKO", 931 | "category": "folderol" 932 | }, 933 | { 934 | "name": "sa", 935 | "unicode": "1F202", 936 | "shortcode": "sa", 937 | "description": "SQUARED KATAKANA SA", 938 | "category": "folderol" 939 | }, 940 | { 941 | "name": "u7121", 942 | "unicode": "1F21A", 943 | "shortcode": "u7121", 944 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-7121", 945 | "category": "folderol" 946 | }, 947 | { 948 | "name": "u6307", 949 | "unicode": "1F22F", 950 | "shortcode": "u6307", 951 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-6307", 952 | "category": "folderol" 953 | }, 954 | { 955 | "name": "u7981", 956 | "unicode": "1F232", 957 | "shortcode": "u7981", 958 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-7981", 959 | "category": "folderol" 960 | }, 961 | { 962 | "name": "u7a7a", 963 | "unicode": "1F233", 964 | "shortcode": "u7a7a", 965 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-7A7A", 966 | "category": "folderol" 967 | }, 968 | { 969 | "name": "u5408", 970 | "unicode": "1F234", 971 | "shortcode": "u5408", 972 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-5408", 973 | "category": "folderol" 974 | }, 975 | { 976 | "name": "u6e80", 977 | "unicode": "1F235", 978 | "shortcode": "u6e80", 979 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-6E80", 980 | "category": "folderol" 981 | }, 982 | { 983 | "name": "u6709", 984 | "unicode": "1F236", 985 | "shortcode": "u6709", 986 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-6709", 987 | "category": "folderol" 988 | }, 989 | { 990 | "name": "u6708", 991 | "unicode": "1F237", 992 | "shortcode": "u6708", 993 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-6708", 994 | "category": "folderol" 995 | }, 996 | { 997 | "name": "u7533", 998 | "unicode": "1F238", 999 | "shortcode": "u7533", 1000 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-7533", 1001 | "category": "folderol" 1002 | }, 1003 | { 1004 | "name": "u5272", 1005 | "unicode": "1F239", 1006 | "shortcode": "u5272", 1007 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-5272", 1008 | "category": "folderol" 1009 | }, 1010 | { 1011 | "name": "u55b6", 1012 | "unicode": "1F23A", 1013 | "shortcode": "u55b6", 1014 | "description": "SQUARED CJK UNIFIED IDEOGRAPH-55B6", 1015 | "category": "folderol" 1016 | }, 1017 | { 1018 | "name": "ideograph_advantage", 1019 | "unicode": "1F250", 1020 | "shortcode": "ideograph_advantage", 1021 | "description": "CIRCLED IDEOGRAPH ADVANTAGE", 1022 | "category": "folderol" 1023 | }, 1024 | { 1025 | "name": "accept", 1026 | "unicode": "1F251", 1027 | "shortcode": "accept", 1028 | "description": "CIRCLED IDEOGRAPH ACCEPT", 1029 | "category": "folderol" 1030 | }, 1031 | { 1032 | "name": "cyclone", 1033 | "unicode": "1F300", 1034 | "shortcode": "cyclone", 1035 | "description": "CYCLONE", 1036 | "category": "thing" 1037 | }, 1038 | { 1039 | "name": "foggy", 1040 | "unicode": "1F301", 1041 | "shortcode": "foggy", 1042 | "description": "FOGGY", 1043 | "category": "thing" 1044 | }, 1045 | { 1046 | "name": "closed_umbrella", 1047 | "unicode": "1F302", 1048 | "shortcode": "closed_umbrella", 1049 | "description": "CLOSED UMBRELLA", 1050 | "category": "thing" 1051 | }, 1052 | { 1053 | "name": "night_with_stars", 1054 | "unicode": "1F303", 1055 | "shortcode": "night_with_stars", 1056 | "description": "NIGHT WITH STARS", 1057 | "category": "thing" 1058 | }, 1059 | { 1060 | "name": "sunrise_over_mountains", 1061 | "unicode": "1F304", 1062 | "shortcode": "sunrise_over_mountains", 1063 | "description": "SUNRISE OVER MOUNTAINS", 1064 | "category": "thing" 1065 | }, 1066 | { 1067 | "name": "sunrise", 1068 | "unicode": "1F305", 1069 | "shortcode": "sunrise", 1070 | "description": "SUNRISE", 1071 | "category": "thing" 1072 | }, 1073 | { 1074 | "name": "city_sunset", 1075 | "unicode": "1F306", 1076 | "shortcode": "city_sunset", 1077 | "description": "CITYSCAPE AT DUSK", 1078 | "category": "thing" 1079 | }, 1080 | { 1081 | "name": "city_sunrise", 1082 | "unicode": "1F307", 1083 | "shortcode": "city_sunrise", 1084 | "description": "SUNSET OVER BUILDINGS", 1085 | "category": "thing" 1086 | }, 1087 | { 1088 | "name": "rainbow", 1089 | "unicode": "1F308", 1090 | "shortcode": "rainbow", 1091 | "description": "RAINBOW", 1092 | "category": "thing" 1093 | }, 1094 | { 1095 | "name": "bridge_at_night", 1096 | "unicode": "1F309", 1097 | "shortcode": "bridge_at_night", 1098 | "description": "BRIDGE AT NIGHT", 1099 | "category": "thing" 1100 | }, 1101 | { 1102 | "name": "ocean", 1103 | "unicode": "1F30A", 1104 | "shortcode": "ocean", 1105 | "description": "WATER WAVE", 1106 | "category": "thing" 1107 | }, 1108 | { 1109 | "name": "volcano", 1110 | "unicode": "1F30B", 1111 | "shortcode": "volcano", 1112 | "description": "VOLCANO", 1113 | "category": "thing" 1114 | }, 1115 | { 1116 | "name": "milky_way", 1117 | "unicode": "1F30C", 1118 | "shortcode": "milky_way", 1119 | "description": "MILKY WAY", 1120 | "category": "thing" 1121 | }, 1122 | { 1123 | "name": "earth_africa", 1124 | "unicode": "1F30D", 1125 | "shortcode": "earth_africa", 1126 | "description": "EARTH GLOBE EUROPE-AFRICA", 1127 | "category": "thing" 1128 | }, 1129 | { 1130 | "name": "earth_americas", 1131 | "unicode": "1F30E", 1132 | "shortcode": "earth_americas", 1133 | "description": "EARTH GLOBE AMERICAS", 1134 | "category": "thing" 1135 | }, 1136 | { 1137 | "name": "earth_asia", 1138 | "unicode": "1F30F", 1139 | "shortcode": "earth_asia", 1140 | "description": "EARTH GLOBE ASIA-AUSTRALIA", 1141 | "category": "thing" 1142 | }, 1143 | { 1144 | "name": "globe_with_meridians", 1145 | "unicode": "1F310", 1146 | "shortcode": "globe_with_meridians", 1147 | "description": "GLOBE WITH MERIDIANS", 1148 | "category": "thing" 1149 | }, 1150 | { 1151 | "name": "new_moon", 1152 | "unicode": "1F311", 1153 | "shortcode": "new_moon", 1154 | "description": "NEW MOON SYMBOL", 1155 | "category": "thing" 1156 | }, 1157 | { 1158 | "name": "waxing_crescent_moon", 1159 | "unicode": "1F312", 1160 | "shortcode": "waxing_crescent_moon", 1161 | "description": "WAXING CRESCENT MOON SYMBOL", 1162 | "category": "thing" 1163 | }, 1164 | { 1165 | "name": "first_quarter_moon", 1166 | "unicode": "1F313", 1167 | "shortcode": "first_quarter_moon", 1168 | "description": "FIRST QUARTER MOON SYMBOL", 1169 | "category": "thing" 1170 | }, 1171 | { 1172 | "name": "moon", 1173 | "unicode": "1F314", 1174 | "shortcode": "moon", 1175 | "description": "WAXING GIBBOUS MOON SYMBOL", 1176 | "category": "thing" 1177 | }, 1178 | { 1179 | "name": "full_moon", 1180 | "unicode": "1F315", 1181 | "shortcode": "full_moon", 1182 | "description": "FULL MOON SYMBOL", 1183 | "category": "thing" 1184 | }, 1185 | { 1186 | "name": "waning_gibbous_moon", 1187 | "unicode": "1F316", 1188 | "shortcode": "waning_gibbous_moon", 1189 | "description": "WANING GIBBOUS MOON SYMBOL", 1190 | "category": "thing" 1191 | }, 1192 | { 1193 | "name": "last_quarter_moon", 1194 | "unicode": "1F317", 1195 | "shortcode": "last_quarter_moon", 1196 | "description": "LAST QUARTER MOON SYMBOL", 1197 | "category": "thing" 1198 | }, 1199 | { 1200 | "name": "waning_crescent_moon", 1201 | "unicode": "1F318", 1202 | "shortcode": "waning_crescent_moon", 1203 | "description": "WANING CRESCENT MOON SYMBOL", 1204 | "category": "thing" 1205 | }, 1206 | { 1207 | "name": "crescent_moon", 1208 | "unicode": "1F319", 1209 | "shortcode": "crescent_moon", 1210 | "description": "CRESCENT MOON", 1211 | "category": "thing" 1212 | }, 1213 | { 1214 | "name": "new_moon_with_face", 1215 | "unicode": "1F31A", 1216 | "shortcode": "new_moon_with_face", 1217 | "description": "NEW MOON WITH FACE", 1218 | "category": "thing" 1219 | }, 1220 | { 1221 | "name": "first_quarter_moon_with_face", 1222 | "unicode": "1F31B", 1223 | "shortcode": "first_quarter_moon_with_face", 1224 | "description": "FIRST QUARTER MOON WITH FACE", 1225 | "category": "thing" 1226 | }, 1227 | { 1228 | "name": "last_quarter_moon_with_face", 1229 | "unicode": "1F31C", 1230 | "shortcode": "last_quarter_moon_with_face", 1231 | "description": "LAST QUARTER MOON WITH FACE", 1232 | "category": "thing" 1233 | }, 1234 | { 1235 | "name": "full_moon_with_face", 1236 | "unicode": "1F31D", 1237 | "shortcode": "full_moon_with_face", 1238 | "description": "FULL MOON WITH FACE", 1239 | "category": "thing" 1240 | }, 1241 | { 1242 | "name": "sun_with_face", 1243 | "unicode": "1F31E", 1244 | "shortcode": "sun_with_face", 1245 | "description": "SUN WITH FACE", 1246 | "category": "thing" 1247 | }, 1248 | { 1249 | "name": "star2", 1250 | "unicode": "1F31F", 1251 | "shortcode": "star2", 1252 | "description": "GLOWING STAR", 1253 | "category": "thing" 1254 | }, 1255 | { 1256 | "name": "stars", 1257 | "unicode": "1F320", 1258 | "shortcode": "stars", 1259 | "description": "SHOOTING STAR", 1260 | "category": "thing" 1261 | }, 1262 | { 1263 | "name": "chestnut", 1264 | "unicode": "1F330", 1265 | "shortcode": "chestnut", 1266 | "description": "CHESTNUT", 1267 | "category": "thing" 1268 | }, 1269 | { 1270 | "name": "seedling", 1271 | "unicode": "1F331", 1272 | "shortcode": "seedling", 1273 | "description": "SEEDLING", 1274 | "category": "thing" 1275 | }, 1276 | { 1277 | "name": "evergreen_tree", 1278 | "unicode": "1F332", 1279 | "shortcode": "evergreen_tree", 1280 | "description": "EVERGREEN TREE", 1281 | "category": "thing" 1282 | }, 1283 | { 1284 | "name": "deciduous_tree", 1285 | "unicode": "1F333", 1286 | "shortcode": "deciduous_tree", 1287 | "description": "DECIDUOUS TREE", 1288 | "category": "thing" 1289 | }, 1290 | { 1291 | "name": "palm_tree", 1292 | "unicode": "1F334", 1293 | "shortcode": "palm_tree", 1294 | "description": "PALM TREE", 1295 | "category": "thing" 1296 | }, 1297 | { 1298 | "name": "cactus", 1299 | "unicode": "1F335", 1300 | "shortcode": "cactus", 1301 | "description": "CACTUS", 1302 | "category": "thing" 1303 | }, 1304 | { 1305 | "name": "tulip", 1306 | "unicode": "1F337", 1307 | "shortcode": "tulip", 1308 | "description": "TULIP", 1309 | "category": "thing" 1310 | }, 1311 | { 1312 | "name": "cherry_blossom", 1313 | "unicode": "1F338", 1314 | "shortcode": "cherry_blossom", 1315 | "description": "CHERRY BLOSSOM", 1316 | "category": "thing" 1317 | }, 1318 | { 1319 | "name": "rose", 1320 | "unicode": "1F339", 1321 | "shortcode": "rose", 1322 | "description": "ROSE", 1323 | "category": "thing" 1324 | }, 1325 | { 1326 | "name": "hibiscus", 1327 | "unicode": "1F33A", 1328 | "shortcode": "hibiscus", 1329 | "description": "HIBISCUS", 1330 | "category": "thing" 1331 | }, 1332 | { 1333 | "name": "sunflower", 1334 | "unicode": "1F33B", 1335 | "shortcode": "sunflower", 1336 | "description": "SUNFLOWER", 1337 | "category": "thing" 1338 | }, 1339 | { 1340 | "name": "blossom", 1341 | "unicode": "1F33C", 1342 | "shortcode": "blossom", 1343 | "description": "BLOSSOM", 1344 | "category": "thing" 1345 | }, 1346 | { 1347 | "name": "corn", 1348 | "unicode": "1F33D", 1349 | "shortcode": "corn", 1350 | "description": "EAR OF MAIZE", 1351 | "category": "thing" 1352 | }, 1353 | { 1354 | "name": "ear_of_rice", 1355 | "unicode": "1F33E", 1356 | "shortcode": "ear_of_rice", 1357 | "description": "EAR OF RICE", 1358 | "category": "thing" 1359 | }, 1360 | { 1361 | "name": "herb", 1362 | "unicode": "1F33F", 1363 | "shortcode": "herb", 1364 | "description": "HERB", 1365 | "category": "thing" 1366 | }, 1367 | { 1368 | "name": "four_leaf_clover", 1369 | "unicode": "1F340", 1370 | "shortcode": "four_leaf_clover", 1371 | "description": "FOUR LEAF CLOVER", 1372 | "category": "thing" 1373 | }, 1374 | { 1375 | "name": "maple_leaf", 1376 | "unicode": "1F341", 1377 | "shortcode": "maple_leaf", 1378 | "description": "MAPLE LEAF", 1379 | "category": "thing" 1380 | }, 1381 | { 1382 | "name": "fallen_leaf", 1383 | "unicode": "1F342", 1384 | "shortcode": "fallen_leaf", 1385 | "description": "FALLEN LEAF", 1386 | "category": "thing" 1387 | }, 1388 | { 1389 | "name": "leaves", 1390 | "unicode": "1F343", 1391 | "shortcode": "leaves", 1392 | "description": "LEAF FLUTTERING IN WIND", 1393 | "category": "thing" 1394 | }, 1395 | { 1396 | "name": "mushroom", 1397 | "unicode": "1F344", 1398 | "shortcode": "mushroom", 1399 | "description": "MUSHROOM", 1400 | "category": "food" 1401 | }, 1402 | { 1403 | "name": "tomato", 1404 | "unicode": "1F345", 1405 | "shortcode": "tomato", 1406 | "description": "TOMATO", 1407 | "category": "food" 1408 | }, 1409 | { 1410 | "name": "eggplant", 1411 | "unicode": "1F346", 1412 | "shortcode": "eggplant", 1413 | "description": "AUBERGINE", 1414 | "category": "food" 1415 | }, 1416 | { 1417 | "name": "grapes", 1418 | "unicode": "1F347", 1419 | "shortcode": "grapes", 1420 | "description": "GRAPES", 1421 | "category": "food" 1422 | }, 1423 | { 1424 | "name": "melon", 1425 | "unicode": "1F348", 1426 | "shortcode": "melon", 1427 | "description": "MELON", 1428 | "category": "food" 1429 | }, 1430 | { 1431 | "name": "watermelon", 1432 | "unicode": "1F349", 1433 | "shortcode": "watermelon", 1434 | "description": "WATERMELON", 1435 | "category": "food" 1436 | }, 1437 | { 1438 | "name": "tangerine", 1439 | "unicode": "1F34A", 1440 | "shortcode": "tangerine", 1441 | "description": "TANGERINE", 1442 | "category": "food" 1443 | }, 1444 | { 1445 | "name": "lemon", 1446 | "unicode": "1F34B", 1447 | "shortcode": "lemon", 1448 | "description": "LEMON", 1449 | "category": "food" 1450 | }, 1451 | { 1452 | "name": "banana", 1453 | "unicode": "1F34C", 1454 | "shortcode": "banana", 1455 | "description": "BANANA", 1456 | "category": "food" 1457 | }, 1458 | { 1459 | "name": "pineapple", 1460 | "unicode": "1F34D", 1461 | "shortcode": "pineapple", 1462 | "description": "PINEAPPLE", 1463 | "category": "food" 1464 | }, 1465 | { 1466 | "name": "apple", 1467 | "unicode": "1F34E", 1468 | "shortcode": "apple", 1469 | "description": "RED APPLE", 1470 | "category": "food" 1471 | }, 1472 | { 1473 | "name": "green_apple", 1474 | "unicode": "1F34F", 1475 | "shortcode": "green_apple", 1476 | "description": "GREEN APPLE", 1477 | "category": "food" 1478 | }, 1479 | { 1480 | "name": "pear", 1481 | "unicode": "1F350", 1482 | "shortcode": "pear", 1483 | "description": "PEAR", 1484 | "category": "food" 1485 | }, 1486 | { 1487 | "name": "peach", 1488 | "unicode": "1F351", 1489 | "shortcode": "peach", 1490 | "description": "PEACH", 1491 | "category": "food" 1492 | }, 1493 | { 1494 | "name": "cherries", 1495 | "unicode": "1F352", 1496 | "shortcode": "cherries", 1497 | "description": "CHERRIES", 1498 | "category": "food" 1499 | }, 1500 | { 1501 | "name": "strawberry", 1502 | "unicode": "1F353", 1503 | "shortcode": "strawberry", 1504 | "description": "STRAWBERRY", 1505 | "category": "food" 1506 | }, 1507 | { 1508 | "name": "hamburger", 1509 | "unicode": "1F354", 1510 | "shortcode": "hamburger", 1511 | "description": "HAMBURGER", 1512 | "category": "food" 1513 | }, 1514 | { 1515 | "name": "pizza", 1516 | "unicode": "1F355", 1517 | "shortcode": "pizza", 1518 | "description": "SLICE OF PIZZA", 1519 | "category": "food" 1520 | }, 1521 | { 1522 | "name": "meat_on_bone", 1523 | "unicode": "1F356", 1524 | "shortcode": "meat_on_bone", 1525 | "description": "MEAT ON BONE", 1526 | "category": "food" 1527 | }, 1528 | { 1529 | "name": "poultry_leg", 1530 | "unicode": "1F357", 1531 | "shortcode": "poultry_leg", 1532 | "description": "POULTRY LEG", 1533 | "category": "food" 1534 | }, 1535 | { 1536 | "name": "rice_cracker", 1537 | "unicode": "1F358", 1538 | "shortcode": "rice_cracker", 1539 | "description": "RICE CRACKER", 1540 | "category": "food" 1541 | }, 1542 | { 1543 | "name": "rice_ball", 1544 | "unicode": "1F359", 1545 | "shortcode": "rice_ball", 1546 | "description": "RICE BALL", 1547 | "category": "food" 1548 | }, 1549 | { 1550 | "name": "rice", 1551 | "unicode": "1F35A", 1552 | "shortcode": "rice", 1553 | "description": "COOKED RICE", 1554 | "category": "food" 1555 | }, 1556 | { 1557 | "name": "curry", 1558 | "unicode": "1F35B", 1559 | "shortcode": "curry", 1560 | "description": "CURRY AND RICE", 1561 | "category": "food" 1562 | }, 1563 | { 1564 | "name": "ramen", 1565 | "unicode": "1F35C", 1566 | "shortcode": "ramen", 1567 | "description": "STEAMING BOWL", 1568 | "category": "food" 1569 | }, 1570 | { 1571 | "name": "spaghetti", 1572 | "unicode": "1F35D", 1573 | "shortcode": "spaghetti", 1574 | "description": "SPAGHETTI", 1575 | "category": "food" 1576 | }, 1577 | { 1578 | "name": "bread", 1579 | "unicode": "1F35E", 1580 | "shortcode": "bread", 1581 | "description": "BREAD", 1582 | "category": "food" 1583 | }, 1584 | { 1585 | "name": "fries", 1586 | "unicode": "1F35F", 1587 | "shortcode": "fries", 1588 | "description": "FRENCH FRIES", 1589 | "category": "food" 1590 | }, 1591 | { 1592 | "name": "sweet_potato", 1593 | "unicode": "1F360", 1594 | "shortcode": "sweet_potato", 1595 | "description": "ROASTED SWEET POTATO", 1596 | "category": "food" 1597 | }, 1598 | { 1599 | "name": "dango", 1600 | "unicode": "1F361", 1601 | "shortcode": "dango", 1602 | "description": "DANGO", 1603 | "category": "food" 1604 | }, 1605 | { 1606 | "name": "oden", 1607 | "unicode": "1F362", 1608 | "shortcode": "oden", 1609 | "description": "ODEN", 1610 | "category": "food" 1611 | }, 1612 | { 1613 | "name": "sushi", 1614 | "unicode": "1F363", 1615 | "shortcode": "sushi", 1616 | "description": "SUSHI", 1617 | "category": "food" 1618 | }, 1619 | { 1620 | "name": "fried_shrimp", 1621 | "unicode": "1F364", 1622 | "shortcode": "fried_shrimp", 1623 | "description": "FRIED SHRIMP", 1624 | "category": "food" 1625 | }, 1626 | { 1627 | "name": "fish_cake", 1628 | "unicode": "1F365", 1629 | "shortcode": "fish_cake", 1630 | "description": "FISH CAKE WITH SWIRL DESIGN", 1631 | "category": "food" 1632 | }, 1633 | { 1634 | "name": "icecream", 1635 | "unicode": "1F366", 1636 | "shortcode": "icecream", 1637 | "description": "SOFT ICE CREAM", 1638 | "category": "food" 1639 | }, 1640 | { 1641 | "name": "shaved_ice", 1642 | "unicode": "1F367", 1643 | "shortcode": "shaved_ice", 1644 | "description": "SHAVED ICE", 1645 | "category": "food" 1646 | }, 1647 | { 1648 | "name": "ice_cream", 1649 | "unicode": "1F368", 1650 | "shortcode": "ice_cream", 1651 | "description": "ICE CREAM", 1652 | "category": "food" 1653 | }, 1654 | { 1655 | "name": "doughnut", 1656 | "unicode": "1F369", 1657 | "shortcode": "doughnut", 1658 | "description": "DOUGHNUT", 1659 | "category": "food" 1660 | }, 1661 | { 1662 | "name": "cookie", 1663 | "unicode": "1F36A", 1664 | "shortcode": "cookie", 1665 | "description": "COOKIE", 1666 | "category": "food" 1667 | }, 1668 | { 1669 | "name": "chocolate_bar", 1670 | "unicode": "1F36B", 1671 | "shortcode": "chocolate_bar", 1672 | "description": "CHOCOLATE BAR", 1673 | "category": "food" 1674 | }, 1675 | { 1676 | "name": "candy", 1677 | "unicode": "1F36C", 1678 | "shortcode": "candy", 1679 | "description": "CANDY", 1680 | "category": "food" 1681 | }, 1682 | { 1683 | "name": "lollipop", 1684 | "unicode": "1F36D", 1685 | "shortcode": "lollipop", 1686 | "description": "LOLLIPOP", 1687 | "category": "food" 1688 | }, 1689 | { 1690 | "name": "custard", 1691 | "unicode": "1F36E", 1692 | "shortcode": "custard", 1693 | "description": "CUSTARD", 1694 | "category": "food" 1695 | }, 1696 | { 1697 | "name": "honey_pot", 1698 | "unicode": "1F36F", 1699 | "shortcode": "honey_pot", 1700 | "description": "HONEY POT", 1701 | "category": "food" 1702 | }, 1703 | { 1704 | "name": "cake", 1705 | "unicode": "1F370", 1706 | "shortcode": "cake", 1707 | "description": "SHORTCAKE", 1708 | "category": "food" 1709 | }, 1710 | { 1711 | "name": "bento", 1712 | "unicode": "1F371", 1713 | "shortcode": "bento", 1714 | "description": "BENTO BOX", 1715 | "category": "food" 1716 | }, 1717 | { 1718 | "name": "stew", 1719 | "unicode": "1F372", 1720 | "shortcode": "stew", 1721 | "description": "POT OF FOOD", 1722 | "category": "food" 1723 | }, 1724 | { 1725 | "name": "egg", 1726 | "unicode": "1F373", 1727 | "shortcode": "egg", 1728 | "description": "COOKING", 1729 | "category": "food" 1730 | }, 1731 | { 1732 | "name": "fork_and_knife", 1733 | "unicode": "1F374", 1734 | "shortcode": "fork_and_knife", 1735 | "description": "FORK AND KNIFE", 1736 | "category": "food" 1737 | }, 1738 | { 1739 | "name": "tea", 1740 | "unicode": "1F375", 1741 | "shortcode": "tea", 1742 | "description": "TEACUP WITHOUT HANDLE", 1743 | "category": "food" 1744 | }, 1745 | { 1746 | "name": "sake", 1747 | "unicode": "1F376", 1748 | "shortcode": "sake", 1749 | "description": "SAKE BOTTLE AND CUP", 1750 | "category": "food" 1751 | }, 1752 | { 1753 | "name": "wine_glass", 1754 | "unicode": "1F377", 1755 | "shortcode": "wine_glass", 1756 | "description": "WINE GLASS", 1757 | "category": "food" 1758 | }, 1759 | { 1760 | "name": "cocktail", 1761 | "unicode": "1F378", 1762 | "shortcode": "cocktail", 1763 | "description": "COCKTAIL GLASS", 1764 | "category": "food" 1765 | }, 1766 | { 1767 | "name": "tropical_drink", 1768 | "unicode": "1F379", 1769 | "shortcode": "tropical_drink", 1770 | "description": "TROPICAL DRINK", 1771 | "category": "food" 1772 | }, 1773 | { 1774 | "name": "beer", 1775 | "unicode": "1F37A", 1776 | "shortcode": "beer", 1777 | "description": "BEER MUG", 1778 | "category": "food" 1779 | }, 1780 | { 1781 | "name": "beers", 1782 | "unicode": "1F37B", 1783 | "shortcode": "beers", 1784 | "description": "CLINKING BEER MUGS", 1785 | "category": "food" 1786 | }, 1787 | { 1788 | "name": "baby_bottle", 1789 | "unicode": "1F37C", 1790 | "shortcode": "baby_bottle", 1791 | "description": "BABY BOTTLE", 1792 | "category": "food" 1793 | }, 1794 | { 1795 | "name": "ribbon", 1796 | "unicode": "1F380", 1797 | "shortcode": "ribbon", 1798 | "description": "RIBBON", 1799 | "category": "thing" 1800 | }, 1801 | { 1802 | "name": "gift", 1803 | "unicode": "1F381", 1804 | "shortcode": "gift", 1805 | "description": "WRAPPED PRESENT", 1806 | "category": "thing" 1807 | }, 1808 | { 1809 | "name": "birthday", 1810 | "unicode": "1F382", 1811 | "shortcode": "birthday", 1812 | "description": "BIRTHDAY CAKE", 1813 | "category": "thing" 1814 | }, 1815 | { 1816 | "name": "jack_o_lantern", 1817 | "unicode": "1F383", 1818 | "shortcode": "jack_o_lantern", 1819 | "description": "JACK-O-LANTERN", 1820 | "category": "thing" 1821 | }, 1822 | { 1823 | "name": "christmas_tree", 1824 | "unicode": "1F384", 1825 | "shortcode": "christmas_tree", 1826 | "description": "CHRISTMAS TREE", 1827 | "category": "thing" 1828 | }, 1829 | { 1830 | "name": "santa", 1831 | "unicode": "1F385", 1832 | "shortcode": "santa", 1833 | "description": "FATHER CHRISTMAS", 1834 | "category": "thing" 1835 | }, 1836 | { 1837 | "name": "fireworks", 1838 | "unicode": "1F386", 1839 | "shortcode": "fireworks", 1840 | "description": "FIREWORKS", 1841 | "category": "thing" 1842 | }, 1843 | { 1844 | "name": "sparkler", 1845 | "unicode": "1F387", 1846 | "shortcode": "sparkler", 1847 | "description": "FIREWORK SPARKLER", 1848 | "category": "thing" 1849 | }, 1850 | { 1851 | "name": "balloon", 1852 | "unicode": "1F388", 1853 | "shortcode": "balloon", 1854 | "description": "BALLOON", 1855 | "category": "thing" 1856 | }, 1857 | { 1858 | "name": "tada", 1859 | "unicode": "1F389", 1860 | "shortcode": "tada", 1861 | "description": "PARTY POPPER", 1862 | "category": "thing" 1863 | }, 1864 | { 1865 | "name": "confetti_ball", 1866 | "unicode": "1F38A", 1867 | "shortcode": "confetti_ball", 1868 | "description": "CONFETTI BALL", 1869 | "category": "thing" 1870 | }, 1871 | { 1872 | "name": "tanabata_tree", 1873 | "unicode": "1F38B", 1874 | "shortcode": "tanabata_tree", 1875 | "description": "TANABATA TREE", 1876 | "category": "thing" 1877 | }, 1878 | { 1879 | "name": "crossed_flags", 1880 | "unicode": "1F38C", 1881 | "shortcode": "crossed_flags", 1882 | "description": "CROSSED FLAGS", 1883 | "category": "thing" 1884 | }, 1885 | { 1886 | "name": "bamboo", 1887 | "unicode": "1F38D", 1888 | "shortcode": "bamboo", 1889 | "description": "PINE DECORATION", 1890 | "category": "thing" 1891 | }, 1892 | { 1893 | "name": "dolls", 1894 | "unicode": "1F38E", 1895 | "shortcode": "dolls", 1896 | "description": "JAPANESE DOLLS", 1897 | "category": "thing" 1898 | }, 1899 | { 1900 | "name": "flags", 1901 | "unicode": "1F38F", 1902 | "shortcode": "flags", 1903 | "description": "CARP STREAMER", 1904 | "category": "thing" 1905 | }, 1906 | { 1907 | "name": "wind_chime", 1908 | "unicode": "1F390", 1909 | "shortcode": "wind_chime", 1910 | "description": "WIND CHIME", 1911 | "category": "thing" 1912 | }, 1913 | { 1914 | "name": "rice_scene", 1915 | "unicode": "1F391", 1916 | "shortcode": "rice_scene", 1917 | "description": "MOON VIEWING CEREMONY", 1918 | "category": "thing" 1919 | }, 1920 | { 1921 | "name": "school_satchel", 1922 | "unicode": "1F392", 1923 | "shortcode": "school_satchel", 1924 | "description": "SCHOOL SATCHEL", 1925 | "category": "thing" 1926 | }, 1927 | { 1928 | "name": "mortar_board", 1929 | "unicode": "1F393", 1930 | "shortcode": "mortar_board", 1931 | "description": "GRADUATION CAP", 1932 | "category": "thing" 1933 | }, 1934 | { 1935 | "name": "carousel_horse", 1936 | "unicode": "1F3A0", 1937 | "shortcode": "carousel_horse", 1938 | "description": "CAROUSEL HORSE", 1939 | "category": "thing" 1940 | }, 1941 | { 1942 | "name": "ferris_wheel", 1943 | "unicode": "1F3A1", 1944 | "shortcode": "ferris_wheel", 1945 | "description": "FERRIS WHEEL", 1946 | "category": "thing" 1947 | }, 1948 | { 1949 | "name": "roller_coaster", 1950 | "unicode": "1F3A2", 1951 | "shortcode": "roller_coaster", 1952 | "description": "ROLLER COASTER", 1953 | "category": "thing" 1954 | }, 1955 | { 1956 | "name": "fishing_pole_and_fish", 1957 | "unicode": "1F3A3", 1958 | "shortcode": "fishing_pole_and_fish", 1959 | "description": "FISHING POLE AND FISH", 1960 | "category": "thing" 1961 | }, 1962 | { 1963 | "name": "microphone", 1964 | "unicode": "1F3A4", 1965 | "shortcode": "microphone", 1966 | "description": "MICROPHONE", 1967 | "category": "thing" 1968 | }, 1969 | { 1970 | "name": "movie_camera", 1971 | "unicode": "1F3A5", 1972 | "shortcode": "movie_camera", 1973 | "description": "MOVIE CAMERA", 1974 | "category": "thing" 1975 | }, 1976 | { 1977 | "name": "cinema", 1978 | "unicode": "1F3A6", 1979 | "shortcode": "cinema", 1980 | "description": "CINEMA", 1981 | "category": "thing" 1982 | }, 1983 | { 1984 | "name": "headphones", 1985 | "unicode": "1F3A7", 1986 | "shortcode": "headphones", 1987 | "description": "HEADPHONE", 1988 | "category": "thing" 1989 | }, 1990 | { 1991 | "name": "art", 1992 | "unicode": "1F3A8", 1993 | "shortcode": "art", 1994 | "description": "ARTIST PALETTE", 1995 | "category": "thing" 1996 | }, 1997 | { 1998 | "name": "tophat", 1999 | "unicode": "1F3A9", 2000 | "shortcode": "tophat", 2001 | "description": "TOP HAT", 2002 | "category": "thing" 2003 | }, 2004 | { 2005 | "name": "circus_tent", 2006 | "unicode": "1F3AA", 2007 | "shortcode": "circus_tent", 2008 | "description": "CIRCUS TENT", 2009 | "category": "thing" 2010 | }, 2011 | { 2012 | "name": "ticket", 2013 | "unicode": "1F3AB", 2014 | "shortcode": "ticket", 2015 | "description": "TICKET", 2016 | "category": "thing" 2017 | }, 2018 | { 2019 | "name": "clapper", 2020 | "unicode": "1F3AC", 2021 | "shortcode": "clapper", 2022 | "description": "CLAPPER BOARD", 2023 | "category": "thing" 2024 | }, 2025 | { 2026 | "name": "performing_arts", 2027 | "unicode": "1F3AD", 2028 | "shortcode": "performing_arts", 2029 | "description": "PERFORMING ARTS", 2030 | "category": "thing" 2031 | }, 2032 | { 2033 | "name": "video_game", 2034 | "unicode": "1F3AE", 2035 | "shortcode": "video_game", 2036 | "description": "VIDEO GAME", 2037 | "category": "thing" 2038 | }, 2039 | { 2040 | "name": "dart", 2041 | "unicode": "1F3AF", 2042 | "shortcode": "dart", 2043 | "description": "DIRECT HIT", 2044 | "category": "thing" 2045 | }, 2046 | { 2047 | "name": "slot_machine", 2048 | "unicode": "1F3B0", 2049 | "shortcode": "slot_machine", 2050 | "description": "SLOT MACHINE", 2051 | "category": "thing" 2052 | }, 2053 | { 2054 | "name": "8ball", 2055 | "unicode": "1F3B1", 2056 | "shortcode": "8ball", 2057 | "description": "BILLIARDS", 2058 | "category": "thing" 2059 | }, 2060 | { 2061 | "name": "game_die", 2062 | "unicode": "1F3B2", 2063 | "shortcode": "game_die", 2064 | "description": "GAME DIE", 2065 | "category": "thing" 2066 | }, 2067 | { 2068 | "name": "bowling", 2069 | "unicode": "1F3B3", 2070 | "shortcode": "bowling", 2071 | "description": "BOWLING", 2072 | "category": "thing" 2073 | }, 2074 | { 2075 | "name": "flower_playing_cards", 2076 | "unicode": "1F3B4", 2077 | "shortcode": "flower_playing_cards", 2078 | "description": "FLOWER PLAYING CARDS", 2079 | "category": "thing" 2080 | }, 2081 | { 2082 | "name": "musical_note", 2083 | "unicode": "1F3B5", 2084 | "shortcode": "musical_note", 2085 | "description": "MUSICAL NOTE", 2086 | "category": "thing" 2087 | }, 2088 | { 2089 | "name": "notes", 2090 | "unicode": "1F3B6", 2091 | "shortcode": "notes", 2092 | "description": "MULTIPLE MUSICAL NOTES", 2093 | "category": "thing" 2094 | }, 2095 | { 2096 | "name": "saxophone", 2097 | "unicode": "1F3B7", 2098 | "shortcode": "saxophone", 2099 | "description": "SAXOPHONE", 2100 | "category": "thing" 2101 | }, 2102 | { 2103 | "name": "guitar", 2104 | "unicode": "1F3B8", 2105 | "shortcode": "guitar", 2106 | "description": "GUITAR", 2107 | "category": "thing" 2108 | }, 2109 | { 2110 | "name": "musical_keyboard", 2111 | "unicode": "1F3B9", 2112 | "shortcode": "musical_keyboard", 2113 | "description": "MUSICAL KEYBOARD", 2114 | "category": "thing" 2115 | }, 2116 | { 2117 | "name": "trumpet", 2118 | "unicode": "1F3BA", 2119 | "shortcode": "trumpet", 2120 | "description": "TRUMPET", 2121 | "category": "thing" 2122 | }, 2123 | { 2124 | "name": "violin", 2125 | "unicode": "1F3BB", 2126 | "shortcode": "violin", 2127 | "description": "VIOLIN", 2128 | "category": "thing" 2129 | }, 2130 | { 2131 | "name": "musical_score", 2132 | "unicode": "1F3BC", 2133 | "shortcode": "musical_score", 2134 | "description": "MUSICAL SCORE", 2135 | "category": "thing" 2136 | }, 2137 | { 2138 | "name": "running_shirt_with_sash", 2139 | "unicode": "1F3BD", 2140 | "shortcode": "running_shirt_with_sash", 2141 | "description": "RUNNING SHIRT WITH SASH", 2142 | "category": "thing" 2143 | }, 2144 | { 2145 | "name": "tennis", 2146 | "unicode": "1F3BE", 2147 | "shortcode": "tennis", 2148 | "description": "TENNIS RACQUET AND BALL", 2149 | "category": "thing" 2150 | }, 2151 | { 2152 | "name": "ski", 2153 | "unicode": "1F3BF", 2154 | "shortcode": "ski", 2155 | "description": "SKI AND SKI BOOT", 2156 | "category": "thing" 2157 | }, 2158 | { 2159 | "name": "basketball", 2160 | "unicode": "1F3C0", 2161 | "shortcode": "basketball", 2162 | "description": "BASKETBALL AND HOOP", 2163 | "category": "thing" 2164 | }, 2165 | { 2166 | "name": "checkered_flag", 2167 | "unicode": "1F3C1", 2168 | "shortcode": "checkered_flag", 2169 | "description": "CHEQUERED FLAG", 2170 | "category": "thing" 2171 | }, 2172 | { 2173 | "name": "snowboarder", 2174 | "unicode": "1F3C2", 2175 | "shortcode": "snowboarder", 2176 | "description": "SNOWBOARDER", 2177 | "category": "people" 2178 | }, 2179 | { 2180 | "name": "runner", 2181 | "unicode": "1F3C3", 2182 | "shortcode": "runner", 2183 | "description": "RUNNER", 2184 | "category": "people" 2185 | }, 2186 | { 2187 | "name": "surfer", 2188 | "unicode": "1F3C4", 2189 | "shortcode": "surfer", 2190 | "description": "SURFER", 2191 | "category": "people" 2192 | }, 2193 | { 2194 | "name": "trophy", 2195 | "unicode": "1F3C6", 2196 | "shortcode": "trophy", 2197 | "description": "TROPHY", 2198 | "category": "people" 2199 | }, 2200 | { 2201 | "name": "horse_racing", 2202 | "unicode": "1F3C7", 2203 | "shortcode": "horse_racing", 2204 | "description": "HORSE RACING", 2205 | "category": "people" 2206 | }, 2207 | { 2208 | "name": "football", 2209 | "unicode": "1F3C8", 2210 | "shortcode": "football", 2211 | "description": "AMERICAN FOOTBALL", 2212 | "category": "people" 2213 | }, 2214 | { 2215 | "name": "rugby_football", 2216 | "unicode": "1F3C9", 2217 | "shortcode": "rugby_football", 2218 | "description": "RUGBY FOOTBALL", 2219 | "category": "people" 2220 | }, 2221 | { 2222 | "name": "swimmer", 2223 | "unicode": "1F3CA", 2224 | "shortcode": "swimmer", 2225 | "description": "SWIMMER", 2226 | "category": "people" 2227 | }, 2228 | { 2229 | "name": "house", 2230 | "unicode": "1F3E0", 2231 | "shortcode": "house", 2232 | "description": "HOUSE BUILDING", 2233 | "category": "travel" 2234 | }, 2235 | { 2236 | "name": "house_with_garden", 2237 | "unicode": "1F3E1", 2238 | "shortcode": "house_with_garden", 2239 | "description": "HOUSE WITH GARDEN", 2240 | "category": "travel" 2241 | }, 2242 | { 2243 | "name": "office", 2244 | "unicode": "1F3E2", 2245 | "shortcode": "office", 2246 | "description": "OFFICE BUILDING", 2247 | "category": "travel" 2248 | }, 2249 | { 2250 | "name": "post_office", 2251 | "unicode": "1F3E3", 2252 | "shortcode": "post_office", 2253 | "description": "JAPANESE POST OFFICE", 2254 | "category": "travel" 2255 | }, 2256 | { 2257 | "name": "european_post_office", 2258 | "unicode": "1F3E4", 2259 | "shortcode": "european_post_office", 2260 | "description": "EUROPEAN POST OFFICE", 2261 | "category": "travel" 2262 | }, 2263 | { 2264 | "name": "hospital", 2265 | "unicode": "1F3E5", 2266 | "shortcode": "hospital", 2267 | "description": "HOSPITAL", 2268 | "category": "travel" 2269 | }, 2270 | { 2271 | "name": "bank", 2272 | "unicode": "1F3E6", 2273 | "shortcode": "bank", 2274 | "description": "BANK", 2275 | "category": "travel" 2276 | }, 2277 | { 2278 | "name": "atm", 2279 | "unicode": "1F3E7", 2280 | "shortcode": "atm", 2281 | "description": "AUTOMATED TELLER MACHINE", 2282 | "category": "travel" 2283 | }, 2284 | { 2285 | "name": "hotel", 2286 | "unicode": "1F3E8", 2287 | "shortcode": "hotel", 2288 | "description": "HOTEL", 2289 | "category": "travel" 2290 | }, 2291 | { 2292 | "name": "love_hotel", 2293 | "unicode": "1F3E9", 2294 | "shortcode": "love_hotel", 2295 | "description": "LOVE HOTEL", 2296 | "category": "travel" 2297 | }, 2298 | { 2299 | "name": "convenience_store", 2300 | "unicode": "1F3EA", 2301 | "shortcode": "convenience_store", 2302 | "description": "CONVENIENCE STORE", 2303 | "category": "travel" 2304 | }, 2305 | { 2306 | "name": "school", 2307 | "unicode": "1F3EB", 2308 | "shortcode": "school", 2309 | "description": "SCHOOL", 2310 | "category": "travel" 2311 | }, 2312 | { 2313 | "name": "department_store", 2314 | "unicode": "1F3EC", 2315 | "shortcode": "department_store", 2316 | "description": "DEPARTMENT STORE", 2317 | "category": "travel" 2318 | }, 2319 | { 2320 | "name": "factory", 2321 | "unicode": "1F3ED", 2322 | "shortcode": "factory", 2323 | "description": "FACTORY", 2324 | "category": "travel" 2325 | }, 2326 | { 2327 | "name": "izakaya_lantern", 2328 | "unicode": "1F3EE", 2329 | "shortcode": "izakaya_lantern", 2330 | "description": "IZAKAYA LANTERN", 2331 | "category": "travel" 2332 | }, 2333 | { 2334 | "name": "japanese_castle", 2335 | "unicode": "1F3EF", 2336 | "shortcode": "japanese_castle", 2337 | "description": "JAPANESE CASTLE", 2338 | "category": "travel" 2339 | }, 2340 | { 2341 | "name": "european_castle", 2342 | "unicode": "1F3F0", 2343 | "shortcode": "european_castle", 2344 | "description": "EUROPEAN CASTLE", 2345 | "category": "travel" 2346 | }, 2347 | { 2348 | "name": "rat", 2349 | "unicode": "1F400", 2350 | "shortcode": "rat", 2351 | "description": "RAT", 2352 | "category": "animal" 2353 | }, 2354 | { 2355 | "name": "mouse2", 2356 | "unicode": "1F401", 2357 | "shortcode": "mouse2", 2358 | "description": "MOUSE", 2359 | "category": "animal" 2360 | }, 2361 | { 2362 | "name": "ox", 2363 | "unicode": "1F402", 2364 | "shortcode": "ox", 2365 | "description": "OX", 2366 | "category": "animal" 2367 | }, 2368 | { 2369 | "name": "water_buffalo", 2370 | "unicode": "1F403", 2371 | "shortcode": "water_buffalo", 2372 | "description": "WATER BUFFALO", 2373 | "category": "animal" 2374 | }, 2375 | { 2376 | "name": "cow2", 2377 | "unicode": "1F404", 2378 | "shortcode": "cow2", 2379 | "description": "COW", 2380 | "category": "animal" 2381 | }, 2382 | { 2383 | "name": "tiger2", 2384 | "unicode": "1F405", 2385 | "shortcode": "tiger2", 2386 | "description": "TIGER", 2387 | "category": "animal" 2388 | }, 2389 | { 2390 | "name": "leopard", 2391 | "unicode": "1F406", 2392 | "shortcode": "leopard", 2393 | "description": "LEOPARD", 2394 | "category": "animal" 2395 | }, 2396 | { 2397 | "name": "rabbit2", 2398 | "unicode": "1F407", 2399 | "shortcode": "rabbit2", 2400 | "description": "RABBIT", 2401 | "category": "animal" 2402 | }, 2403 | { 2404 | "name": "cat2", 2405 | "unicode": "1F408", 2406 | "shortcode": "cat2", 2407 | "description": "CAT", 2408 | "category": "animal" 2409 | }, 2410 | { 2411 | "name": "dragon", 2412 | "unicode": "1F409", 2413 | "shortcode": "dragon", 2414 | "description": "DRAGON", 2415 | "category": "animal" 2416 | }, 2417 | { 2418 | "name": "crocodile", 2419 | "unicode": "1F40A", 2420 | "shortcode": "crocodile", 2421 | "description": "CROCODILE", 2422 | "category": "animal" 2423 | }, 2424 | { 2425 | "name": "whale2", 2426 | "unicode": "1F40B", 2427 | "shortcode": "whale2", 2428 | "description": "WHALE", 2429 | "category": "animal" 2430 | }, 2431 | { 2432 | "name": "snail", 2433 | "unicode": "1F40C", 2434 | "shortcode": "snail", 2435 | "description": "SNAIL", 2436 | "category": "animal" 2437 | }, 2438 | { 2439 | "name": "snake", 2440 | "unicode": "1F40D", 2441 | "shortcode": "snake", 2442 | "description": "SNAKE", 2443 | "category": "animal" 2444 | }, 2445 | { 2446 | "name": "racehorse", 2447 | "unicode": "1F40E", 2448 | "shortcode": "racehorse", 2449 | "description": "HORSE", 2450 | "category": "animal" 2451 | }, 2452 | { 2453 | "name": "ram", 2454 | "unicode": "1F40F", 2455 | "shortcode": "ram", 2456 | "description": "RAM", 2457 | "category": "animal" 2458 | }, 2459 | { 2460 | "name": "goat", 2461 | "unicode": "1F410", 2462 | "shortcode": "goat", 2463 | "description": "GOAT", 2464 | "category": "animal" 2465 | }, 2466 | { 2467 | "name": "sheep", 2468 | "unicode": "1F411", 2469 | "shortcode": "sheep", 2470 | "description": "SHEEP", 2471 | "category": "animal" 2472 | }, 2473 | { 2474 | "name": "monkey", 2475 | "unicode": "1F412", 2476 | "shortcode": "monkey", 2477 | "description": "MONKEY", 2478 | "category": "animal" 2479 | }, 2480 | { 2481 | "name": "rooster", 2482 | "unicode": "1F413", 2483 | "shortcode": "rooster", 2484 | "description": "ROOSTER", 2485 | "category": "animal" 2486 | }, 2487 | { 2488 | "name": "chicken", 2489 | "unicode": "1F414", 2490 | "shortcode": "chicken", 2491 | "description": "CHICKEN", 2492 | "category": "animal" 2493 | }, 2494 | { 2495 | "name": "dog2", 2496 | "unicode": "1F415", 2497 | "shortcode": "dog2", 2498 | "description": "DOG", 2499 | "category": "animal" 2500 | }, 2501 | { 2502 | "name": "pig2", 2503 | "unicode": "1F416", 2504 | "shortcode": "pig2", 2505 | "description": "PIG", 2506 | "category": "animal" 2507 | }, 2508 | { 2509 | "name": "boar", 2510 | "unicode": "1F417", 2511 | "shortcode": "boar", 2512 | "description": "BOAR", 2513 | "category": "animal" 2514 | }, 2515 | { 2516 | "name": "elephant", 2517 | "unicode": "1F418", 2518 | "shortcode": "elephant", 2519 | "description": "ELEPHANT", 2520 | "category": "animal" 2521 | }, 2522 | { 2523 | "name": "octopus", 2524 | "unicode": "1F419", 2525 | "shortcode": "octopus", 2526 | "description": "OCTOPUS", 2527 | "category": "animal" 2528 | }, 2529 | { 2530 | "name": "shell", 2531 | "unicode": "1F41A", 2532 | "shortcode": "shell", 2533 | "description": "SPIRAL SHELL", 2534 | "category": "animal" 2535 | }, 2536 | { 2537 | "name": "bug", 2538 | "unicode": "1F41B", 2539 | "shortcode": "bug", 2540 | "description": "BUG", 2541 | "category": "animal" 2542 | }, 2543 | { 2544 | "name": "ant", 2545 | "unicode": "1F41C", 2546 | "shortcode": "ant", 2547 | "description": "ANT", 2548 | "category": "animal" 2549 | }, 2550 | { 2551 | "name": "bee", 2552 | "unicode": "1F41D", 2553 | "shortcode": "bee", 2554 | "description": "HONEYBEE", 2555 | "category": "animal" 2556 | }, 2557 | { 2558 | "name": "beetle", 2559 | "unicode": "1F41E", 2560 | "shortcode": "beetle", 2561 | "description": "LADY BEETLE", 2562 | "category": "animal" 2563 | }, 2564 | { 2565 | "name": "fish", 2566 | "unicode": "1F41F", 2567 | "shortcode": "fish", 2568 | "description": "FISH", 2569 | "category": "animal" 2570 | }, 2571 | { 2572 | "name": "tropical_fish", 2573 | "unicode": "1F420", 2574 | "shortcode": "tropical_fish", 2575 | "description": "TROPICAL FISH", 2576 | "category": "animal" 2577 | }, 2578 | { 2579 | "name": "blowfish", 2580 | "unicode": "1F421", 2581 | "shortcode": "blowfish", 2582 | "description": "BLOWFISH", 2583 | "category": "animal" 2584 | }, 2585 | { 2586 | "name": "turtle", 2587 | "unicode": "1F422", 2588 | "shortcode": "turtle", 2589 | "description": "TURTLE", 2590 | "category": "animal" 2591 | }, 2592 | { 2593 | "name": "hatching_chick", 2594 | "unicode": "1F423", 2595 | "shortcode": "hatching_chick", 2596 | "description": "HATCHING CHICK", 2597 | "category": "animal" 2598 | }, 2599 | { 2600 | "name": "baby_chick", 2601 | "unicode": "1F424", 2602 | "shortcode": "baby_chick", 2603 | "description": "BABY CHICK", 2604 | "category": "animal" 2605 | }, 2606 | { 2607 | "name": "hatched_chick", 2608 | "unicode": "1F425", 2609 | "shortcode": "hatched_chick", 2610 | "description": "FRONT-FACING BABY CHICK", 2611 | "category": "animal" 2612 | }, 2613 | { 2614 | "name": "bird", 2615 | "unicode": "1F426", 2616 | "shortcode": "bird", 2617 | "description": "BIRD", 2618 | "category": "animal" 2619 | }, 2620 | { 2621 | "name": "penguin", 2622 | "unicode": "1F427", 2623 | "shortcode": "penguin", 2624 | "description": "PENGUIN", 2625 | "category": "animal" 2626 | }, 2627 | { 2628 | "name": "koala", 2629 | "unicode": "1F428", 2630 | "shortcode": "koala", 2631 | "description": "KOALA", 2632 | "category": "animal" 2633 | }, 2634 | { 2635 | "name": "poodle", 2636 | "unicode": "1F429", 2637 | "shortcode": "poodle", 2638 | "description": "POODLE", 2639 | "category": "animal" 2640 | }, 2641 | { 2642 | "name": "dromedary_camel", 2643 | "unicode": "1F42A", 2644 | "shortcode": "dromedary_camel", 2645 | "description": "DROMEDARY CAMEL", 2646 | "category": "animal" 2647 | }, 2648 | { 2649 | "name": "camel", 2650 | "unicode": "1F42B", 2651 | "shortcode": "camel", 2652 | "description": "BACTRIAN CAMEL", 2653 | "category": "animal" 2654 | }, 2655 | { 2656 | "name": "dolphin", 2657 | "unicode": "1F42C", 2658 | "shortcode": "dolphin", 2659 | "description": "DOLPHIN", 2660 | "category": "animal" 2661 | }, 2662 | { 2663 | "name": "mouse", 2664 | "unicode": "1F42D", 2665 | "shortcode": "mouse", 2666 | "description": "MOUSE FACE", 2667 | "category": "animal" 2668 | }, 2669 | { 2670 | "name": "cow", 2671 | "unicode": "1F42E", 2672 | "shortcode": "cow", 2673 | "description": "COW FACE", 2674 | "category": "animal" 2675 | }, 2676 | { 2677 | "name": "tiger", 2678 | "unicode": "1F42F", 2679 | "shortcode": "tiger", 2680 | "description": "TIGER FACE", 2681 | "category": "animal" 2682 | }, 2683 | { 2684 | "name": "rabbit", 2685 | "unicode": "1F430", 2686 | "shortcode": "rabbit", 2687 | "description": "RABBIT FACE", 2688 | "category": "animal" 2689 | }, 2690 | { 2691 | "name": "cat", 2692 | "unicode": "1F431", 2693 | "shortcode": "cat", 2694 | "description": "CAT FACE", 2695 | "category": "animal" 2696 | }, 2697 | { 2698 | "name": "dragon_face", 2699 | "unicode": "1F432", 2700 | "shortcode": "dragon_face", 2701 | "description": "DRAGON FACE", 2702 | "category": "animal" 2703 | }, 2704 | { 2705 | "name": "whale", 2706 | "unicode": "1F433", 2707 | "shortcode": "whale", 2708 | "description": "SPOUTING WHALE", 2709 | "category": "animal" 2710 | }, 2711 | { 2712 | "name": "horse", 2713 | "unicode": "1F434", 2714 | "shortcode": "horse", 2715 | "description": "HORSE FACE", 2716 | "category": "animal" 2717 | }, 2718 | { 2719 | "name": "monkey_face", 2720 | "unicode": "1F435", 2721 | "shortcode": "monkey_face", 2722 | "description": "MONKEY FACE", 2723 | "category": "animal" 2724 | }, 2725 | { 2726 | "name": "dog", 2727 | "unicode": "1F436", 2728 | "shortcode": "dog", 2729 | "description": "DOG FACE", 2730 | "category": "animal" 2731 | }, 2732 | { 2733 | "name": "pig", 2734 | "unicode": "1F437", 2735 | "shortcode": "pig", 2736 | "description": "PIG FACE", 2737 | "category": "animal" 2738 | }, 2739 | { 2740 | "name": "frog", 2741 | "unicode": "1F438", 2742 | "shortcode": "frog", 2743 | "description": "FROG FACE", 2744 | "category": "animal" 2745 | }, 2746 | { 2747 | "name": "hamster", 2748 | "unicode": "1F439", 2749 | "shortcode": "hamster", 2750 | "description": "HAMSTER FACE", 2751 | "category": "animal" 2752 | }, 2753 | { 2754 | "name": "wolf", 2755 | "unicode": "1F43A", 2756 | "shortcode": "wolf", 2757 | "description": "WOLF FACE", 2758 | "category": "animal" 2759 | }, 2760 | { 2761 | "name": "bear", 2762 | "unicode": "1F43B", 2763 | "shortcode": "bear", 2764 | "description": "BEAR FACE", 2765 | "category": "animal" 2766 | }, 2767 | { 2768 | "name": "panda_face", 2769 | "unicode": "1F43C", 2770 | "shortcode": "panda_face", 2771 | "description": "PANDA FACE", 2772 | "category": "animal" 2773 | }, 2774 | { 2775 | "name": "pig_nose", 2776 | "unicode": "1F43D", 2777 | "shortcode": "pig_nose", 2778 | "description": "PIG NOSE", 2779 | "category": "animal" 2780 | }, 2781 | { 2782 | "name": "feet", 2783 | "unicode": "1F43E", 2784 | "shortcode": "feet", 2785 | "description": "PAW PRINTS", 2786 | "category": "people" 2787 | }, 2788 | { 2789 | "name": "eyes", 2790 | "unicode": "1F440", 2791 | "shortcode": "eyes", 2792 | "description": "EYES", 2793 | "category": "people" 2794 | }, 2795 | { 2796 | "name": "ear", 2797 | "unicode": "1F442", 2798 | "shortcode": "ear", 2799 | "description": "EAR", 2800 | "category": "people" 2801 | }, 2802 | { 2803 | "name": "nose", 2804 | "unicode": "1F443", 2805 | "shortcode": "nose", 2806 | "description": "NOSE", 2807 | "category": "people" 2808 | }, 2809 | { 2810 | "name": "lips", 2811 | "unicode": "1F444", 2812 | "shortcode": "lips", 2813 | "description": "MOUTH", 2814 | "category": "people" 2815 | }, 2816 | { 2817 | "name": "tongue", 2818 | "unicode": "1F445", 2819 | "shortcode": "tongue", 2820 | "description": "TONGUE", 2821 | "category": "people" 2822 | }, 2823 | { 2824 | "name": "point_up_2", 2825 | "unicode": "1F446", 2826 | "shortcode": "point_up_2", 2827 | "description": "WHITE UP POINTING BACKHAND INDEX", 2828 | "category": "people" 2829 | }, 2830 | { 2831 | "name": "point_down", 2832 | "unicode": "1F447", 2833 | "shortcode": "point_down", 2834 | "description": "WHITE DOWN POINTING BACKHAND INDEX", 2835 | "category": "people" 2836 | }, 2837 | { 2838 | "name": "point_left", 2839 | "unicode": "1F448", 2840 | "shortcode": "point_left", 2841 | "description": "WHITE LEFT POINTING BACKHAND INDEX", 2842 | "category": "people" 2843 | }, 2844 | { 2845 | "name": "point_right", 2846 | "unicode": "1F449", 2847 | "shortcode": "point_right", 2848 | "description": "WHITE RIGHT POINTING BACKHAND INDEX", 2849 | "category": "people" 2850 | }, 2851 | { 2852 | "name": "facepunch", 2853 | "unicode": "1F44A", 2854 | "shortcode": "facepunch", 2855 | "description": "FISTED HAND SIGN", 2856 | "category": "people" 2857 | }, 2858 | { 2859 | "name": "wave", 2860 | "unicode": "1F44B", 2861 | "shortcode": "wave", 2862 | "description": "WAVING HAND SIGN", 2863 | "category": "people" 2864 | }, 2865 | { 2866 | "name": "ok_hand", 2867 | "unicode": "1F44C", 2868 | "shortcode": "ok_hand", 2869 | "description": "OK HAND SIGN", 2870 | "category": "people" 2871 | }, 2872 | { 2873 | "name": "+1", 2874 | "unicode": "1F44D", 2875 | "shortcode": "plus1", 2876 | "description": "THUMBS UP SIGN", 2877 | "category": "people" 2878 | }, 2879 | { 2880 | "name": "-1", 2881 | "unicode": "1F44E", 2882 | "shortcode": "-1", 2883 | "description": "THUMBS DOWN SIGN", 2884 | "category": "people" 2885 | }, 2886 | { 2887 | "name": "clap", 2888 | "unicode": "1F44F", 2889 | "shortcode": "clap", 2890 | "description": "CLAPPING HANDS SIGN", 2891 | "category": "people" 2892 | }, 2893 | { 2894 | "name": "open_hands", 2895 | "unicode": "1F450", 2896 | "shortcode": "open_hands", 2897 | "description": "OPEN HANDS SIGN", 2898 | "category": "people" 2899 | }, 2900 | { 2901 | "name": "crown", 2902 | "unicode": "1F451", 2903 | "shortcode": "crown", 2904 | "description": "CROWN", 2905 | "category": "people" 2906 | }, 2907 | { 2908 | "name": "womans_hat", 2909 | "unicode": "1F452", 2910 | "shortcode": "womans_hat", 2911 | "description": "WOMANS HAT", 2912 | "category": "people" 2913 | }, 2914 | { 2915 | "name": "eyeglasses", 2916 | "unicode": "1F453", 2917 | "shortcode": "eyeglasses", 2918 | "description": "EYEGLASSES", 2919 | "category": "people" 2920 | }, 2921 | { 2922 | "name": "necktie", 2923 | "unicode": "1F454", 2924 | "shortcode": "necktie", 2925 | "description": "NECKTIE", 2926 | "category": "people" 2927 | }, 2928 | { 2929 | "name": "shirt", 2930 | "unicode": "1F455", 2931 | "shortcode": "shirt", 2932 | "description": "T-SHIRT", 2933 | "category": "people" 2934 | }, 2935 | { 2936 | "name": "jeans", 2937 | "unicode": "1F456", 2938 | "shortcode": "jeans", 2939 | "description": "JEANS", 2940 | "category": "people" 2941 | }, 2942 | { 2943 | "name": "dress", 2944 | "unicode": "1F457", 2945 | "shortcode": "dress", 2946 | "description": "DRESS", 2947 | "category": "people" 2948 | }, 2949 | { 2950 | "name": "kimono", 2951 | "unicode": "1F458", 2952 | "shortcode": "kimono", 2953 | "description": "KIMONO", 2954 | "category": "people" 2955 | }, 2956 | { 2957 | "name": "bikini", 2958 | "unicode": "1F459", 2959 | "shortcode": "bikini", 2960 | "description": "BIKINI", 2961 | "category": "people" 2962 | }, 2963 | { 2964 | "name": "womans_clothes", 2965 | "unicode": "1F45A", 2966 | "shortcode": "womans_clothes", 2967 | "description": "WOMANS CLOTHES", 2968 | "category": "people" 2969 | }, 2970 | { 2971 | "name": "purse", 2972 | "unicode": "1F45B", 2973 | "shortcode": "purse", 2974 | "description": "PURSE", 2975 | "category": "people" 2976 | }, 2977 | { 2978 | "name": "handbag", 2979 | "unicode": "1F45C", 2980 | "shortcode": "handbag", 2981 | "description": "HANDBAG", 2982 | "category": "people" 2983 | }, 2984 | { 2985 | "name": "pouch", 2986 | "unicode": "1F45D", 2987 | "shortcode": "pouch", 2988 | "description": "POUCH", 2989 | "category": "people" 2990 | }, 2991 | { 2992 | "name": "mans_shoe", 2993 | "unicode": "1F45E", 2994 | "shortcode": "mans_shoe", 2995 | "description": "MANS SHOE", 2996 | "category": "people" 2997 | }, 2998 | { 2999 | "name": "athletic_shoe", 3000 | "unicode": "1F45F", 3001 | "shortcode": "athletic_shoe", 3002 | "description": "ATHLETIC SHOE", 3003 | "category": "people" 3004 | }, 3005 | { 3006 | "name": "high_heel", 3007 | "unicode": "1F460", 3008 | "shortcode": "high_heel", 3009 | "description": "HIGH-HEELED SHOE", 3010 | "category": "people" 3011 | }, 3012 | { 3013 | "name": "sandal", 3014 | "unicode": "1F461", 3015 | "shortcode": "sandal", 3016 | "description": "WOMANS SANDAL", 3017 | "category": "people" 3018 | }, 3019 | { 3020 | "name": "boot", 3021 | "unicode": "1F462", 3022 | "shortcode": "boot", 3023 | "description": "WOMANS BOOTS", 3024 | "category": "people" 3025 | }, 3026 | { 3027 | "name": "footprints", 3028 | "unicode": "1F463", 3029 | "shortcode": "footprints", 3030 | "description": "FOOTPRINTS", 3031 | "category": "people" 3032 | }, 3033 | { 3034 | "name": "bust_in_silhouette", 3035 | "unicode": "1F464", 3036 | "shortcode": "bust_in_silhouette", 3037 | "description": "BUST IN SILHOUETTE", 3038 | "category": "people" 3039 | }, 3040 | { 3041 | "name": "busts_in_silhouette", 3042 | "unicode": "1F465", 3043 | "shortcode": "busts_in_silhouette", 3044 | "description": "BUSTS IN SILHOUETTE", 3045 | "category": "people" 3046 | }, 3047 | { 3048 | "name": "boy", 3049 | "unicode": "1F466", 3050 | "shortcode": "boy", 3051 | "description": "BOY", 3052 | "category": "people" 3053 | }, 3054 | { 3055 | "name": "girl", 3056 | "unicode": "1F467", 3057 | "shortcode": "girl", 3058 | "description": "GIRL", 3059 | "category": "people" 3060 | }, 3061 | { 3062 | "name": "man", 3063 | "unicode": "1F468", 3064 | "shortcode": "man", 3065 | "description": "MAN", 3066 | "category": "people" 3067 | }, 3068 | { 3069 | "name": "woman", 3070 | "unicode": "1F469", 3071 | "shortcode": "woman", 3072 | "description": "WOMAN", 3073 | "category": "people" 3074 | }, 3075 | { 3076 | "name": "family", 3077 | "unicode": "1F46A", 3078 | "shortcode": "family", 3079 | "description": "FAMILY", 3080 | "category": "people" 3081 | }, 3082 | { 3083 | "name": "couple", 3084 | "unicode": "1F46B", 3085 | "shortcode": "couple", 3086 | "description": "MAN AND WOMAN HOLDING HANDS", 3087 | "category": "people" 3088 | }, 3089 | { 3090 | "name": "two_men_holding_hands", 3091 | "unicode": "1F46C", 3092 | "shortcode": "two_men_holding_hands", 3093 | "description": "TWO MEN HOLDING HANDS", 3094 | "category": "people" 3095 | }, 3096 | { 3097 | "name": "two_women_holding_hands", 3098 | "unicode": "1F46D", 3099 | "shortcode": "two_women_holding_hands", 3100 | "description": "TWO WOMEN HOLDING HANDS", 3101 | "category": "people" 3102 | }, 3103 | { 3104 | "name": "cop", 3105 | "unicode": "1F46E", 3106 | "shortcode": "cop", 3107 | "description": "POLICE OFFICER", 3108 | "category": "people" 3109 | }, 3110 | { 3111 | "name": "dancers", 3112 | "unicode": "1F46F", 3113 | "shortcode": "dancers", 3114 | "description": "WOMAN WITH BUNNY EARS", 3115 | "category": "people" 3116 | }, 3117 | { 3118 | "name": "bride_with_veil", 3119 | "unicode": "1F470", 3120 | "shortcode": "bride_with_veil", 3121 | "description": "BRIDE WITH VEIL", 3122 | "category": "people" 3123 | }, 3124 | { 3125 | "name": "person_with_blond_hair", 3126 | "unicode": "1F471", 3127 | "shortcode": "person_with_blond_hair", 3128 | "description": "PERSON WITH BLOND HAIR", 3129 | "category": "people" 3130 | }, 3131 | { 3132 | "name": "man_with_gua_pi_mao", 3133 | "unicode": "1F472", 3134 | "shortcode": "man_with_gua_pi_mao", 3135 | "description": "MAN WITH GUA PI MAO", 3136 | "category": "people" 3137 | }, 3138 | { 3139 | "name": "man_with_turban", 3140 | "unicode": "1F473", 3141 | "shortcode": "man_with_turban", 3142 | "description": "MAN WITH TURBAN", 3143 | "category": "people" 3144 | }, 3145 | { 3146 | "name": "older_man", 3147 | "unicode": "1F474", 3148 | "shortcode": "older_man", 3149 | "description": "OLDER MAN", 3150 | "category": "people" 3151 | }, 3152 | { 3153 | "name": "older_woman", 3154 | "unicode": "1F475", 3155 | "shortcode": "older_woman", 3156 | "description": "OLDER WOMAN", 3157 | "category": "people" 3158 | }, 3159 | { 3160 | "name": "baby", 3161 | "unicode": "1F476", 3162 | "shortcode": "baby", 3163 | "description": "BABY", 3164 | "category": "people" 3165 | }, 3166 | { 3167 | "name": "construction_worker", 3168 | "unicode": "1F477", 3169 | "shortcode": "construction_worker", 3170 | "description": "CONSTRUCTION WORKER", 3171 | "category": "people" 3172 | }, 3173 | { 3174 | "name": "princess", 3175 | "unicode": "1F478", 3176 | "shortcode": "princess", 3177 | "description": "PRINCESS", 3178 | "category": "people" 3179 | }, 3180 | { 3181 | "name": "japanese_ogre", 3182 | "unicode": "1F479", 3183 | "shortcode": "japanese_ogre", 3184 | "description": "JAPANESE OGRE", 3185 | "category": "people" 3186 | }, 3187 | { 3188 | "name": "japanese_goblin", 3189 | "unicode": "1F47A", 3190 | "shortcode": "japanese_goblin", 3191 | "description": "JAPANESE GOBLIN", 3192 | "category": "people" 3193 | }, 3194 | { 3195 | "name": "ghost", 3196 | "unicode": "1F47B", 3197 | "shortcode": "ghost", 3198 | "description": "GHOST", 3199 | "category": "people" 3200 | }, 3201 | { 3202 | "name": "angel", 3203 | "unicode": "1F47C", 3204 | "shortcode": "angel", 3205 | "description": "BABY ANGEL", 3206 | "category": "people" 3207 | }, 3208 | { 3209 | "name": "alien", 3210 | "unicode": "1F47D", 3211 | "shortcode": "alien", 3212 | "description": "EXTRATERRESTRIAL ALIEN", 3213 | "category": "people" 3214 | }, 3215 | { 3216 | "name": "space_invader", 3217 | "unicode": "1F47E", 3218 | "shortcode": "space_invader", 3219 | "description": "ALIEN MONSTER", 3220 | "category": "people" 3221 | }, 3222 | { 3223 | "name": "imp", 3224 | "unicode": "1F47F", 3225 | "shortcode": "imp", 3226 | "description": "IMP", 3227 | "category": "people" 3228 | }, 3229 | { 3230 | "name": "skull", 3231 | "unicode": "1F480", 3232 | "shortcode": "skull", 3233 | "description": "SKULL", 3234 | "category": "people" 3235 | }, 3236 | { 3237 | "name": "information_desk_person", 3238 | "unicode": "1F481", 3239 | "shortcode": "information_desk_person", 3240 | "description": "INFORMATION DESK PERSON", 3241 | "category": "people" 3242 | }, 3243 | { 3244 | "name": "guardsman", 3245 | "unicode": "1F482", 3246 | "shortcode": "guardsman", 3247 | "description": "GUARDSMAN", 3248 | "category": "people" 3249 | }, 3250 | { 3251 | "name": "dancer", 3252 | "unicode": "1F483", 3253 | "shortcode": "dancer", 3254 | "description": "DANCER", 3255 | "category": "people" 3256 | }, 3257 | { 3258 | "name": "lipstick", 3259 | "unicode": "1F484", 3260 | "shortcode": "lipstick", 3261 | "description": "LIPSTICK", 3262 | "category": "people" 3263 | }, 3264 | { 3265 | "name": "nail_care", 3266 | "unicode": "1F485", 3267 | "shortcode": "nail_care", 3268 | "description": "NAIL POLISH", 3269 | "category": "people" 3270 | }, 3271 | { 3272 | "name": "massage", 3273 | "unicode": "1F486", 3274 | "shortcode": "massage", 3275 | "description": "FACE MASSAGE", 3276 | "category": "people" 3277 | }, 3278 | { 3279 | "name": "haircut", 3280 | "unicode": "1F487", 3281 | "shortcode": "haircut", 3282 | "description": "HAIRCUT", 3283 | "category": "people" 3284 | }, 3285 | { 3286 | "name": "barber", 3287 | "unicode": "1F488", 3288 | "shortcode": "barber", 3289 | "description": "BARBER POLE", 3290 | "category": "people" 3291 | }, 3292 | { 3293 | "name": "syringe", 3294 | "unicode": "1F489", 3295 | "shortcode": "syringe", 3296 | "description": "SYRINGE", 3297 | "category": "emotion" 3298 | }, 3299 | { 3300 | "name": "pill", 3301 | "unicode": "1F48A", 3302 | "shortcode": "pill", 3303 | "description": "PILL", 3304 | "category": "emotion" 3305 | }, 3306 | { 3307 | "name": "kiss", 3308 | "unicode": "1F48B", 3309 | "shortcode": "kiss", 3310 | "description": "KISS MARK", 3311 | "category": "emotion" 3312 | }, 3313 | { 3314 | "name": "love_letter", 3315 | "unicode": "1F48C", 3316 | "shortcode": "love_letter", 3317 | "description": "LOVE LETTER", 3318 | "category": "emotion" 3319 | }, 3320 | { 3321 | "name": "ring", 3322 | "unicode": "1F48D", 3323 | "shortcode": "ring", 3324 | "description": "RING", 3325 | "category": "emotion" 3326 | }, 3327 | { 3328 | "name": "gem", 3329 | "unicode": "1F48E", 3330 | "shortcode": "gem", 3331 | "description": "GEM STONE", 3332 | "category": "emotion" 3333 | }, 3334 | { 3335 | "name": "couplekiss", 3336 | "unicode": "1F48F", 3337 | "shortcode": "couplekiss", 3338 | "description": "KISS", 3339 | "category": "emotion" 3340 | }, 3341 | { 3342 | "name": "bouquet", 3343 | "unicode": "1F490", 3344 | "shortcode": "bouquet", 3345 | "description": "BOUQUET", 3346 | "category": "emotion" 3347 | }, 3348 | { 3349 | "name": "couple_with_heart", 3350 | "unicode": "1F491", 3351 | "shortcode": "couple_with_heart", 3352 | "description": "COUPLE WITH HEART", 3353 | "category": "emotion" 3354 | }, 3355 | { 3356 | "name": "wedding", 3357 | "unicode": "1F492", 3358 | "shortcode": "wedding", 3359 | "description": "WEDDING", 3360 | "category": "emotion" 3361 | }, 3362 | { 3363 | "name": "heartbeat", 3364 | "unicode": "1F493", 3365 | "shortcode": "heartbeat", 3366 | "description": "BEATING HEART", 3367 | "category": "emotion" 3368 | }, 3369 | { 3370 | "name": "broken_heart", 3371 | "unicode": "1F494", 3372 | "shortcode": "broken_heart", 3373 | "description": "BROKEN HEART", 3374 | "category": "emotion" 3375 | }, 3376 | { 3377 | "name": "two_hearts", 3378 | "unicode": "1F495", 3379 | "shortcode": "two_hearts", 3380 | "description": "TWO HEARTS", 3381 | "category": "emotion" 3382 | }, 3383 | { 3384 | "name": "sparkling_heart", 3385 | "unicode": "1F496", 3386 | "shortcode": "sparkling_heart", 3387 | "description": "SPARKLING HEART", 3388 | "category": "emotion" 3389 | }, 3390 | { 3391 | "name": "heartpulse", 3392 | "unicode": "1F497", 3393 | "shortcode": "heartpulse", 3394 | "description": "GROWING HEART", 3395 | "category": "emotion" 3396 | }, 3397 | { 3398 | "name": "cupid", 3399 | "unicode": "1F498", 3400 | "shortcode": "cupid", 3401 | "description": "HEART WITH ARROW", 3402 | "category": "emotion" 3403 | }, 3404 | { 3405 | "name": "blue_heart", 3406 | "unicode": "1F499", 3407 | "shortcode": "blue_heart", 3408 | "description": "BLUE HEART", 3409 | "category": "emotion" 3410 | }, 3411 | { 3412 | "name": "green_heart", 3413 | "unicode": "1F49A", 3414 | "shortcode": "green_heart", 3415 | "description": "GREEN HEART", 3416 | "category": "emotion" 3417 | }, 3418 | { 3419 | "name": "yellow_heart", 3420 | "unicode": "1F49B", 3421 | "shortcode": "yellow_heart", 3422 | "description": "YELLOW HEART", 3423 | "category": "emotion" 3424 | }, 3425 | { 3426 | "name": "purple_heart", 3427 | "unicode": "1F49C", 3428 | "shortcode": "purple_heart", 3429 | "description": "PURPLE HEART", 3430 | "category": "emotion" 3431 | }, 3432 | { 3433 | "name": "gift_heart", 3434 | "unicode": "1F49D", 3435 | "shortcode": "gift_heart", 3436 | "description": "HEART WITH RIBBON", 3437 | "category": "emotion" 3438 | }, 3439 | { 3440 | "name": "revolving_hearts", 3441 | "unicode": "1F49E", 3442 | "shortcode": "revolving_hearts", 3443 | "description": "REVOLVING HEARTS", 3444 | "category": "emotion" 3445 | }, 3446 | { 3447 | "name": "heart_decoration", 3448 | "unicode": "1F49F", 3449 | "shortcode": "heart_decoration", 3450 | "description": "HEART DECORATION", 3451 | "category": "emotion" 3452 | }, 3453 | { 3454 | "name": "diamond_shape_with_a_dot_inside", 3455 | "unicode": "1F4A0", 3456 | "shortcode": "diamond_shape_with_a_dot_inside", 3457 | "description": "DIAMOND SHAPE WITH A DOT INSIDE", 3458 | "category": "emotion" 3459 | }, 3460 | { 3461 | "name": "bulb", 3462 | "unicode": "1F4A1", 3463 | "shortcode": "bulb", 3464 | "description": "ELECTRIC LIGHT BULB", 3465 | "category": "emotion" 3466 | }, 3467 | { 3468 | "name": "anger", 3469 | "unicode": "1F4A2", 3470 | "shortcode": "anger", 3471 | "description": "ANGER SYMBOL", 3472 | "category": "emotion" 3473 | }, 3474 | { 3475 | "name": "bomb", 3476 | "unicode": "1F4A3", 3477 | "shortcode": "bomb", 3478 | "description": "BOMB", 3479 | "category": "emotion" 3480 | }, 3481 | { 3482 | "name": "zzz", 3483 | "unicode": "1F4A4", 3484 | "shortcode": "zzz", 3485 | "description": "SLEEPING SYMBOL", 3486 | "category": "emotion" 3487 | }, 3488 | { 3489 | "name": "boom", 3490 | "unicode": "1F4A5", 3491 | "shortcode": "boom", 3492 | "description": "COLLISION SYMBOL", 3493 | "category": "emotion" 3494 | }, 3495 | { 3496 | "name": "sweat_drops", 3497 | "unicode": "1F4A6", 3498 | "shortcode": "sweat_drops", 3499 | "description": "SPLASHING SWEAT SYMBOL", 3500 | "category": "emotion" 3501 | }, 3502 | { 3503 | "name": "droplet", 3504 | "unicode": "1F4A7", 3505 | "shortcode": "droplet", 3506 | "description": "DROPLET", 3507 | "category": "emotion" 3508 | }, 3509 | { 3510 | "name": "dash", 3511 | "unicode": "1F4A8", 3512 | "shortcode": "dash", 3513 | "description": "DASH SYMBOL", 3514 | "category": "emotion" 3515 | }, 3516 | { 3517 | "name": "hankey", 3518 | "unicode": "1F4A9", 3519 | "shortcode": "hankey", 3520 | "description": "PILE OF POO", 3521 | "category": "emotion" 3522 | }, 3523 | { 3524 | "name": "muscle", 3525 | "unicode": "1F4AA", 3526 | "shortcode": "muscle", 3527 | "description": "FLEXED BICEPS", 3528 | "category": "emotion" 3529 | }, 3530 | { 3531 | "name": "dizzy", 3532 | "unicode": "1F4AB", 3533 | "shortcode": "dizzy", 3534 | "description": "DIZZY SYMBOL", 3535 | "category": "emotion" 3536 | }, 3537 | { 3538 | "name": "speech_balloon", 3539 | "unicode": "1F4AC", 3540 | "shortcode": "speech_balloon", 3541 | "description": "SPEECH BALLOON", 3542 | "category": "emotion" 3543 | }, 3544 | { 3545 | "name": "thought_balloon", 3546 | "unicode": "1F4AD", 3547 | "shortcode": "thought_balloon", 3548 | "description": "THOUGHT BALLOON", 3549 | "category": "emotion" 3550 | }, 3551 | { 3552 | "name": "white_flower", 3553 | "unicode": "1F4AE", 3554 | "shortcode": "white_flower", 3555 | "description": "WHITE FLOWER", 3556 | "category": "emotion" 3557 | }, 3558 | { 3559 | "name": "100", 3560 | "unicode": "1F4AF", 3561 | "shortcode": "100", 3562 | "description": "HUNDRED POINTS SYMBOL", 3563 | "category": "emotion" 3564 | }, 3565 | { 3566 | "name": "moneybag", 3567 | "unicode": "1F4B0", 3568 | "shortcode": "moneybag", 3569 | "description": "MONEY BAG", 3570 | "category": "emotion" 3571 | }, 3572 | { 3573 | "name": "currency_exchange", 3574 | "unicode": "1F4B1", 3575 | "shortcode": "currency_exchange", 3576 | "description": "CURRENCY EXCHANGE", 3577 | "category": "emotion" 3578 | }, 3579 | { 3580 | "name": "heavy_dollar_sign", 3581 | "unicode": "1F4B2", 3582 | "shortcode": "heavy_dollar_sign", 3583 | "description": "HEAVY DOLLAR SIGN", 3584 | "category": "emotion" 3585 | }, 3586 | { 3587 | "name": "credit_card", 3588 | "unicode": "1F4B3", 3589 | "shortcode": "credit_card", 3590 | "description": "CREDIT CARD", 3591 | "category": "emotion" 3592 | }, 3593 | { 3594 | "name": "yen", 3595 | "unicode": "1F4B4", 3596 | "shortcode": "yen", 3597 | "description": "BANKNOTE WITH YEN SIGN", 3598 | "category": "emotion" 3599 | }, 3600 | { 3601 | "name": "dollar", 3602 | "unicode": "1F4B5", 3603 | "shortcode": "dollar", 3604 | "description": "BANKNOTE WITH DOLLAR SIGN", 3605 | "category": "emotion" 3606 | }, 3607 | { 3608 | "name": "euro", 3609 | "unicode": "1F4B6", 3610 | "shortcode": "euro", 3611 | "description": "BANKNOTE WITH EURO SIGN", 3612 | "category": "emotion" 3613 | }, 3614 | { 3615 | "name": "pound", 3616 | "unicode": "1F4B7", 3617 | "shortcode": "pound", 3618 | "description": "BANKNOTE WITH POUND SIGN", 3619 | "category": "emotion" 3620 | }, 3621 | { 3622 | "name": "money_with_wings", 3623 | "unicode": "1F4B8", 3624 | "shortcode": "money_with_wings", 3625 | "description": "MONEY WITH WINGS", 3626 | "category": "emotion" 3627 | }, 3628 | { 3629 | "name": "chart", 3630 | "unicode": "1F4B9", 3631 | "shortcode": "chart", 3632 | "description": "CHART WITH UPWARDS TREND AND YEN SIGN", 3633 | "category": "thing" 3634 | }, 3635 | { 3636 | "name": "seat", 3637 | "unicode": "1F4BA", 3638 | "shortcode": "seat", 3639 | "description": "SEAT", 3640 | "category": "thing" 3641 | }, 3642 | { 3643 | "name": "computer", 3644 | "unicode": "1F4BB", 3645 | "shortcode": "computer", 3646 | "description": "PERSONAL COMPUTER", 3647 | "category": "thing" 3648 | }, 3649 | { 3650 | "name": "briefcase", 3651 | "unicode": "1F4BC", 3652 | "shortcode": "briefcase", 3653 | "description": "BRIEFCASE", 3654 | "category": "thing" 3655 | }, 3656 | { 3657 | "name": "minidisc", 3658 | "unicode": "1F4BD", 3659 | "shortcode": "minidisc", 3660 | "description": "MINIDISC", 3661 | "category": "thing" 3662 | }, 3663 | { 3664 | "name": "floppy_disk", 3665 | "unicode": "1F4BE", 3666 | "shortcode": "floppy_disk", 3667 | "description": "FLOPPY DISK", 3668 | "category": "thing" 3669 | }, 3670 | { 3671 | "name": "cd", 3672 | "unicode": "1F4BF", 3673 | "shortcode": "cd", 3674 | "description": "OPTICAL DISC", 3675 | "category": "thing" 3676 | }, 3677 | { 3678 | "name": "dvd", 3679 | "unicode": "1F4C0", 3680 | "shortcode": "dvd", 3681 | "description": "DVD", 3682 | "category": "thing" 3683 | }, 3684 | { 3685 | "name": "file_folder", 3686 | "unicode": "1F4C1", 3687 | "shortcode": "file_folder", 3688 | "description": "FILE FOLDER", 3689 | "category": "thing" 3690 | }, 3691 | { 3692 | "name": "open_file_folder", 3693 | "unicode": "1F4C2", 3694 | "shortcode": "open_file_folder", 3695 | "description": "OPEN FILE FOLDER", 3696 | "category": "thing" 3697 | }, 3698 | { 3699 | "name": "page_with_curl", 3700 | "unicode": "1F4C3", 3701 | "shortcode": "page_with_curl", 3702 | "description": "PAGE WITH CURL", 3703 | "category": "thing" 3704 | }, 3705 | { 3706 | "name": "page_facing_up", 3707 | "unicode": "1F4C4", 3708 | "shortcode": "page_facing_up", 3709 | "description": "PAGE FACING UP", 3710 | "category": "thing" 3711 | }, 3712 | { 3713 | "name": "date", 3714 | "unicode": "1F4C5", 3715 | "shortcode": "date", 3716 | "description": "CALENDAR", 3717 | "category": "thing" 3718 | }, 3719 | { 3720 | "name": "calendar", 3721 | "unicode": "1F4C6", 3722 | "shortcode": "calendar", 3723 | "description": "TEAR-OFF CALENDAR", 3724 | "category": "thing" 3725 | }, 3726 | { 3727 | "name": "card_index", 3728 | "unicode": "1F4C7", 3729 | "shortcode": "card_index", 3730 | "description": "CARD INDEX", 3731 | "category": "thing" 3732 | }, 3733 | { 3734 | "name": "chart_with_upwards_trend", 3735 | "unicode": "1F4C8", 3736 | "shortcode": "chart_with_upwards_trend", 3737 | "description": "CHART WITH UPWARDS TREND", 3738 | "category": "thing" 3739 | }, 3740 | { 3741 | "name": "chart_with_downwards_trend", 3742 | "unicode": "1F4C9", 3743 | "shortcode": "chart_with_downwards_trend", 3744 | "description": "CHART WITH DOWNWARDS TREND", 3745 | "category": "thing" 3746 | }, 3747 | { 3748 | "name": "bar_chart", 3749 | "unicode": "1F4CA", 3750 | "shortcode": "bar_chart", 3751 | "description": "BAR CHART", 3752 | "category": "thing" 3753 | }, 3754 | { 3755 | "name": "clipboard", 3756 | "unicode": "1F4CB", 3757 | "shortcode": "clipboard", 3758 | "description": "CLIPBOARD", 3759 | "category": "thing" 3760 | }, 3761 | { 3762 | "name": "pushpin", 3763 | "unicode": "1F4CC", 3764 | "shortcode": "pushpin", 3765 | "description": "PUSHPIN", 3766 | "category": "thing" 3767 | }, 3768 | { 3769 | "name": "round_pushpin", 3770 | "unicode": "1F4CD", 3771 | "shortcode": "round_pushpin", 3772 | "description": "ROUND PUSHPIN", 3773 | "category": "thing" 3774 | }, 3775 | { 3776 | "name": "paperclip", 3777 | "unicode": "1F4CE", 3778 | "shortcode": "paperclip", 3779 | "description": "PAPERCLIP", 3780 | "category": "thing" 3781 | }, 3782 | { 3783 | "name": "straight_ruler", 3784 | "unicode": "1F4CF", 3785 | "shortcode": "straight_ruler", 3786 | "description": "STRAIGHT RULER", 3787 | "category": "thing" 3788 | }, 3789 | { 3790 | "name": "triangular_ruler", 3791 | "unicode": "1F4D0", 3792 | "shortcode": "triangular_ruler", 3793 | "description": "TRIANGULAR RULER", 3794 | "category": "thing" 3795 | }, 3796 | { 3797 | "name": "bookmark_tabs", 3798 | "unicode": "1F4D1", 3799 | "shortcode": "bookmark_tabs", 3800 | "description": "BOOKMARK TABS", 3801 | "category": "thing" 3802 | }, 3803 | { 3804 | "name": "ledger", 3805 | "unicode": "1F4D2", 3806 | "shortcode": "ledger", 3807 | "description": "LEDGER", 3808 | "category": "thing" 3809 | }, 3810 | { 3811 | "name": "notebook", 3812 | "unicode": "1F4D3", 3813 | "shortcode": "notebook", 3814 | "description": "NOTEBOOK", 3815 | "category": "thing" 3816 | }, 3817 | { 3818 | "name": "notebook_with_decorative_cover", 3819 | "unicode": "1F4D4", 3820 | "shortcode": "notebook_with_decorative_cover", 3821 | "description": "NOTEBOOK WITH DECORATIVE COVER", 3822 | "category": "thing" 3823 | }, 3824 | { 3825 | "name": "closed_book", 3826 | "unicode": "1F4D5", 3827 | "shortcode": "closed_book", 3828 | "description": "CLOSED BOOK", 3829 | "category": "thing" 3830 | }, 3831 | { 3832 | "name": "book", 3833 | "unicode": "1F4D6", 3834 | "shortcode": "book", 3835 | "description": "OPEN BOOK", 3836 | "category": "thing" 3837 | }, 3838 | { 3839 | "name": "green_book", 3840 | "unicode": "1F4D7", 3841 | "shortcode": "green_book", 3842 | "description": "GREEN BOOK", 3843 | "category": "thing" 3844 | }, 3845 | { 3846 | "name": "blue_book", 3847 | "unicode": "1F4D8", 3848 | "shortcode": "blue_book", 3849 | "description": "BLUE BOOK", 3850 | "category": "thing" 3851 | }, 3852 | { 3853 | "name": "orange_book", 3854 | "unicode": "1F4D9", 3855 | "shortcode": "orange_book", 3856 | "description": "ORANGE BOOK", 3857 | "category": "thing" 3858 | }, 3859 | { 3860 | "name": "books", 3861 | "unicode": "1F4DA", 3862 | "shortcode": "books", 3863 | "description": "BOOKS", 3864 | "category": "thing" 3865 | }, 3866 | { 3867 | "name": "name_badge", 3868 | "unicode": "1F4DB", 3869 | "shortcode": "name_badge", 3870 | "description": "NAME BADGE", 3871 | "category": "thing" 3872 | }, 3873 | { 3874 | "name": "scroll", 3875 | "unicode": "1F4DC", 3876 | "shortcode": "scroll", 3877 | "description": "SCROLL", 3878 | "category": "thing" 3879 | }, 3880 | { 3881 | "name": "memo", 3882 | "unicode": "1F4DD", 3883 | "shortcode": "memo", 3884 | "description": "MEMO", 3885 | "category": "thing" 3886 | }, 3887 | { 3888 | "name": "telephone_receiver", 3889 | "unicode": "1F4DE", 3890 | "shortcode": "telephone_receiver", 3891 | "description": "TELEPHONE RECEIVER", 3892 | "category": "thing" 3893 | }, 3894 | { 3895 | "name": "pager", 3896 | "unicode": "1F4DF", 3897 | "shortcode": "pager", 3898 | "description": "PAGER", 3899 | "category": "thing" 3900 | }, 3901 | { 3902 | "name": "fax", 3903 | "unicode": "1F4E0", 3904 | "shortcode": "fax", 3905 | "description": "FAX MACHINE", 3906 | "category": "thing" 3907 | }, 3908 | { 3909 | "name": "satellite", 3910 | "unicode": "1F4E1", 3911 | "shortcode": "satellite", 3912 | "description": "SATELLITE ANTENNA", 3913 | "category": "thing" 3914 | }, 3915 | { 3916 | "name": "loudspeaker", 3917 | "unicode": "1F4E2", 3918 | "shortcode": "loudspeaker", 3919 | "description": "PUBLIC ADDRESS LOUDSPEAKER", 3920 | "category": "thing" 3921 | }, 3922 | { 3923 | "name": "mega", 3924 | "unicode": "1F4E3", 3925 | "shortcode": "mega", 3926 | "description": "CHEERING MEGAPHONE", 3927 | "category": "thing" 3928 | }, 3929 | { 3930 | "name": "outbox_tray", 3931 | "unicode": "1F4E4", 3932 | "shortcode": "outbox_tray", 3933 | "description": "OUTBOX TRAY", 3934 | "category": "thing" 3935 | }, 3936 | { 3937 | "name": "inbox_tray", 3938 | "unicode": "1F4E5", 3939 | "shortcode": "inbox_tray", 3940 | "description": "INBOX TRAY", 3941 | "category": "thing" 3942 | }, 3943 | { 3944 | "name": "package", 3945 | "unicode": "1F4E6", 3946 | "shortcode": "package", 3947 | "description": "PACKAGE", 3948 | "category": "thing" 3949 | }, 3950 | { 3951 | "name": "e-mail", 3952 | "unicode": "1F4E7", 3953 | "shortcode": "e-mail", 3954 | "description": "E-MAIL SYMBOL", 3955 | "category": "thing" 3956 | }, 3957 | { 3958 | "name": "incoming_envelope", 3959 | "unicode": "1F4E8", 3960 | "shortcode": "incoming_envelope", 3961 | "description": "INCOMING ENVELOPE", 3962 | "category": "thing" 3963 | }, 3964 | { 3965 | "name": "envelope_with_arrow", 3966 | "unicode": "1F4E9", 3967 | "shortcode": "envelope_with_arrow", 3968 | "description": "ENVELOPE WITH DOWNWARDS ARROW ABOVE", 3969 | "category": "thing" 3970 | }, 3971 | { 3972 | "name": "mailbox_closed", 3973 | "unicode": "1F4EA", 3974 | "shortcode": "mailbox_closed", 3975 | "description": "CLOSED MAILBOX WITH LOWERED FLAG", 3976 | "category": "thing" 3977 | }, 3978 | { 3979 | "name": "mailbox", 3980 | "unicode": "1F4EB", 3981 | "shortcode": "mailbox", 3982 | "description": "CLOSED MAILBOX WITH RAISED FLAG", 3983 | "category": "thing" 3984 | }, 3985 | { 3986 | "name": "mailbox_with_mail", 3987 | "unicode": "1F4EC", 3988 | "shortcode": "mailbox_with_mail", 3989 | "description": "OPEN MAILBOX WITH RAISED FLAG", 3990 | "category": "thing" 3991 | }, 3992 | { 3993 | "name": "mailbox_with_no_mail", 3994 | "unicode": "1F4ED", 3995 | "shortcode": "mailbox_with_no_mail", 3996 | "description": "OPEN MAILBOX WITH LOWERED FLAG", 3997 | "category": "thing" 3998 | }, 3999 | { 4000 | "name": "postbox", 4001 | "unicode": "1F4EE", 4002 | "shortcode": "postbox", 4003 | "description": "POSTBOX", 4004 | "category": "thing" 4005 | }, 4006 | { 4007 | "name": "postal_horn", 4008 | "unicode": "1F4EF", 4009 | "shortcode": "postal_horn", 4010 | "description": "POSTAL HORN", 4011 | "category": "thing" 4012 | }, 4013 | { 4014 | "name": "newspaper", 4015 | "unicode": "1F4F0", 4016 | "shortcode": "newspaper", 4017 | "description": "NEWSPAPER", 4018 | "category": "thing" 4019 | }, 4020 | { 4021 | "name": "iphone", 4022 | "unicode": "1F4F1", 4023 | "shortcode": "iphone", 4024 | "description": "MOBILE PHONE", 4025 | "category": "thing" 4026 | }, 4027 | { 4028 | "name": "calling", 4029 | "unicode": "1F4F2", 4030 | "shortcode": "calling", 4031 | "description": "MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT", 4032 | "category": "thing" 4033 | }, 4034 | { 4035 | "name": "vibration_mode", 4036 | "unicode": "1F4F3", 4037 | "shortcode": "vibration_mode", 4038 | "description": "VIBRATION MODE", 4039 | "category": "thing" 4040 | }, 4041 | { 4042 | "name": "mobile_phone_off", 4043 | "unicode": "1F4F4", 4044 | "shortcode": "mobile_phone_off", 4045 | "description": "MOBILE PHONE OFF", 4046 | "category": "thing" 4047 | }, 4048 | { 4049 | "name": "no_mobile_phones", 4050 | "unicode": "1F4F5", 4051 | "shortcode": "no_mobile_phones", 4052 | "description": "NO MOBILE PHONES", 4053 | "category": "thing" 4054 | }, 4055 | { 4056 | "name": "signal_strength", 4057 | "unicode": "1F4F6", 4058 | "shortcode": "signal_strength", 4059 | "description": "ANTENNA WITH BARS", 4060 | "category": "thing" 4061 | }, 4062 | { 4063 | "name": "camera", 4064 | "unicode": "1F4F7", 4065 | "shortcode": "camera", 4066 | "description": "CAMERA", 4067 | "category": "thing" 4068 | }, 4069 | { 4070 | "name": "video_camera", 4071 | "unicode": "1F4F9", 4072 | "shortcode": "video_camera", 4073 | "description": "VIDEO CAMERA", 4074 | "category": "thing" 4075 | }, 4076 | { 4077 | "name": "tv", 4078 | "unicode": "1F4FA", 4079 | "shortcode": "tv", 4080 | "description": "TELEVISION", 4081 | "category": "thing" 4082 | }, 4083 | { 4084 | "name": "radio", 4085 | "unicode": "1F4FB", 4086 | "shortcode": "radio", 4087 | "description": "RADIO", 4088 | "category": "thing" 4089 | }, 4090 | { 4091 | "name": "vhs", 4092 | "unicode": "1F4FC", 4093 | "shortcode": "vhs", 4094 | "description": "VIDEOCASSETTE", 4095 | "category": "thing" 4096 | }, 4097 | { 4098 | "name": "twisted_rightwards_arrows", 4099 | "unicode": "1F500", 4100 | "shortcode": "twisted_rightwards_arrows", 4101 | "description": "TWISTED RIGHTWARDS ARROWS", 4102 | "category": "thing" 4103 | }, 4104 | { 4105 | "name": "repeat", 4106 | "unicode": "1F501", 4107 | "shortcode": "repeat", 4108 | "description": "CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS", 4109 | "category": "thing" 4110 | }, 4111 | { 4112 | "name": "repeat_one", 4113 | "unicode": "1F502", 4114 | "shortcode": "repeat_one", 4115 | "description": "CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY", 4116 | "category": "thing" 4117 | }, 4118 | { 4119 | "name": "arrows_clockwise", 4120 | "unicode": "1F503", 4121 | "shortcode": "arrows_clockwise", 4122 | "description": "CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS", 4123 | "category": "thing" 4124 | }, 4125 | { 4126 | "name": "arrows_counterclockwise", 4127 | "unicode": "1F504", 4128 | "shortcode": "arrows_counterclockwise", 4129 | "description": "ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS", 4130 | "category": "thing" 4131 | }, 4132 | { 4133 | "name": "low_brightness", 4134 | "unicode": "1F505", 4135 | "shortcode": "low_brightness", 4136 | "description": "LOW BRIGHTNESS SYMBOL", 4137 | "category": "thing" 4138 | }, 4139 | { 4140 | "name": "high_brightness", 4141 | "unicode": "1F506", 4142 | "shortcode": "high_brightness", 4143 | "description": "HIGH BRIGHTNESS SYMBOL", 4144 | "category": "thing" 4145 | }, 4146 | { 4147 | "name": "mute", 4148 | "unicode": "1F507", 4149 | "shortcode": "mute", 4150 | "description": "SPEAKER WITH CANCELLATION STROKE", 4151 | "category": "thing" 4152 | }, 4153 | { 4154 | "name": "speaker", 4155 | "unicode": "1F508", 4156 | "shortcode": "speaker", 4157 | "description": "SPEAKER", 4158 | "category": "thing" 4159 | }, 4160 | { 4161 | "name": "sound", 4162 | "unicode": "1F509", 4163 | "shortcode": "sound", 4164 | "description": "SPEAKER WITH ONE SOUND WAVE", 4165 | "category": "thing" 4166 | }, 4167 | { 4168 | "name": "loud_sound", 4169 | "unicode": "1F50A", 4170 | "shortcode": "loud_sound", 4171 | "description": "SPEAKER WITH THREE SOUND WAVES", 4172 | "category": "thing" 4173 | }, 4174 | { 4175 | "name": "battery", 4176 | "unicode": "1F50B", 4177 | "shortcode": "battery", 4178 | "description": "BATTERY", 4179 | "category": "thing" 4180 | }, 4181 | { 4182 | "name": "electric_plug", 4183 | "unicode": "1F50C", 4184 | "shortcode": "electric_plug", 4185 | "description": "ELECTRIC PLUG", 4186 | "category": "thing" 4187 | }, 4188 | { 4189 | "name": "mag", 4190 | "unicode": "1F50D", 4191 | "shortcode": "mag", 4192 | "description": "LEFT-POINTING MAGNIFYING GLASS", 4193 | "category": "thing" 4194 | }, 4195 | { 4196 | "name": "mag_right", 4197 | "unicode": "1F50E", 4198 | "shortcode": "mag_right", 4199 | "description": "RIGHT-POINTING MAGNIFYING GLASS", 4200 | "category": "thing" 4201 | }, 4202 | { 4203 | "name": "lock_with_ink_pen", 4204 | "unicode": "1F50F", 4205 | "shortcode": "lock_with_ink_pen", 4206 | "description": "LOCK WITH INK PEN", 4207 | "category": "thing" 4208 | }, 4209 | { 4210 | "name": "closed_lock_with_key", 4211 | "unicode": "1F510", 4212 | "shortcode": "closed_lock_with_key", 4213 | "description": "CLOSED LOCK WITH KEY", 4214 | "category": "thing" 4215 | }, 4216 | { 4217 | "name": "key", 4218 | "unicode": "1F511", 4219 | "shortcode": "key", 4220 | "description": "KEY", 4221 | "category": "thing" 4222 | }, 4223 | { 4224 | "name": "lock", 4225 | "unicode": "1F512", 4226 | "shortcode": "lock", 4227 | "description": "LOCK", 4228 | "category": "thing" 4229 | }, 4230 | { 4231 | "name": "unlock", 4232 | "unicode": "1F513", 4233 | "shortcode": "unlock", 4234 | "description": "OPEN LOCK", 4235 | "category": "thing" 4236 | }, 4237 | { 4238 | "name": "bell", 4239 | "unicode": "1F514", 4240 | "shortcode": "bell", 4241 | "description": "BELL", 4242 | "category": "thing" 4243 | }, 4244 | { 4245 | "name": "no_bell", 4246 | "unicode": "1F515", 4247 | "shortcode": "no_bell", 4248 | "description": "BELL WITH CANCELLATION STROKE", 4249 | "category": "thing" 4250 | }, 4251 | { 4252 | "name": "bookmark", 4253 | "unicode": "1F516", 4254 | "shortcode": "bookmark", 4255 | "description": "BOOKMARK", 4256 | "category": "folderol" 4257 | }, 4258 | { 4259 | "name": "link", 4260 | "unicode": "1F517", 4261 | "shortcode": "link", 4262 | "description": "LINK SYMBOL", 4263 | "category": "folderol" 4264 | }, 4265 | { 4266 | "name": "radio_button", 4267 | "unicode": "1F518", 4268 | "shortcode": "radio_button", 4269 | "description": "RADIO BUTTON", 4270 | "category": "folderol" 4271 | }, 4272 | { 4273 | "name": "back", 4274 | "unicode": "1F519", 4275 | "shortcode": "back", 4276 | "description": "BACK WITH LEFTWARDS ARROW ABOVE", 4277 | "category": "folderol" 4278 | }, 4279 | { 4280 | "name": "end", 4281 | "unicode": "1F51A", 4282 | "shortcode": "end", 4283 | "description": "END WITH LEFTWARDS ARROW ABOVE", 4284 | "category": "folderol" 4285 | }, 4286 | { 4287 | "name": "on", 4288 | "unicode": "1F51B", 4289 | "shortcode": "on", 4290 | "description": "ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE", 4291 | "category": "folderol" 4292 | }, 4293 | { 4294 | "name": "soon", 4295 | "unicode": "1F51C", 4296 | "shortcode": "soon", 4297 | "description": "SOON WITH RIGHTWARDS ARROW ABOVE", 4298 | "category": "folderol" 4299 | }, 4300 | { 4301 | "name": "top", 4302 | "unicode": "1F51D", 4303 | "shortcode": "top", 4304 | "description": "TOP WITH UPWARDS ARROW ABOVE", 4305 | "category": "folderol" 4306 | }, 4307 | { 4308 | "name": "underage", 4309 | "unicode": "1F51E", 4310 | "shortcode": "underage", 4311 | "description": "NO ONE UNDER EIGHTEEN SYMBOL", 4312 | "category": "folderol" 4313 | }, 4314 | { 4315 | "name": "keycap_ten", 4316 | "unicode": "1F51F", 4317 | "shortcode": "keycap_ten", 4318 | "description": "KEYCAP TEN", 4319 | "category": "folderol" 4320 | }, 4321 | { 4322 | "name": "capital_abcd", 4323 | "unicode": "1F520", 4324 | "shortcode": "capital_abcd", 4325 | "description": "INPUT SYMBOL FOR LATIN CAPITAL LETTERS", 4326 | "category": "folderol" 4327 | }, 4328 | { 4329 | "name": "abcd", 4330 | "unicode": "1F521", 4331 | "shortcode": "abcd", 4332 | "description": "INPUT SYMBOL FOR LATIN SMALL LETTERS", 4333 | "category": "folderol" 4334 | }, 4335 | { 4336 | "name": "1234", 4337 | "unicode": "1F522", 4338 | "shortcode": "1234", 4339 | "description": "INPUT SYMBOL FOR NUMBERS", 4340 | "category": "folderol" 4341 | }, 4342 | { 4343 | "name": "symbols", 4344 | "unicode": "1F523", 4345 | "shortcode": "symbols", 4346 | "description": "INPUT SYMBOL FOR SYMBOLS", 4347 | "category": "folderol" 4348 | }, 4349 | { 4350 | "name": "abc", 4351 | "unicode": "1F524", 4352 | "shortcode": "abc", 4353 | "description": "INPUT SYMBOL FOR LATIN LETTERS", 4354 | "category": "folderol" 4355 | }, 4356 | { 4357 | "name": "fire", 4358 | "unicode": "1F525", 4359 | "shortcode": "fire", 4360 | "description": "FIRE", 4361 | "category": "thing" 4362 | }, 4363 | { 4364 | "name": "flashlight", 4365 | "unicode": "1F526", 4366 | "shortcode": "flashlight", 4367 | "description": "ELECTRIC TORCH", 4368 | "category": "thing" 4369 | }, 4370 | { 4371 | "name": "wrench", 4372 | "unicode": "1F527", 4373 | "shortcode": "wrench", 4374 | "description": "WRENCH", 4375 | "category": "thing" 4376 | }, 4377 | { 4378 | "name": "hammer", 4379 | "unicode": "1F528", 4380 | "shortcode": "hammer", 4381 | "description": "HAMMER", 4382 | "category": "thing" 4383 | }, 4384 | { 4385 | "name": "nut_and_bolt", 4386 | "unicode": "1F529", 4387 | "shortcode": "nut_and_bolt", 4388 | "description": "NUT AND BOLT", 4389 | "category": "thing" 4390 | }, 4391 | { 4392 | "name": "hocho", 4393 | "unicode": "1F52A", 4394 | "shortcode": "hocho", 4395 | "description": "HOCHO", 4396 | "category": "thing" 4397 | }, 4398 | { 4399 | "name": "gun", 4400 | "unicode": "1F52B", 4401 | "shortcode": "gun", 4402 | "description": "PISTOL", 4403 | "category": "thing" 4404 | }, 4405 | { 4406 | "name": "microscope", 4407 | "unicode": "1F52C", 4408 | "shortcode": "microscope", 4409 | "description": "MICROSCOPE", 4410 | "category": "thing" 4411 | }, 4412 | { 4413 | "name": "telescope", 4414 | "unicode": "1F52D", 4415 | "shortcode": "telescope", 4416 | "description": "TELESCOPE", 4417 | "category": "thing" 4418 | }, 4419 | { 4420 | "name": "crystal_ball", 4421 | "unicode": "1F52E", 4422 | "shortcode": "crystal_ball", 4423 | "description": "CRYSTAL BALL", 4424 | "category": "thing" 4425 | }, 4426 | { 4427 | "name": "six_pointed_star", 4428 | "unicode": "1F52F", 4429 | "shortcode": "six_pointed_star", 4430 | "description": "SIX POINTED STAR WITH MIDDLE DOT", 4431 | "category": "thing" 4432 | }, 4433 | { 4434 | "name": "beginner", 4435 | "unicode": "1F530", 4436 | "shortcode": "beginner", 4437 | "description": "JAPANESE SYMBOL FOR BEGINNER", 4438 | "category": "thing" 4439 | }, 4440 | { 4441 | "name": "trident", 4442 | "unicode": "1F531", 4443 | "shortcode": "trident", 4444 | "description": "TRIDENT EMBLEM", 4445 | "category": "thing" 4446 | }, 4447 | { 4448 | "name": "black_square_button", 4449 | "unicode": "1F532", 4450 | "shortcode": "black_square_button", 4451 | "description": "BLACK SQUARE BUTTON", 4452 | "category": "folderol" 4453 | }, 4454 | { 4455 | "name": "white_square_button", 4456 | "unicode": "1F533", 4457 | "shortcode": "white_square_button", 4458 | "description": "WHITE SQUARE BUTTON", 4459 | "category": "folderol" 4460 | }, 4461 | { 4462 | "name": "red_circle", 4463 | "unicode": "1F534", 4464 | "shortcode": "red_circle", 4465 | "description": "LARGE RED CIRCLE", 4466 | "category": "folderol" 4467 | }, 4468 | { 4469 | "name": "large_blue_circle", 4470 | "unicode": "1F535", 4471 | "shortcode": "large_blue_circle", 4472 | "description": "LARGE BLUE CIRCLE", 4473 | "category": "folderol" 4474 | }, 4475 | { 4476 | "name": "large_orange_diamond", 4477 | "unicode": "1F536", 4478 | "shortcode": "large_orange_diamond", 4479 | "description": "LARGE ORANGE DIAMOND", 4480 | "category": "folderol" 4481 | }, 4482 | { 4483 | "name": "large_blue_diamond", 4484 | "unicode": "1F537", 4485 | "shortcode": "large_blue_diamond", 4486 | "description": "LARGE BLUE DIAMOND", 4487 | "category": "folderol" 4488 | }, 4489 | { 4490 | "name": "small_orange_diamond", 4491 | "unicode": "1F538", 4492 | "shortcode": "small_orange_diamond", 4493 | "description": "SMALL ORANGE DIAMOND", 4494 | "category": "folderol" 4495 | }, 4496 | { 4497 | "name": "small_blue_diamond", 4498 | "unicode": "1F539", 4499 | "shortcode": "small_blue_diamond", 4500 | "description": "SMALL BLUE DIAMOND", 4501 | "category": "folderol" 4502 | }, 4503 | { 4504 | "name": "small_red_triangle", 4505 | "unicode": "1F53A", 4506 | "shortcode": "small_red_triangle", 4507 | "description": "UP-POINTING RED TRIANGLE", 4508 | "category": "folderol" 4509 | }, 4510 | { 4511 | "name": "small_red_triangle_down", 4512 | "unicode": "1F53B", 4513 | "shortcode": "small_red_triangle_down", 4514 | "description": "DOWN-POINTING RED TRIANGLE", 4515 | "category": "folderol" 4516 | }, 4517 | { 4518 | "name": "arrow_up_small", 4519 | "unicode": "1F53C", 4520 | "shortcode": "arrow_up_small", 4521 | "description": "UP-POINTING SMALL RED TRIANGLE", 4522 | "category": "folderol" 4523 | }, 4524 | { 4525 | "name": "arrow_down_small", 4526 | "unicode": "1F53D", 4527 | "shortcode": "arrow_down_small", 4528 | "description": "DOWN-POINTING SMALL RED TRIANGLE", 4529 | "category": "folderol" 4530 | }, 4531 | { 4532 | "name": "clock1", 4533 | "unicode": "1F550", 4534 | "shortcode": "clock1", 4535 | "description": "CLOCK FACE ONE OCLOCK", 4536 | "category": "folderol" 4537 | }, 4538 | { 4539 | "name": "clock2", 4540 | "unicode": "1F551", 4541 | "shortcode": "clock2", 4542 | "description": "CLOCK FACE TWO OCLOCK", 4543 | "category": "folderol" 4544 | }, 4545 | { 4546 | "name": "clock3", 4547 | "unicode": "1F552", 4548 | "shortcode": "clock3", 4549 | "description": "CLOCK FACE THREE OCLOCK", 4550 | "category": "folderol" 4551 | }, 4552 | { 4553 | "name": "clock4", 4554 | "unicode": "1F553", 4555 | "shortcode": "clock4", 4556 | "description": "CLOCK FACE FOUR OCLOCK", 4557 | "category": "folderol" 4558 | }, 4559 | { 4560 | "name": "clock5", 4561 | "unicode": "1F554", 4562 | "shortcode": "clock5", 4563 | "description": "CLOCK FACE FIVE OCLOCK", 4564 | "category": "folderol" 4565 | }, 4566 | { 4567 | "name": "clock6", 4568 | "unicode": "1F555", 4569 | "shortcode": "clock6", 4570 | "description": "CLOCK FACE SIX OCLOCK", 4571 | "category": "folderol" 4572 | }, 4573 | { 4574 | "name": "clock7", 4575 | "unicode": "1F556", 4576 | "shortcode": "clock7", 4577 | "description": "CLOCK FACE SEVEN OCLOCK", 4578 | "category": "folderol" 4579 | }, 4580 | { 4581 | "name": "clock8", 4582 | "unicode": "1F557", 4583 | "shortcode": "clock8", 4584 | "description": "CLOCK FACE EIGHT OCLOCK", 4585 | "category": "folderol" 4586 | }, 4587 | { 4588 | "name": "clock9", 4589 | "unicode": "1F558", 4590 | "shortcode": "clock9", 4591 | "description": "CLOCK FACE NINE OCLOCK", 4592 | "category": "folderol" 4593 | }, 4594 | { 4595 | "name": "clock10", 4596 | "unicode": "1F559", 4597 | "shortcode": "clock10", 4598 | "description": "CLOCK FACE TEN OCLOCK", 4599 | "category": "folderol" 4600 | }, 4601 | { 4602 | "name": "clock11", 4603 | "unicode": "1F55A", 4604 | "shortcode": "clock11", 4605 | "description": "CLOCK FACE ELEVEN OCLOCK", 4606 | "category": "folderol" 4607 | }, 4608 | { 4609 | "name": "clock12", 4610 | "unicode": "1F55B", 4611 | "shortcode": "clock12", 4612 | "description": "CLOCK FACE TWELVE OCLOCK", 4613 | "category": "folderol" 4614 | }, 4615 | { 4616 | "name": "clock130", 4617 | "unicode": "1F55C", 4618 | "shortcode": "clock130", 4619 | "description": "CLOCK FACE ONE-THIRTY", 4620 | "category": "folderol" 4621 | }, 4622 | { 4623 | "name": "clock230", 4624 | "unicode": "1F55D", 4625 | "shortcode": "clock230", 4626 | "description": "CLOCK FACE TWO-THIRTY", 4627 | "category": "folderol" 4628 | }, 4629 | { 4630 | "name": "clock330", 4631 | "unicode": "1F55E", 4632 | "shortcode": "clock330", 4633 | "description": "CLOCK FACE THREE-THIRTY", 4634 | "category": "folderol" 4635 | }, 4636 | { 4637 | "name": "clock430", 4638 | "unicode": "1F55F", 4639 | "shortcode": "clock430", 4640 | "description": "CLOCK FACE FOUR-THIRTY", 4641 | "category": "folderol" 4642 | }, 4643 | { 4644 | "name": "clock530", 4645 | "unicode": "1F560", 4646 | "shortcode": "clock530", 4647 | "description": "CLOCK FACE FIVE-THIRTY", 4648 | "category": "folderol" 4649 | }, 4650 | { 4651 | "name": "clock630", 4652 | "unicode": "1F561", 4653 | "shortcode": "clock630", 4654 | "description": "CLOCK FACE SIX-THIRTY", 4655 | "category": "folderol" 4656 | }, 4657 | { 4658 | "name": "clock730", 4659 | "unicode": "1F562", 4660 | "shortcode": "clock730", 4661 | "description": "CLOCK FACE SEVEN-THIRTY", 4662 | "category": "folderol" 4663 | }, 4664 | { 4665 | "name": "clock830", 4666 | "unicode": "1F563", 4667 | "shortcode": "clock830", 4668 | "description": "CLOCK FACE EIGHT-THIRTY", 4669 | "category": "folderol" 4670 | }, 4671 | { 4672 | "name": "clock930", 4673 | "unicode": "1F564", 4674 | "shortcode": "clock930", 4675 | "description": "CLOCK FACE NINE-THIRTY", 4676 | "category": "folderol" 4677 | }, 4678 | { 4679 | "name": "clock1030", 4680 | "unicode": "1F565", 4681 | "shortcode": "clock1030", 4682 | "description": "CLOCK FACE TEN-THIRTY", 4683 | "category": "folderol" 4684 | }, 4685 | { 4686 | "name": "clock1130", 4687 | "unicode": "1F566", 4688 | "shortcode": "clock1130", 4689 | "description": "CLOCK FACE ELEVEN-THIRTY", 4690 | "category": "folderol" 4691 | }, 4692 | { 4693 | "name": "clock1230", 4694 | "unicode": "1F567", 4695 | "shortcode": "clock1230", 4696 | "description": "CLOCK FACE TWELVE-THIRTY", 4697 | "category": "folderol" 4698 | }, 4699 | { 4700 | "name": "mount_fuji", 4701 | "unicode": "1F5FB", 4702 | "shortcode": "mount_fuji", 4703 | "description": "MOUNT FUJI", 4704 | "category": "travel" 4705 | }, 4706 | { 4707 | "name": "tokyo_tower", 4708 | "unicode": "1F5FC", 4709 | "shortcode": "tokyo_tower", 4710 | "description": "TOKYO TOWER", 4711 | "category": "travel" 4712 | }, 4713 | { 4714 | "name": "statue_of_liberty", 4715 | "unicode": "1F5FD", 4716 | "shortcode": "statue_of_liberty", 4717 | "description": "STATUE OF LIBERTY", 4718 | "category": "travel" 4719 | }, 4720 | { 4721 | "name": "japan", 4722 | "unicode": "1F5FE", 4723 | "shortcode": "japan", 4724 | "description": "SILHOUETTE OF JAPAN", 4725 | "category": "travel" 4726 | }, 4727 | { 4728 | "name": "moyai", 4729 | "unicode": "1F5FF", 4730 | "shortcode": "moyai", 4731 | "description": "MOYAI", 4732 | "category": "travel" 4733 | }, 4734 | { 4735 | "name": "grinning", 4736 | "unicode": "1F600", 4737 | "shortcode": "grinning", 4738 | "description": "GRINNING FACE", 4739 | "category": "people" 4740 | }, 4741 | { 4742 | "name": "grin", 4743 | "unicode": "1F601", 4744 | "shortcode": "grin", 4745 | "description": "GRINNING FACE WITH SMILING EYES", 4746 | "category": "people" 4747 | }, 4748 | { 4749 | "name": "joy", 4750 | "unicode": "1F602", 4751 | "shortcode": "joy", 4752 | "description": "FACE WITH TEARS OF JOY", 4753 | "category": "people" 4754 | }, 4755 | { 4756 | "name": "smiley", 4757 | "unicode": "1F603", 4758 | "shortcode": "smiley", 4759 | "description": "SMILING FACE WITH OPEN MOUTH", 4760 | "category": "people" 4761 | }, 4762 | { 4763 | "name": "smile", 4764 | "unicode": "1F604", 4765 | "shortcode": "smile", 4766 | "description": "SMILING FACE WITH OPEN MOUTH AND SMILING EYES", 4767 | "category": "people" 4768 | }, 4769 | { 4770 | "name": "sweat_smile", 4771 | "unicode": "1F605", 4772 | "shortcode": "sweat_smile", 4773 | "description": "SMILING FACE WITH OPEN MOUTH AND COLD SWEAT", 4774 | "category": "people" 4775 | }, 4776 | { 4777 | "name": "laughing", 4778 | "unicode": "1F606", 4779 | "shortcode": "laughing", 4780 | "description": "SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES", 4781 | "category": "people" 4782 | }, 4783 | { 4784 | "name": "innocent", 4785 | "unicode": "1F607", 4786 | "shortcode": "innocent", 4787 | "description": "SMILING FACE WITH HALO", 4788 | "category": "people" 4789 | }, 4790 | { 4791 | "name": "smiling_imp", 4792 | "unicode": "1F608", 4793 | "shortcode": "smiling_imp", 4794 | "description": "SMILING FACE WITH HORNS", 4795 | "category": "people" 4796 | }, 4797 | { 4798 | "name": "wink", 4799 | "unicode": "1F609", 4800 | "shortcode": "wink", 4801 | "description": "WINKING FACE", 4802 | "category": "people" 4803 | }, 4804 | { 4805 | "name": "blush", 4806 | "unicode": "1F60A", 4807 | "shortcode": "blush", 4808 | "description": "SMILING FACE WITH SMILING EYES", 4809 | "category": "people" 4810 | }, 4811 | { 4812 | "name": "yum", 4813 | "unicode": "1F60B", 4814 | "shortcode": "yum", 4815 | "description": "FACE SAVOURING DELICIOUS FOOD", 4816 | "category": "people" 4817 | }, 4818 | { 4819 | "name": "relieved", 4820 | "unicode": "1F60C", 4821 | "shortcode": "relieved", 4822 | "description": "RELIEVED FACE", 4823 | "category": "people" 4824 | }, 4825 | { 4826 | "name": "heart_eyes", 4827 | "unicode": "1F60D", 4828 | "shortcode": "heart_eyes", 4829 | "description": "SMILING FACE WITH HEART-SHAPED EYES", 4830 | "category": "people" 4831 | }, 4832 | { 4833 | "name": "sunglasses", 4834 | "unicode": "1F60E", 4835 | "shortcode": "sunglasses", 4836 | "description": "SMILING FACE WITH SUNGLASSES", 4837 | "category": "people" 4838 | }, 4839 | { 4840 | "name": "smirk", 4841 | "unicode": "1F60F", 4842 | "shortcode": "smirk", 4843 | "description": "SMIRKING FACE", 4844 | "category": "people" 4845 | }, 4846 | { 4847 | "name": "neutral_face", 4848 | "unicode": "1F610", 4849 | "shortcode": "neutral_face", 4850 | "description": "NEUTRAL FACE", 4851 | "category": "people" 4852 | }, 4853 | { 4854 | "name": "expressionless", 4855 | "unicode": "1F611", 4856 | "shortcode": "expressionless", 4857 | "description": "EXPRESSIONLESS FACE", 4858 | "category": "people" 4859 | }, 4860 | { 4861 | "name": "unamused", 4862 | "unicode": "1F612", 4863 | "shortcode": "unamused", 4864 | "description": "UNAMUSED FACE", 4865 | "category": "people" 4866 | }, 4867 | { 4868 | "name": "sweat", 4869 | "unicode": "1F613", 4870 | "shortcode": "sweat", 4871 | "description": "FACE WITH COLD SWEAT", 4872 | "category": "people" 4873 | }, 4874 | { 4875 | "name": "pensive", 4876 | "unicode": "1F614", 4877 | "shortcode": "pensive", 4878 | "description": "PENSIVE FACE", 4879 | "category": "people" 4880 | }, 4881 | { 4882 | "name": "confused", 4883 | "unicode": "1F615", 4884 | "shortcode": "confused", 4885 | "description": "CONFUSED FACE", 4886 | "category": "people" 4887 | }, 4888 | { 4889 | "name": "confounded", 4890 | "unicode": "1F616", 4891 | "shortcode": "confounded", 4892 | "description": "CONFOUNDED FACE", 4893 | "category": "people" 4894 | }, 4895 | { 4896 | "name": "kissing", 4897 | "unicode": "1F617", 4898 | "shortcode": "kissing", 4899 | "description": "KISSING FACE", 4900 | "category": "people" 4901 | }, 4902 | { 4903 | "name": "kissing_heart", 4904 | "unicode": "1F618", 4905 | "shortcode": "kissing_heart", 4906 | "description": "FACE THROWING A KISS", 4907 | "category": "people" 4908 | }, 4909 | { 4910 | "name": "kissing_smiling_eyes", 4911 | "unicode": "1F619", 4912 | "shortcode": "kissing_smiling_eyes", 4913 | "description": "KISSING FACE WITH SMILING EYES", 4914 | "category": "people" 4915 | }, 4916 | { 4917 | "name": "kissing_closed_eyes", 4918 | "unicode": "1F61A", 4919 | "shortcode": "kissing_closed_eyes", 4920 | "description": "KISSING FACE WITH CLOSED EYES", 4921 | "category": "people" 4922 | }, 4923 | { 4924 | "name": "stuck_out_tongue", 4925 | "unicode": "1F61B", 4926 | "shortcode": "stuck_out_tongue", 4927 | "description": "FACE WITH STUCK-OUT TONGUE", 4928 | "category": "people" 4929 | }, 4930 | { 4931 | "name": "stuck_out_tongue_winking_eye", 4932 | "unicode": "1F61C", 4933 | "shortcode": "stuck_out_tongue_winking_eye", 4934 | "description": "FACE WITH STUCK-OUT TONGUE AND WINKING EYE", 4935 | "category": "people" 4936 | }, 4937 | { 4938 | "name": "stuck_out_tongue_closed_eyes", 4939 | "unicode": "1F61D", 4940 | "shortcode": "stuck_out_tongue_closed_eyes", 4941 | "description": "FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES", 4942 | "category": "people" 4943 | }, 4944 | { 4945 | "name": "disappointed", 4946 | "unicode": "1F61E", 4947 | "shortcode": "disappointed", 4948 | "description": "DISAPPOINTED FACE", 4949 | "category": "people" 4950 | }, 4951 | { 4952 | "name": "worried", 4953 | "unicode": "1F61F", 4954 | "shortcode": "worried", 4955 | "description": "WORRIED FACE", 4956 | "category": "people" 4957 | }, 4958 | { 4959 | "name": "angry", 4960 | "unicode": "1F620", 4961 | "shortcode": "angry", 4962 | "description": "ANGRY FACE", 4963 | "category": "people" 4964 | }, 4965 | { 4966 | "name": "rage", 4967 | "unicode": "1F621", 4968 | "shortcode": "rage", 4969 | "description": "POUTING FACE", 4970 | "category": "people" 4971 | }, 4972 | { 4973 | "name": "cry", 4974 | "unicode": "1F622", 4975 | "shortcode": "cry", 4976 | "description": "CRYING FACE", 4977 | "category": "people" 4978 | }, 4979 | { 4980 | "name": "persevere", 4981 | "unicode": "1F623", 4982 | "shortcode": "persevere", 4983 | "description": "PERSEVERING FACE", 4984 | "category": "people" 4985 | }, 4986 | { 4987 | "name": "triumph", 4988 | "unicode": "1F624", 4989 | "shortcode": "triumph", 4990 | "description": "FACE WITH LOOK OF TRIUMPH", 4991 | "category": "people" 4992 | }, 4993 | { 4994 | "name": "disappointed_relieved", 4995 | "unicode": "1F625", 4996 | "shortcode": "disappointed_relieved", 4997 | "description": "DISAPPOINTED BUT RELIEVED FACE", 4998 | "category": "people" 4999 | }, 5000 | { 5001 | "name": "frowning", 5002 | "unicode": "1F626", 5003 | "shortcode": "frowning", 5004 | "description": "FROWNING FACE WITH OPEN MOUTH", 5005 | "category": "people" 5006 | }, 5007 | { 5008 | "name": "anguished", 5009 | "unicode": "1F627", 5010 | "shortcode": "anguished", 5011 | "description": "ANGUISHED FACE", 5012 | "category": "people" 5013 | }, 5014 | { 5015 | "name": "fearful", 5016 | "unicode": "1F628", 5017 | "shortcode": "fearful", 5018 | "description": "FEARFUL FACE", 5019 | "category": "people" 5020 | }, 5021 | { 5022 | "name": "weary", 5023 | "unicode": "1F629", 5024 | "shortcode": "weary", 5025 | "description": "WEARY FACE", 5026 | "category": "people" 5027 | }, 5028 | { 5029 | "name": "sleepy", 5030 | "unicode": "1F62A", 5031 | "shortcode": "sleepy", 5032 | "description": "SLEEPY FACE", 5033 | "category": "people" 5034 | }, 5035 | { 5036 | "name": "tired_face", 5037 | "unicode": "1F62B", 5038 | "shortcode": "tired_face", 5039 | "description": "TIRED FACE", 5040 | "category": "people" 5041 | }, 5042 | { 5043 | "name": "grimacing", 5044 | "unicode": "1F62C", 5045 | "shortcode": "grimacing", 5046 | "description": "GRIMACING FACE", 5047 | "category": "people" 5048 | }, 5049 | { 5050 | "name": "sob", 5051 | "unicode": "1F62D", 5052 | "shortcode": "sob", 5053 | "description": "LOUDLY CRYING FACE", 5054 | "category": "people" 5055 | }, 5056 | { 5057 | "name": "open_mouth", 5058 | "unicode": "1F62E", 5059 | "shortcode": "open_mouth", 5060 | "description": "FACE WITH OPEN MOUTH", 5061 | "category": "people" 5062 | }, 5063 | { 5064 | "name": "hushed", 5065 | "unicode": "1F62F", 5066 | "shortcode": "hushed", 5067 | "description": "HUSHED FACE", 5068 | "category": "people" 5069 | }, 5070 | { 5071 | "name": "cold_sweat", 5072 | "unicode": "1F630", 5073 | "shortcode": "cold_sweat", 5074 | "description": "FACE WITH OPEN MOUTH AND COLD SWEAT", 5075 | "category": "people" 5076 | }, 5077 | { 5078 | "name": "scream", 5079 | "unicode": "1F631", 5080 | "shortcode": "scream", 5081 | "description": "FACE SCREAMING IN FEAR", 5082 | "category": "people" 5083 | }, 5084 | { 5085 | "name": "astonished", 5086 | "unicode": "1F632", 5087 | "shortcode": "astonished", 5088 | "description": "ASTONISHED FACE", 5089 | "category": "people" 5090 | }, 5091 | { 5092 | "name": "flushed", 5093 | "unicode": "1F633", 5094 | "shortcode": "flushed", 5095 | "description": "FLUSHED FACE", 5096 | "category": "people" 5097 | }, 5098 | { 5099 | "name": "sleeping", 5100 | "unicode": "1F634", 5101 | "shortcode": "sleeping", 5102 | "description": "SLEEPING FACE", 5103 | "category": "people" 5104 | }, 5105 | { 5106 | "name": "dizzy_face", 5107 | "unicode": "1F635", 5108 | "shortcode": "dizzy_face", 5109 | "description": "DIZZY FACE", 5110 | "category": "people" 5111 | }, 5112 | { 5113 | "name": "no_mouth", 5114 | "unicode": "1F636", 5115 | "shortcode": "no_mouth", 5116 | "description": "FACE WITHOUT MOUTH", 5117 | "category": "people" 5118 | }, 5119 | { 5120 | "name": "mask", 5121 | "unicode": "1F637", 5122 | "shortcode": "mask", 5123 | "description": "FACE WITH MEDICAL MASK", 5124 | "category": "people" 5125 | }, 5126 | { 5127 | "name": "smile_cat", 5128 | "unicode": "1F638", 5129 | "shortcode": "smile_cat", 5130 | "description": "GRINNING CAT FACE WITH SMILING EYES", 5131 | "category": "people" 5132 | }, 5133 | { 5134 | "name": "joy_cat", 5135 | "unicode": "1F639", 5136 | "shortcode": "joy_cat", 5137 | "description": "CAT FACE WITH TEARS OF JOY", 5138 | "category": "people" 5139 | }, 5140 | { 5141 | "name": "smiley_cat", 5142 | "unicode": "1F63A", 5143 | "shortcode": "smiley_cat", 5144 | "description": "SMILING CAT FACE WITH OPEN MOUTH", 5145 | "category": "people" 5146 | }, 5147 | { 5148 | "name": "heart_eyes_cat", 5149 | "unicode": "1F63B", 5150 | "shortcode": "heart_eyes_cat", 5151 | "description": "SMILING CAT FACE WITH HEART-SHAPED EYES", 5152 | "category": "people" 5153 | }, 5154 | { 5155 | "name": "smirk_cat", 5156 | "unicode": "1F63C", 5157 | "shortcode": "smirk_cat", 5158 | "description": "CAT FACE WITH WRY SMILE", 5159 | "category": "people" 5160 | }, 5161 | { 5162 | "name": "kissing_cat", 5163 | "unicode": "1F63D", 5164 | "shortcode": "kissing_cat", 5165 | "description": "KISSING CAT FACE WITH CLOSED EYES", 5166 | "category": "people" 5167 | }, 5168 | { 5169 | "name": "pouting_cat", 5170 | "unicode": "1F63E", 5171 | "shortcode": "pouting_cat", 5172 | "description": "POUTING CAT FACE", 5173 | "category": "people" 5174 | }, 5175 | { 5176 | "name": "crying_cat_face", 5177 | "unicode": "1F63F", 5178 | "shortcode": "crying_cat_face", 5179 | "description": "CRYING CAT FACE", 5180 | "category": "people" 5181 | }, 5182 | { 5183 | "name": "scream_cat", 5184 | "unicode": "1F640", 5185 | "shortcode": "scream_cat", 5186 | "description": "WEARY CAT FACE", 5187 | "category": "people" 5188 | }, 5189 | { 5190 | "name": "no_good", 5191 | "unicode": "1F645", 5192 | "shortcode": "no_good", 5193 | "description": "FACE WITH NO GOOD GESTURE", 5194 | "category": "people" 5195 | }, 5196 | { 5197 | "name": "ok_woman", 5198 | "unicode": "1F646", 5199 | "shortcode": "ok_woman", 5200 | "description": "FACE WITH OK GESTURE", 5201 | "category": "people" 5202 | }, 5203 | { 5204 | "name": "bow", 5205 | "unicode": "1F647", 5206 | "shortcode": "bow", 5207 | "description": "PERSON BOWING DEEPLY", 5208 | "category": "people" 5209 | }, 5210 | { 5211 | "name": "see_no_evil", 5212 | "unicode": "1F648", 5213 | "shortcode": "see_no_evil", 5214 | "description": "SEE-NO-EVIL MONKEY", 5215 | "category": "people" 5216 | }, 5217 | { 5218 | "name": "hear_no_evil", 5219 | "unicode": "1F649", 5220 | "shortcode": "hear_no_evil", 5221 | "description": "HEAR-NO-EVIL MONKEY", 5222 | "category": "people" 5223 | }, 5224 | { 5225 | "name": "speak_no_evil", 5226 | "unicode": "1F64A", 5227 | "shortcode": "speak_no_evil", 5228 | "description": "SPEAK-NO-EVIL MONKEY", 5229 | "category": "people" 5230 | }, 5231 | { 5232 | "name": "raising_hand", 5233 | "unicode": "1F64B", 5234 | "shortcode": "raising_hand", 5235 | "description": "HAPPY PERSON RAISING ONE HAND", 5236 | "category": "people" 5237 | }, 5238 | { 5239 | "name": "raised_hands", 5240 | "unicode": "1F64C", 5241 | "shortcode": "raised_hands", 5242 | "description": "PERSON RAISING BOTH HANDS IN CELEBRATION", 5243 | "category": "people" 5244 | }, 5245 | { 5246 | "name": "person_frowning", 5247 | "unicode": "1F64D", 5248 | "shortcode": "person_frowning", 5249 | "description": "PERSON FROWNING", 5250 | "category": "people" 5251 | }, 5252 | { 5253 | "name": "person_with_pouting_face", 5254 | "unicode": "1F64E", 5255 | "shortcode": "person_with_pouting_face", 5256 | "description": "PERSON WITH POUTING FACE", 5257 | "category": "people" 5258 | }, 5259 | { 5260 | "name": "pray", 5261 | "unicode": "1F64F", 5262 | "shortcode": "pray", 5263 | "description": "PERSON WITH FOLDED HANDS", 5264 | "category": "people" 5265 | }, 5266 | { 5267 | "name": "rocket", 5268 | "unicode": "1F680", 5269 | "shortcode": "rocket", 5270 | "description": "ROCKET", 5271 | "category": "travel" 5272 | }, 5273 | { 5274 | "name": "helicopter", 5275 | "unicode": "1F681", 5276 | "shortcode": "helicopter", 5277 | "description": "HELICOPTER", 5278 | "category": "travel" 5279 | }, 5280 | { 5281 | "name": "steam_locomotive", 5282 | "unicode": "1F682", 5283 | "shortcode": "steam_locomotive", 5284 | "description": "STEAM LOCOMOTIVE", 5285 | "category": "travel" 5286 | }, 5287 | { 5288 | "name": "railway_car", 5289 | "unicode": "1F683", 5290 | "shortcode": "railway_car", 5291 | "description": "RAILWAY CAR", 5292 | "category": "travel" 5293 | }, 5294 | { 5295 | "name": "bullettrain_side", 5296 | "unicode": "1F684", 5297 | "shortcode": "bullettrain_side", 5298 | "description": "HIGH-SPEED TRAIN", 5299 | "category": "travel" 5300 | }, 5301 | { 5302 | "name": "bullettrain_front", 5303 | "unicode": "1F685", 5304 | "shortcode": "bullettrain_front", 5305 | "description": "HIGH-SPEED TRAIN WITH BULLET NOSE", 5306 | "category": "travel" 5307 | }, 5308 | { 5309 | "name": "train2", 5310 | "unicode": "1F686", 5311 | "shortcode": "train2", 5312 | "description": "TRAIN", 5313 | "category": "travel" 5314 | }, 5315 | { 5316 | "name": "metro", 5317 | "unicode": "1F687", 5318 | "shortcode": "metro", 5319 | "description": "METRO", 5320 | "category": "travel" 5321 | }, 5322 | { 5323 | "name": "light_rail", 5324 | "unicode": "1F688", 5325 | "shortcode": "light_rail", 5326 | "description": "LIGHT RAIL", 5327 | "category": "travel" 5328 | }, 5329 | { 5330 | "name": "station", 5331 | "unicode": "1F689", 5332 | "shortcode": "station", 5333 | "description": "STATION", 5334 | "category": "travel" 5335 | }, 5336 | { 5337 | "name": "tram", 5338 | "unicode": "1F68A", 5339 | "shortcode": "tram", 5340 | "description": "TRAM", 5341 | "category": "travel" 5342 | }, 5343 | { 5344 | "name": "train", 5345 | "unicode": "1F68B", 5346 | "shortcode": "train", 5347 | "description": "TRAM CAR", 5348 | "category": "travel" 5349 | }, 5350 | { 5351 | "name": "bus", 5352 | "unicode": "1F68C", 5353 | "shortcode": "bus", 5354 | "description": "BUS", 5355 | "category": "travel" 5356 | }, 5357 | { 5358 | "name": "oncoming_bus", 5359 | "unicode": "1F68D", 5360 | "shortcode": "oncoming_bus", 5361 | "description": "ONCOMING BUS", 5362 | "category": "travel" 5363 | }, 5364 | { 5365 | "name": "trolleybus", 5366 | "unicode": "1F68E", 5367 | "shortcode": "trolleybus", 5368 | "description": "TROLLEYBUS", 5369 | "category": "travel" 5370 | }, 5371 | { 5372 | "name": "busstop", 5373 | "unicode": "1F68F", 5374 | "shortcode": "busstop", 5375 | "description": "BUS STOP", 5376 | "category": "travel" 5377 | }, 5378 | { 5379 | "name": "minibus", 5380 | "unicode": "1F690", 5381 | "shortcode": "minibus", 5382 | "description": "MINIBUS", 5383 | "category": "travel" 5384 | }, 5385 | { 5386 | "name": "ambulance", 5387 | "unicode": "1F691", 5388 | "shortcode": "ambulance", 5389 | "description": "AMBULANCE", 5390 | "category": "travel" 5391 | }, 5392 | { 5393 | "name": "fire_engine", 5394 | "unicode": "1F692", 5395 | "shortcode": "fire_engine", 5396 | "description": "FIRE ENGINE", 5397 | "category": "travel" 5398 | }, 5399 | { 5400 | "name": "police_car", 5401 | "unicode": "1F693", 5402 | "shortcode": "police_car", 5403 | "description": "POLICE CAR", 5404 | "category": "travel" 5405 | }, 5406 | { 5407 | "name": "oncoming_police_car", 5408 | "unicode": "1F694", 5409 | "shortcode": "oncoming_police_car", 5410 | "description": "ONCOMING POLICE CAR", 5411 | "category": "travel" 5412 | }, 5413 | { 5414 | "name": "taxi", 5415 | "unicode": "1F695", 5416 | "shortcode": "taxi", 5417 | "description": "TAXI", 5418 | "category": "travel" 5419 | }, 5420 | { 5421 | "name": "oncoming_taxi", 5422 | "unicode": "1F696", 5423 | "shortcode": "oncoming_taxi", 5424 | "description": "ONCOMING TAXI", 5425 | "category": "travel" 5426 | }, 5427 | { 5428 | "name": "car", 5429 | "unicode": "1F697", 5430 | "shortcode": "car", 5431 | "description": "AUTOMOBILE", 5432 | "category": "travel" 5433 | }, 5434 | { 5435 | "name": "oncoming_automobile", 5436 | "unicode": "1F698", 5437 | "shortcode": "oncoming_automobile", 5438 | "description": "ONCOMING AUTOMOBILE", 5439 | "category": "travel" 5440 | }, 5441 | { 5442 | "name": "blue_car", 5443 | "unicode": "1F699", 5444 | "shortcode": "blue_car", 5445 | "description": "RECREATIONAL VEHICLE", 5446 | "category": "travel" 5447 | }, 5448 | { 5449 | "name": "truck", 5450 | "unicode": "1F69A", 5451 | "shortcode": "truck", 5452 | "description": "DELIVERY TRUCK", 5453 | "category": "travel" 5454 | }, 5455 | { 5456 | "name": "articulated_lorry", 5457 | "unicode": "1F69B", 5458 | "shortcode": "articulated_lorry", 5459 | "description": "ARTICULATED LORRY", 5460 | "category": "travel" 5461 | }, 5462 | { 5463 | "name": "tractor", 5464 | "unicode": "1F69C", 5465 | "shortcode": "tractor", 5466 | "description": "TRACTOR", 5467 | "category": "travel" 5468 | }, 5469 | { 5470 | "name": "monorail", 5471 | "unicode": "1F69D", 5472 | "shortcode": "monorail", 5473 | "description": "MONORAIL", 5474 | "category": "travel" 5475 | }, 5476 | { 5477 | "name": "mountain_railway", 5478 | "unicode": "1F69E", 5479 | "shortcode": "mountain_railway", 5480 | "description": "MOUNTAIN RAILWAY", 5481 | "category": "travel" 5482 | }, 5483 | { 5484 | "name": "suspension_railway", 5485 | "unicode": "1F69F", 5486 | "shortcode": "suspension_railway", 5487 | "description": "SUSPENSION RAILWAY", 5488 | "category": "travel" 5489 | }, 5490 | { 5491 | "name": "mountain_cableway", 5492 | "unicode": "1F6A0", 5493 | "shortcode": "mountain_cableway", 5494 | "description": "MOUNTAIN CABLEWAY", 5495 | "category": "travel" 5496 | }, 5497 | { 5498 | "name": "aerial_tramway", 5499 | "unicode": "1F6A1", 5500 | "shortcode": "aerial_tramway", 5501 | "description": "AERIAL TRAMWAY", 5502 | "category": "travel" 5503 | }, 5504 | { 5505 | "name": "ship", 5506 | "unicode": "1F6A2", 5507 | "shortcode": "ship", 5508 | "description": "SHIP", 5509 | "category": "travel" 5510 | }, 5511 | { 5512 | "name": "rowboat", 5513 | "unicode": "1F6A3", 5514 | "shortcode": "rowboat", 5515 | "description": "ROWBOAT", 5516 | "category": "travel" 5517 | }, 5518 | { 5519 | "name": "speedboat", 5520 | "unicode": "1F6A4", 5521 | "shortcode": "speedboat", 5522 | "description": "SPEEDBOAT", 5523 | "category": "travel" 5524 | }, 5525 | { 5526 | "name": "traffic_light", 5527 | "unicode": "1F6A5", 5528 | "shortcode": "traffic_light", 5529 | "description": "HORIZONTAL TRAFFIC LIGHT", 5530 | "category": "travel" 5531 | }, 5532 | { 5533 | "name": "vertical_traffic_light", 5534 | "unicode": "1F6A6", 5535 | "shortcode": "vertical_traffic_light", 5536 | "description": "VERTICAL TRAFFIC LIGHT", 5537 | "category": "travel" 5538 | }, 5539 | { 5540 | "name": "construction", 5541 | "unicode": "1F6A7", 5542 | "shortcode": "construction", 5543 | "description": "CONSTRUCTION SIGN", 5544 | "category": "travel" 5545 | }, 5546 | { 5547 | "name": "rotating_light", 5548 | "unicode": "1F6A8", 5549 | "shortcode": "rotating_light", 5550 | "description": "POLICE CARS REVOLVING LIGHT", 5551 | "category": "travel" 5552 | }, 5553 | { 5554 | "name": "triangular_flag_on_post", 5555 | "unicode": "1F6A9", 5556 | "shortcode": "triangular_flag_on_post", 5557 | "description": "TRIANGULAR FLAG ON POST", 5558 | "category": "travel" 5559 | }, 5560 | { 5561 | "name": "door", 5562 | "unicode": "1F6AA", 5563 | "shortcode": "door", 5564 | "description": "DOOR", 5565 | "category": "travel" 5566 | }, 5567 | { 5568 | "name": "no_entry_sign", 5569 | "unicode": "1F6AB", 5570 | "shortcode": "no_entry_sign", 5571 | "description": "NO ENTRY SIGN", 5572 | "category": "travel" 5573 | }, 5574 | { 5575 | "name": "smoking", 5576 | "unicode": "1F6AC", 5577 | "shortcode": "smoking", 5578 | "description": "SMOKING SYMBOL", 5579 | "category": "travel" 5580 | }, 5581 | { 5582 | "name": "no_smoking", 5583 | "unicode": "1F6AD", 5584 | "shortcode": "no_smoking", 5585 | "description": "NO SMOKING SYMBOL", 5586 | "category": "travel" 5587 | }, 5588 | { 5589 | "name": "put_litter_in_its_place", 5590 | "unicode": "1F6AE", 5591 | "shortcode": "put_litter_in_its_place", 5592 | "description": "PUT LITTER IN ITS PLACE SYMBOL", 5593 | "category": "travel" 5594 | }, 5595 | { 5596 | "name": "do_not_litter", 5597 | "unicode": "1F6AF", 5598 | "shortcode": "do_not_litter", 5599 | "description": "DO NOT LITTER SYMBOL", 5600 | "category": "travel" 5601 | }, 5602 | { 5603 | "name": "potable_water", 5604 | "unicode": "1F6B0", 5605 | "shortcode": "potable_water", 5606 | "description": "POTABLE WATER SYMBOL", 5607 | "category": "travel" 5608 | }, 5609 | { 5610 | "name": "non-potable_water", 5611 | "unicode": "1F6B1", 5612 | "shortcode": "non-potable_water", 5613 | "description": "NON-POTABLE WATER SYMBOL", 5614 | "category": "travel" 5615 | }, 5616 | { 5617 | "name": "bike", 5618 | "unicode": "1F6B2", 5619 | "shortcode": "bike", 5620 | "description": "BICYCLE", 5621 | "category": "travel" 5622 | }, 5623 | { 5624 | "name": "no_bicycles", 5625 | "unicode": "1F6B3", 5626 | "shortcode": "no_bicycles", 5627 | "description": "NO BICYCLES", 5628 | "category": "travel" 5629 | }, 5630 | { 5631 | "name": "bicyclist", 5632 | "unicode": "1F6B4", 5633 | "shortcode": "bicyclist", 5634 | "description": "BICYCLIST", 5635 | "category": "travel" 5636 | }, 5637 | { 5638 | "name": "mountain_bicyclist", 5639 | "unicode": "1F6B5", 5640 | "shortcode": "mountain_bicyclist", 5641 | "description": "MOUNTAIN BICYCLIST", 5642 | "category": "travel" 5643 | }, 5644 | { 5645 | "name": "walking", 5646 | "unicode": "1F6B6", 5647 | "shortcode": "walking", 5648 | "description": "PEDESTRIAN", 5649 | "category": "travel" 5650 | }, 5651 | { 5652 | "name": "no_pedestrians", 5653 | "unicode": "1F6B7", 5654 | "shortcode": "no_pedestrians", 5655 | "description": "NO PEDESTRIANS", 5656 | "category": "travel" 5657 | }, 5658 | { 5659 | "name": "children_crossing", 5660 | "unicode": "1F6B8", 5661 | "shortcode": "children_crossing", 5662 | "description": "CHILDREN CROSSING", 5663 | "category": "travel" 5664 | }, 5665 | { 5666 | "name": "mens", 5667 | "unicode": "1F6B9", 5668 | "shortcode": "mens", 5669 | "description": "MENS SYMBOL", 5670 | "category": "travel" 5671 | }, 5672 | { 5673 | "name": "womens", 5674 | "unicode": "1F6BA", 5675 | "shortcode": "womens", 5676 | "description": "WOMENS SYMBOL", 5677 | "category": "travel" 5678 | }, 5679 | { 5680 | "name": "restroom", 5681 | "unicode": "1F6BB", 5682 | "shortcode": "restroom", 5683 | "description": "RESTROOM", 5684 | "category": "travel" 5685 | }, 5686 | { 5687 | "name": "baby_symbol", 5688 | "unicode": "1F6BC", 5689 | "shortcode": "baby_symbol", 5690 | "description": "BABY SYMBOL", 5691 | "category": "travel" 5692 | }, 5693 | { 5694 | "name": "toilet", 5695 | "unicode": "1F6BD", 5696 | "shortcode": "toilet", 5697 | "description": "TOILET", 5698 | "category": "travel" 5699 | }, 5700 | { 5701 | "name": "wc", 5702 | "unicode": "1F6BE", 5703 | "shortcode": "wc", 5704 | "description": "WATER CLOSET", 5705 | "category": "travel" 5706 | }, 5707 | { 5708 | "name": "shower", 5709 | "unicode": "1F6BF", 5710 | "shortcode": "shower", 5711 | "description": "SHOWER", 5712 | "category": "travel" 5713 | }, 5714 | { 5715 | "name": "bath", 5716 | "unicode": "1F6C0", 5717 | "shortcode": "bath", 5718 | "description": "BATH", 5719 | "category": "travel" 5720 | }, 5721 | { 5722 | "name": "bathtub", 5723 | "unicode": "1F6C1", 5724 | "shortcode": "bathtub", 5725 | "description": "BATHTUB", 5726 | "category": "travel" 5727 | }, 5728 | { 5729 | "name": "passport_control", 5730 | "unicode": "1F6C2", 5731 | "shortcode": "passport_control", 5732 | "description": "PASSPORT CONTROL", 5733 | "category": "travel" 5734 | }, 5735 | { 5736 | "name": "customs", 5737 | "unicode": "1F6C3", 5738 | "shortcode": "customs", 5739 | "description": "CUSTOMS", 5740 | "category": "travel" 5741 | }, 5742 | { 5743 | "name": "baggage_claim", 5744 | "unicode": "1F6C4", 5745 | "shortcode": "baggage_claim", 5746 | "description": "BAGGAGE CLAIM", 5747 | "category": "travel" 5748 | }, 5749 | { 5750 | "name": "left_luggage", 5751 | "unicode": "1F6C5", 5752 | "shortcode": "left_luggage", 5753 | "description": "LEFT LUGGAGE", 5754 | "category": "travel" 5755 | }, 5756 | { 5757 | "name": "hash", 5758 | "unicode": "0023-20E3", 5759 | "shortcode": "hash", 5760 | "description": "HASH KEY", 5761 | "category": "folderol" 5762 | }, 5763 | { 5764 | "name": "zero", 5765 | "unicode": "0030-20E3", 5766 | "shortcode": "zero", 5767 | "description": "KEYCAP 0", 5768 | "category": "folderol" 5769 | }, 5770 | { 5771 | "name": "one", 5772 | "unicode": "0031-20E3", 5773 | "shortcode": "one", 5774 | "description": "KEYCAP 1", 5775 | "category": "folderol" 5776 | }, 5777 | { 5778 | "name": "two", 5779 | "unicode": "0032-20E3", 5780 | "shortcode": "two", 5781 | "description": "KEYCAP 2", 5782 | "category": "folderol" 5783 | }, 5784 | { 5785 | "name": "three", 5786 | "unicode": "0033-20E3", 5787 | "shortcode": "three", 5788 | "description": "KEYCAP 3", 5789 | "category": "folderol" 5790 | }, 5791 | { 5792 | "name": "four", 5793 | "unicode": "0034-20E3", 5794 | "shortcode": "four", 5795 | "description": "KEYCAP 4", 5796 | "category": "folderol" 5797 | }, 5798 | { 5799 | "name": "five", 5800 | "unicode": "0035-20E3", 5801 | "shortcode": "five", 5802 | "description": "KEYCAP 5", 5803 | "category": "folderol" 5804 | }, 5805 | { 5806 | "name": "six", 5807 | "unicode": "0036-20E3", 5808 | "shortcode": "six", 5809 | "description": "KEYCAP 6", 5810 | "category": "folderol" 5811 | }, 5812 | { 5813 | "name": "seven", 5814 | "unicode": "0037-20E3", 5815 | "shortcode": "seven", 5816 | "description": "KEYCAP 7", 5817 | "category": "folderol" 5818 | }, 5819 | { 5820 | "name": "eight", 5821 | "unicode": "0038-20E3", 5822 | "shortcode": "eight", 5823 | "description": "KEYCAP 8", 5824 | "category": "folderol" 5825 | }, 5826 | { 5827 | "name": "nine", 5828 | "unicode": "0039-20E3", 5829 | "shortcode": "nine", 5830 | "description": "KEYCAP 9", 5831 | "category": "folderol" 5832 | }, 5833 | { 5834 | "name": "flag-cn", 5835 | "unicode": "1F1E8-1F1F3", 5836 | "shortcode": "flag-cn", 5837 | "description": "REGIONAL INDICATOR SYMBOL LETTERS CN", 5838 | "category": "folderol" 5839 | }, 5840 | { 5841 | "name": "flag-de", 5842 | "unicode": "1F1E9-1F1EA", 5843 | "shortcode": "flag-de", 5844 | "description": "REGIONAL INDICATOR SYMBOL LETTERS DE", 5845 | "category": "folderol" 5846 | }, 5847 | { 5848 | "name": "flag-es", 5849 | "unicode": "1F1EA-1F1F8", 5850 | "shortcode": "flag-es", 5851 | "description": "REGIONAL INDICATOR SYMBOL LETTERS ES", 5852 | "category": "folderol" 5853 | }, 5854 | { 5855 | "name": "flag-fr", 5856 | "unicode": "1F1EB-1F1F7", 5857 | "shortcode": "flag-fr", 5858 | "description": "REGIONAL INDICATOR SYMBOL LETTERS FR", 5859 | "category": "folderol" 5860 | }, 5861 | { 5862 | "name": "flag-gb", 5863 | "unicode": "1F1EC-1F1E7", 5864 | "shortcode": "flag-gb", 5865 | "description": "REGIONAL INDICATOR SYMBOL LETTERS GB", 5866 | "category": "folderol" 5867 | }, 5868 | { 5869 | "name": "flag-it", 5870 | "unicode": "1F1EE-1F1F9", 5871 | "shortcode": "flag-it", 5872 | "description": "REGIONAL INDICATOR SYMBOL LETTERS IT", 5873 | "category": "folderol" 5874 | }, 5875 | { 5876 | "name": "flag-jp", 5877 | "unicode": "1F1EF-1F1F5", 5878 | "shortcode": "flag-jp", 5879 | "description": "REGIONAL INDICATOR SYMBOL LETTERS JP", 5880 | "category": "folderol" 5881 | }, 5882 | { 5883 | "name": "flag-kr", 5884 | "unicode": "1F1F0-1F1F7", 5885 | "shortcode": "flag-kr", 5886 | "description": "REGIONAL INDICATOR SYMBOL LETTERS KR", 5887 | "category": "folderol" 5888 | }, 5889 | { 5890 | "name": "flag-ru", 5891 | "unicode": "1F1F7-1F1FA", 5892 | "shortcode": "flag-ru", 5893 | "description": "REGIONAL INDICATOR SYMBOL LETTERS RU", 5894 | "category": "folderol" 5895 | }, 5896 | { 5897 | "name": "flag-us", 5898 | "unicode": "1F1FA-1F1F8", 5899 | "shortcode": "flag-us", 5900 | "description": "REGIONAL INDICATOR SYMBOL LETTERS US", 5901 | "category": "folderol" 5902 | } 5903 | ] 5904 | }); 5905 | -------------------------------------------------------------------------------- /static/javascripts/ui_components/Chat.js: -------------------------------------------------------------------------------- 1 | var Chat = React.createClass({ 2 | 3 | getInitialState: function() { 4 | return { 5 | name: null 6 | }; 7 | }, 8 | 9 | _onClick: function(){ 10 | var input = document.getElementById('input-name'); 11 | var name = input.value; 12 | this.setState({name: name}); 13 | }, 14 | 15 | _onName: function(e){ 16 | if (e.nativeEvent.keyCode != 13) return; 17 | var name = e.target.value; 18 | this.setState({name: name}); 19 | }, 20 | 21 | render: function() { 22 | return ( 23 |
24 | 25 | 26 |
27 | ); 28 | } 29 | 30 | }); 31 | 32 | React.render(, document.getElementById('app')); -------------------------------------------------------------------------------- /static/javascripts/ui_components/MainView.js: -------------------------------------------------------------------------------- 1 | var MainView = React.createClass({ 2 | 3 | getInitialState: function() { 4 | 5 | var messages = ['Hi there! 😘', 'Welcome to your chat app', 'See the tutorial at http://blog.pusher.com/react-chat']; 6 | messages = messages.map(function(msg){ 7 | return { 8 | name: 'pusher', 9 | time: new Date(), 10 | text: msg 11 | } 12 | }); 13 | 14 | return { 15 | messages: messages 16 | }; 17 | }, 18 | 19 | componentWillMount: function() { 20 | 21 | this.pusher = new Pusher(PUSHER_CHAT_APP_KEY); 22 | this.chatRoom = this.pusher.subscribe('messages'); 23 | 24 | }, 25 | 26 | componentDidMount: function() { 27 | 28 | this.chatRoom.bind('new_message', function(message){ 29 | this.setState({messages: this.state.messages.concat(message)}) 30 | 31 | $("#message-list").scrollTop($("#message-list")[0].scrollHeight); 32 | 33 | }, this); 34 | 35 | $(document).ready(function(){ 36 | $('#msg-input').emojiPicker({ 37 | height: '150px', 38 | width: '200px', 39 | button: false 40 | }); 41 | 42 | }); 43 | 44 | 45 | 46 | }, 47 | 48 | sendMessage: function(text){ 49 | var message = { 50 | name: this.props.name, 51 | text: text, 52 | time: new Date() 53 | } 54 | 55 | $.post('/messages', message).success(function(){ 56 | var input = document.getElementById('msg-input'); 57 | input.value = "" 58 | }); 59 | }, 60 | 61 | _onClick: function(e){ 62 | var input = document.getElementById('msg-input'); 63 | var text = input.value; 64 | if (text === "") return; 65 | this.sendMessage(text); 66 | }, 67 | 68 | _onEnter: function(e){ 69 | if (e.nativeEvent.keyCode != 13) return; 70 | e.preventDefault(); 71 | var input = e.target; 72 | var text = input.value; 73 | 74 | if (text === "") return; 75 | this.sendMessage(text); 76 | }, 77 | 78 | toggleEmoji: function(evt){ 79 | $('#msg-input').emojiPicker('toggle'); 80 | }, 81 | 82 | render: function() { 83 | 84 | if (!this.props.name) var style = {display:'none'} 85 | 86 | 87 | var body = ( 88 |
89 | 90 | 91 |
92 |
93 | 94 |
95 | 96 |
97 | 98 |
99 |
100 |
101 | ); 102 | 103 | return ( 104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 | {body} 114 |
115 |
116 |
117 |
118 |
119 | 120 | ); 121 | } 122 | 123 | }); 124 | -------------------------------------------------------------------------------- /static/javascripts/ui_components/Messages.js: -------------------------------------------------------------------------------- 1 | var UNICODE_REGEX = /[^\u0000-\u007F]+/; 2 | var URL_REGEX = /https?:\/\/?[\da-z\.-]+\.[a-z\.]{2,6}[\/\w \.-]*\/?/; 3 | 4 | var Messages = React.createClass({ 5 | 6 | render: function() { 7 | 8 | var messageList = this.props.messages.map(function(message){ 9 | var text = message.text; 10 | 11 | var emojiMatches = text.match(UNICODE_REGEX); 12 | 13 | if (emojiMatches) { 14 | $.each(emojiMatches, function(index, match){ 15 | text = text.replace(UNICODE_REGEX, ""+match+""); 16 | }); 17 | } 18 | 19 | var urlMatches = text.match(URL_REGEX); 20 | if (urlMatches) { 21 | $.each(urlMatches, function(index, match){ 22 | text = text.replace(URL_REGEX, ""+match+""); 23 | }); 24 | } 25 | 26 | 27 | return ( 28 |
29 |
30 | 31 |
32 |
33 |
34 | {message.name} 35 | {strftime('%H:%M:%S %P', new Date(message.time))} 36 | 37 |
38 |

39 |

40 |
41 |
42 | 43 | ) 44 | 45 | }); 46 | 47 | return ( 48 |
49 |
50 | 51 | Today 52 | 53 |
54 | {messageList} 55 |
56 | ); 57 | } 58 | 59 | }); 60 | -------------------------------------------------------------------------------- /static/javascripts/ui_components/WelcomeView.js: -------------------------------------------------------------------------------- 1 | var WelcomeView = React.createClass({ 2 | 3 | render: function() { 4 | 5 | var view; 6 | var name = this.props.name; 7 | 8 | if (name) { 9 | view =

Welcome {name}

10 | } else { 11 | view = ( 12 |
13 |

Enter your Twitter name and start chatting!

14 |
15 | 16 | 19 |
20 |
21 | ) 22 | } 23 | 24 | 25 | return ( 26 | 27 |
28 |
29 |

30 | Realtime Chat Made Easy With Pusher 31 |

32 | {view} 33 |
34 |
35 | ) 36 | 37 | } 38 | 39 | }); -------------------------------------------------------------------------------- /static/stylesheets/devices.min.css: -------------------------------------------------------------------------------- 1 | .marvel-device{display:inline-block;position:relative}.marvel-device .screen{width:100%;position:relative;height:100%;color:white;z-index:2;text-align:center;display:block;-webkit-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 0 0 3px #111;box-shadow:0 0 0 3px #111}.marvel-device .top-bar,.marvel-device .bottom-bar{height:3px;background:black;width:100%;display:block}.marvel-device .middle-bar{width:3px;height:4px;top:0px;left:90px;background:black;position:absolute}.marvel-device.iphone6{width:375px;height:667px;padding:105px 24px;background:#d9dbdc;-webkit-border-radius:56px;border-radius:56px;-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.2);box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.2)}.marvel-device.iphone6:before{width:calc(100% - 12px);height:calc(100% - 12px);position:absolute;top:6px;content:'';left:6px;-webkit-border-radius:50px;border-radius:50px;background:#f8f8f8;z-index:1}.marvel-device.iphone6:after{width:calc(100% - 16px);height:calc(100% - 16px);position:absolute;top:8px;content:'';left:8px;-webkit-border-radius:48px;border-radius:48px;-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #fff;box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #fff;z-index:2}.marvel-device.iphone6 .home{-webkit-border-radius:100%;border-radius:100%;width:68px;height:68px;position:absolute;left:50%;margin-left:-34px;bottom:22px;z-index:3;background:#303233;background:-moz-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:-webkit-gradient(linear, left top, right bottom, color-stop(0%, #303233), color-stop(50%, #b5b7b9), color-stop(69%, #f0f2f2), color-stop(100%, #303233));background:-webkit-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:-o-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:-ms-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:linear-gradient(135deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#303233', endColorstr='#303233',GradientType=1 )}.marvel-device.iphone6 .home:before{background:#f8f8f8;position:absolute;content:'';-webkit-border-radius:100%;border-radius:100%;width:calc(100% - 8px);height:calc(100% - 8px);top:4px;left:4px}.marvel-device.iphone6 .top-bar{height:14px;background:#bfbfc0;position:absolute;top:68px;left:0}.marvel-device.iphone6 .bottom-bar{height:14px;background:#bfbfc0;position:absolute;bottom:68px;left:0}.marvel-device.iphone6 .sleep{position:absolute;top:190px;right:-4px;width:4px;height:66px;-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px;background:#d9dbdc}.marvel-device.iphone6 .volume{position:absolute;left:-4px;top:188px;z-index:0;height:66px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:#d9dbdc}.marvel-device.iphone6 .volume:before{position:absolute;left:2px;top:-78px;height:40px;width:2px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone6 .volume:after{position:absolute;left:0px;top:82px;height:66px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone6 .camera{background:#3c3d3d;width:12px;height:12px;position:absolute;top:24px;left:50%;margin-left:-6px;-webkit-border-radius:100%;border-radius:100%;z-index:3}.marvel-device.iphone6 .sensor{background:#3c3d3d;width:16px;height:16px;position:absolute;top:49px;left:134px;z-index:3;-webkit-border-radius:100%;border-radius:100%}.marvel-device.iphone6 .speaker{background:#292728;width:70px;height:6px;position:absolute;top:54px;left:50%;margin-left:-35px;-webkit-border-radius:6px;border-radius:6px;z-index:3}.marvel-device.iphone6.gold{background:#f9e7d3}.marvel-device.iphone6.gold .top-bar,.marvel-device.iphone6.gold .bottom-bar{background:white}.marvel-device.iphone6.gold .sleep,.marvel-device.iphone6.gold .volume{background:#f9e7d3}.marvel-device.iphone6.gold .home{background:#cebba9;background:-moz-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:-webkit-gradient(linear, left top, right bottom, color-stop(0%, #cebba9), color-stop(50%, #f9e7d3), color-stop(100%, #cebba9));background:-webkit-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:-o-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:-ms-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:linear-gradient(135deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cebba9', endColorstr='#cebba9',GradientType=1 )}.marvel-device.iphone6.black{background:#464646;-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.7);box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.7)}.marvel-device.iphone6.black:before{background:#080808}.marvel-device.iphone6.black:after{-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #212121;box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #212121}.marvel-device.iphone6.black .top-bar,.marvel-device.iphone6.black .bottom-bar{background:#212121}.marvel-device.iphone6.black .volume,.marvel-device.iphone6.black .sleep{background:#464646}.marvel-device.iphone6.black .camera{background:#080808}.marvel-device.iphone6.black .home{background:#080808;background:-moz-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:-webkit-gradient(linear, left top, right bottom, color-stop(0%, #080808), color-stop(50%, #464646), color-stop(100%, #080808));background:-webkit-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:-o-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:-ms-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:linear-gradient(135deg, #080808 0%, #464646 50%, #080808 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#080808', endColorstr='#080808',GradientType=1 )}.marvel-device.iphone6.black .home:before{background:#080808}.marvel-device.iphone6.landscape{padding:24px 105px;height:375px;width:667px}.marvel-device.iphone6.landscape .sleep{top:100%;-webkit-border-radius:0px 0px 2px 2px;border-radius:0px 0px 2px 2px;right:190px;height:4px;width:66px}.marvel-device.iphone6.landscape .volume{width:66px;height:4px;top:-4px;left:calc(100% - 188px - 66px);-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone6.landscape .volume:before{width:40px;height:2px;top:2px;right:-78px;left:auto;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone6.landscape .volume:after{left:-82px;width:66px;height:4px;top:0;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone6.landscape .top-bar{width:14px;height:100%;left:calc(100% - 68px - 14px);top:0}.marvel-device.iphone6.landscape .bottom-bar{width:14px;height:100%;left:68px;top:0}.marvel-device.iphone6.landscape .home{top:50%;margin-top:-34px;margin-left:0;left:22px}.marvel-device.iphone6.landscape .sensor{top:134px;left:calc(100% - 49px - 16px)}.marvel-device.iphone6.landscape .speaker{height:70px;width:6px;left:calc(100% - 54px - 6px);top:50%;margin-left:0px;margin-top:-35px}.marvel-device.iphone6.landscape .camera{left:calc(100% - 32px);top:50%;margin-left:0px;margin-top:-5px}.marvel-device.iphone6plus{width:414px;height:736px;padding:112px 26px;background:#d9dbdc;-webkit-border-radius:56px;border-radius:56px;-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.2);box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.2)}.marvel-device.iphone6plus:before{width:calc(100% - 12px);height:calc(100% - 12px);position:absolute;top:6px;content:'';left:6px;-webkit-border-radius:50px;border-radius:50px;background:#f8f8f8;z-index:1}.marvel-device.iphone6plus:after{width:calc(100% - 16px);height:calc(100% - 16px);position:absolute;top:8px;content:'';left:8px;-webkit-border-radius:48px;border-radius:48px;-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #fff;box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #fff;z-index:2}.marvel-device.iphone6plus .home{-webkit-border-radius:100%;border-radius:100%;width:68px;height:68px;position:absolute;left:50%;margin-left:-34px;bottom:24px;z-index:3;background:#303233;background:-moz-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:-webkit-gradient(linear, left top, right bottom, color-stop(0%, #303233), color-stop(50%, #b5b7b9), color-stop(69%, #f0f2f2), color-stop(100%, #303233));background:-webkit-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:-o-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:-ms-linear-gradient(-45deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);background:linear-gradient(135deg, #303233 0%, #b5b7b9 50%, #f0f2f2 69%, #303233 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#303233', endColorstr='#303233',GradientType=1 )}.marvel-device.iphone6plus .home:before{background:#f8f8f8;position:absolute;content:'';-webkit-border-radius:100%;border-radius:100%;width:calc(100% - 8px);height:calc(100% - 8px);top:4px;left:4px}.marvel-device.iphone6plus .top-bar{height:14px;background:#bfbfc0;position:absolute;top:68px;left:0}.marvel-device.iphone6plus .bottom-bar{height:14px;background:#bfbfc0;position:absolute;bottom:68px;left:0}.marvel-device.iphone6plus .sleep{position:absolute;top:190px;right:-4px;width:4px;height:66px;-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px;background:#d9dbdc}.marvel-device.iphone6plus .volume{position:absolute;left:-4px;top:188px;z-index:0;height:66px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:#d9dbdc}.marvel-device.iphone6plus .volume:before{position:absolute;left:2px;top:-78px;height:40px;width:2px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone6plus .volume:after{position:absolute;left:0px;top:82px;height:66px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone6plus .camera{background:#3c3d3d;width:12px;height:12px;position:absolute;top:29px;left:50%;margin-left:-6px;-webkit-border-radius:100%;border-radius:100%;z-index:3}.marvel-device.iphone6plus .sensor{background:#3c3d3d;width:16px;height:16px;position:absolute;top:54px;left:154px;z-index:3;-webkit-border-radius:100%;border-radius:100%}.marvel-device.iphone6plus .speaker{background:#292728;width:70px;height:6px;position:absolute;top:59px;left:50%;margin-left:-35px;-webkit-border-radius:6px;border-radius:6px;z-index:3}.marvel-device.iphone6plus.gold{background:#f9e7d3}.marvel-device.iphone6plus.gold .top-bar,.marvel-device.iphone6plus.gold .bottom-bar{background:white}.marvel-device.iphone6plus.gold .sleep,.marvel-device.iphone6plus.gold .volume{background:#f9e7d3}.marvel-device.iphone6plus.gold .home{background:#cebba9;background:-moz-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:-webkit-gradient(linear, left top, right bottom, color-stop(0%, #cebba9), color-stop(50%, #f9e7d3), color-stop(100%, #cebba9));background:-webkit-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:-o-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:-ms-linear-gradient(-45deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);background:linear-gradient(135deg, #cebba9 0%, #f9e7d3 50%, #cebba9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cebba9', endColorstr='#cebba9',GradientType=1 )}.marvel-device.iphone6plus.black{background:#464646;-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.7);box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.7)}.marvel-device.iphone6plus.black:before{background:#080808}.marvel-device.iphone6plus.black:after{-webkit-box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #212121;box-shadow:inset 0 0 3px 0 rgba(0,0,0,0.1),inset 0 0 6px 3px #212121}.marvel-device.iphone6plus.black .top-bar,.marvel-device.iphone6plus.black .bottom-bar{background:#212121}.marvel-device.iphone6plus.black .volume,.marvel-device.iphone6plus.black .sleep{background:#464646}.marvel-device.iphone6plus.black .camera{background:#080808}.marvel-device.iphone6plus.black .home{background:#080808;background:-moz-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:-webkit-gradient(linear, left top, right bottom, color-stop(0%, #080808), color-stop(50%, #464646), color-stop(100%, #080808));background:-webkit-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:-o-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:-ms-linear-gradient(-45deg, #080808 0%, #464646 50%, #080808 100%);background:linear-gradient(135deg, #080808 0%, #464646 50%, #080808 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#080808', endColorstr='#080808',GradientType=1 )}.marvel-device.iphone6plus.black .home:before{background:#080808}.marvel-device.iphone6plus.landscape{padding:26px 112px;height:414px;width:736px}.marvel-device.iphone6plus.landscape .sleep{top:100%;-webkit-border-radius:0px 0px 2px 2px;border-radius:0px 0px 2px 2px;right:190px;height:4px;width:66px}.marvel-device.iphone6plus.landscape .volume{width:66px;height:4px;top:-4px;left:calc(100% - 188px - 66px);-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone6plus.landscape .volume:before{width:40px;height:2px;top:2px;right:-78px;left:auto;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone6plus.landscape .volume:after{left:-82px;width:66px;height:4px;top:0;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone6plus.landscape .top-bar{width:14px;height:100%;left:calc(100% - 68px - 14px);top:0}.marvel-device.iphone6plus.landscape .bottom-bar{width:14px;height:100%;left:68px;top:0}.marvel-device.iphone6plus.landscape .home{top:50%;margin-top:-34px;margin-left:0;left:24px}.marvel-device.iphone6plus.landscape .sensor{top:154px;left:calc(100% - 54px - 16px)}.marvel-device.iphone6plus.landscape .speaker{height:70px;width:6px;left:calc(100% - 59px - 6px);top:50%;margin-left:0px;margin-top:-35px}.marvel-device.iphone6plus.landscape .camera{left:calc(100% - 29px);top:50%;margin-left:0px;margin-top:-5px}.marvel-device.iphone5s,.marvel-device.iphone5c{padding:105px 22px;background:#2c2b2c;width:320px;height:568px;-webkit-border-radius:50px;border-radius:50px}.marvel-device.iphone5s:before,.marvel-device.iphone5c:before{width:calc(100% - 8px);height:calc(100% - 8px);position:absolute;top:4px;content:'';left:4px;-webkit-border-radius:46px;border-radius:46px;background:#1e1e1e;z-index:1}.marvel-device.iphone5s .sleep,.marvel-device.iphone5c .sleep{position:absolute;top:-4px;right:60px;width:60px;height:4px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px;background:#282727}.marvel-device.iphone5s .volume,.marvel-device.iphone5c .volume{position:absolute;left:-4px;top:180px;z-index:0;height:27px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:#282727}.marvel-device.iphone5s .volume:before,.marvel-device.iphone5c .volume:before{position:absolute;left:0px;top:-75px;height:35px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone5s .volume:after,.marvel-device.iphone5c .volume:after{position:absolute;left:0px;bottom:-64px;height:27px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone5s .camera,.marvel-device.iphone5c .camera{background:#3c3d3d;width:10px;height:10px;position:absolute;top:32px;left:50%;margin-left:-5px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:3}.marvel-device.iphone5s .sensor,.marvel-device.iphone5c .sensor{background:#3c3d3d;width:10px;height:10px;position:absolute;top:60px;left:160px;z-index:3;margin-left:-32px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.marvel-device.iphone5s .speaker,.marvel-device.iphone5c .speaker{background:#292728;width:64px;height:10px;position:absolute;top:60px;left:50%;margin-left:-32px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:3}.marvel-device.iphone5s.landscape,.marvel-device.iphone5c.landscape{padding:22px 105px;height:320px;width:568px}.marvel-device.iphone5s.landscape .sleep,.marvel-device.iphone5c.landscape .sleep{right:-4px;top:calc(100% - 120px);height:60px;width:4px;-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px}.marvel-device.iphone5s.landscape .volume,.marvel-device.iphone5c.landscape .volume{width:27px;height:4px;top:-4px;left:calc(100% - 180px);-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone5s.landscape .volume:before,.marvel-device.iphone5c.landscape .volume:before{width:35px;height:4px;top:0px;right:-75px;left:auto;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone5s.landscape .volume:after,.marvel-device.iphone5c.landscape .volume:after{bottom:0px;left:-64px;z-index:999;height:4px;width:27px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone5s.landscape .sensor,.marvel-device.iphone5c.landscape .sensor{top:160px;left:calc(100% - 60px);margin-left:0px;margin-top:-32px}.marvel-device.iphone5s.landscape .speaker,.marvel-device.iphone5c.landscape .speaker{height:64px;width:10px;left:calc(100% - 60px);top:50%;margin-left:0px;margin-top:-32px}.marvel-device.iphone5s.landscape .camera,.marvel-device.iphone5c.landscape .camera{left:calc(100% - 32px);top:50%;margin-left:0px;margin-top:-5px}.marvel-device.iphone5s .home{-moz-border-radius:36px;-webkit-border-radius:36px;border-radius:36px;width:68px;-webkit-box-shadow:inset 0 0 0 4px #2c2b2c;box-shadow:inset 0 0 0 4px #2c2b2c;height:68px;position:absolute;left:50%;margin-left:-34px;bottom:19px;z-index:3}.marvel-device.iphone5s .top-bar{top:70px;position:absolute;left:0}.marvel-device.iphone5s .bottom-bar{bottom:70px;position:absolute;left:0}.marvel-device.iphone5s.landscape .home{left:19px;bottom:50%;margin-bottom:-34px;margin-left:0px}.marvel-device.iphone5s.landscape .top-bar{left:70px;top:0px;width:3px;height:100%}.marvel-device.iphone5s.landscape .bottom-bar{right:70px;left:auto;bottom:0px;width:3px;height:100%}.marvel-device.iphone5s.silver{background:#bcbcbc}.marvel-device.iphone5s.silver:before{background:#fcfcfc}.marvel-device.iphone5s.silver .volume,.marvel-device.iphone5s.silver .sleep{background:#d6d6d6}.marvel-device.iphone5s.silver .top-bar,.marvel-device.iphone5s.silver .bottom-bar{background:#eaebec}.marvel-device.iphone5s.silver .home{-webkit-box-shadow:inset 0 0 0 4px #bcbcbc;box-shadow:inset 0 0 0 4px #bcbcbc}.marvel-device.iphone5s.gold{background:#f9e7d3}.marvel-device.iphone5s.gold:before{background:#fcfcfc}.marvel-device.iphone5s.gold .volume,.marvel-device.iphone5s.gold .sleep{background:#f9e7d3}.marvel-device.iphone5s.gold .top-bar,.marvel-device.iphone5s.gold .bottom-bar{background:white}.marvel-device.iphone5s.gold .home{-webkit-box-shadow:inset 0 0 0 4px #f9e7d3;box-shadow:inset 0 0 0 4px #f9e7d3}.marvel-device.iphone5c{background:white;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,0.2);box-shadow:0 1px 2px 0 rgba(0,0,0,0.2)}.marvel-device.iphone5c .top-bar,.marvel-device.iphone5c .bottom-bar{display:none}.marvel-device.iphone5c .home{background:#242324;-moz-border-radius:36px;-webkit-border-radius:36px;border-radius:36px;width:68px;height:68px;z-index:3;position:absolute;left:50%;margin-left:-34px;bottom:19px}.marvel-device.iphone5c .home:after{width:20px;height:20px;border:1px solid rgba(255,255,255,0.1);-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;position:absolute;display:block;content:'';top:50%;left:50%;margin-top:-11px;margin-left:-11px}.marvel-device.iphone5c.landscape .home{left:19px;bottom:50%;margin-bottom:-34px;margin-left:0px}.marvel-device.iphone5c .volume,.marvel-device.iphone5c .sleep{background:#dddddd}.marvel-device.iphone5c.red{background:#f96b6c}.marvel-device.iphone5c.red .volume,.marvel-device.iphone5c.red .sleep{background:#ed5758}.marvel-device.iphone5c.yellow{background:#f2dc60}.marvel-device.iphone5c.yellow .volume,.marvel-device.iphone5c.yellow .sleep{background:#e5ce4c}.marvel-device.iphone5c.green{background:#97e563}.marvel-device.iphone5c.green .volume,.marvel-device.iphone5c.green .sleep{background:#85d94d}.marvel-device.iphone5c.blue{background:#33a2db}.marvel-device.iphone5c.blue .volume,.marvel-device.iphone5c.blue .sleep{background:#2694cd}.marvel-device.iphone4s{padding:129px 27px;width:320px;height:480px;background:#686868;-webkit-border-radius:54px;border-radius:54px}.marvel-device.iphone4s:before{content:'';width:calc(100% - 8px);height:calc(100% - 8px);position:absolute;top:4px;left:4px;z-index:1;-webkit-border-radius:50px;border-radius:50px;background:#1e1e1e}.marvel-device.iphone4s .top-bar{top:60px;position:absolute;left:0}.marvel-device.iphone4s .bottom-bar{bottom:90px;position:absolute;left:0}.marvel-device.iphone4s .camera{background:#3c3d3d;width:10px;height:10px;position:absolute;top:72px;left:134px;z-index:3;margin-left:-5px;-webkit-border-radius:100%;border-radius:100%}.marvel-device.iphone4s .speaker{background:#292728;width:64px;height:10px;position:absolute;top:72px;left:50%;z-index:3;margin-left:-32px;-webkit-border-radius:5px;border-radius:5px}.marvel-device.iphone4s .sensor{background:#292728;width:40px;height:10px;position:absolute;top:36px;left:50%;z-index:3;margin-left:-20px;-webkit-border-radius:5px;border-radius:5px}.marvel-device.iphone4s .home{background:#242324;-webkit-border-radius:100%;border-radius:100%;width:72px;height:72px;z-index:3;position:absolute;left:50%;margin-left:-36px;bottom:30px}.marvel-device.iphone4s .home:after{width:20px;height:20px;border:1px solid rgba(255,255,255,0.1);-webkit-border-radius:4px;border-radius:4px;position:absolute;display:block;content:'';top:50%;left:50%;margin-top:-11px;margin-left:-11px}.marvel-device.iphone4s .sleep{position:absolute;top:-4px;right:60px;width:60px;height:4px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px;background:#4D4D4D}.marvel-device.iphone4s .volume{position:absolute;left:-4px;top:160px;height:27px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:#4D4D4D}.marvel-device.iphone4s .volume:before{position:absolute;left:0px;top:-70px;height:35px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone4s .volume:after{position:absolute;left:0px;bottom:-64px;height:27px;width:4px;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px;background:inherit;content:'';display:block}.marvel-device.iphone4s.landscape{padding:27px 129px;height:320px;width:480px}.marvel-device.iphone4s.landscape .bottom-bar{left:90px;bottom:0px;height:100%;width:3px}.marvel-device.iphone4s.landscape .top-bar{left:calc(100% - 60px);top:0px;height:100%;width:3px}.marvel-device.iphone4s.landscape .camera{top:134px;left:calc(100% - 72px);margin-left:0}.marvel-device.iphone4s.landscape .speaker{top:50%;margin-left:0;margin-top:-32px;left:calc(100% - 72px);width:10px;height:64px}.marvel-device.iphone4s.landscape .sensor{height:40px;width:10px;left:calc(100% - 36px);top:50%;margin-left:0;margin-top:-20px}.marvel-device.iphone4s.landscape .home{left:30px;bottom:50%;margin-left:0;margin-bottom:-36px}.marvel-device.iphone4s.landscape .sleep{height:60px;width:4px;right:-4px;top:calc(100% - 120px);-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px}.marvel-device.iphone4s.landscape .volume{top:-4px;left:calc(100% - 187px);height:4px;width:27px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone4s.landscape .volume:before{right:-70px;left:auto;top:0px;width:35px;height:4px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone4s.landscape .volume:after{width:27px;height:4px;bottom:0px;left:-64px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.iphone4s.silver{background:#bcbcbc}.marvel-device.iphone4s.silver:before{background:#fcfcfc}.marvel-device.iphone4s.silver .home{background:#fcfcfc;-webkit-box-shadow:inset 0 0 0 1px #bcbcbc;box-shadow:inset 0 0 0 1px #bcbcbc}.marvel-device.iphone4s.silver .home:after{border:1px solid rgba(0,0,0,0.2)}.marvel-device.iphone4s.silver .volume,.marvel-device.iphone4s.silver .sleep{background:#d6d6d6}.marvel-device.nexus5{padding:50px 15px 50px 15px;width:320px;height:568px;background:#1e1e1e;-webkit-border-radius:20px;border-radius:20px}.marvel-device.nexus5:before{-webkit-border-radius:600px / 50px;border-radius:600px / 50px;background:inherit;content:'';top:0;position:absolute;height:103.1%;width:calc(100% - 26px);top:50%;left:50%;-moz-transform:translateX(-50%) translateY(-50%);-webkit-transform:translateX(-50%) translateY(-50%);-o-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.marvel-device.nexus5 .top-bar{width:calc(100% - 8px);height:calc(100% - 6px);position:absolute;top:3px;left:4px;-webkit-border-radius:20px;border-radius:20px;background:#181818}.marvel-device.nexus5 .top-bar:before{-webkit-border-radius:600px / 50px;border-radius:600px / 50px;background:inherit;content:'';top:0;position:absolute;height:103.0%;width:calc(100% - 26px);top:50%;left:50%;-moz-transform:translateX(-50%) translateY(-50%);-webkit-transform:translateX(-50%) translateY(-50%);-o-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.marvel-device.nexus5 .bottom-bar{display:none}.marvel-device.nexus5 .sleep{width:3px;position:absolute;left:-3px;top:110px;height:100px;background:inherit;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px}.marvel-device.nexus5 .volume{width:3px;position:absolute;right:-3px;top:70px;height:45px;background:inherit;-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px}.marvel-device.nexus5 .camera{background:#3c3d3d;width:10px;height:10px;position:absolute;top:18px;left:50%;z-index:3;margin-left:-5px;-webkit-border-radius:100%;border-radius:100%}.marvel-device.nexus5 .camera:before{background:#3c3d3d;width:6px;height:6px;content:'';display:block;position:absolute;top:2px;left:-100px;z-index:3;-webkit-border-radius:100%;border-radius:100%}.marvel-device.nexus5.landscape{padding:15px 50px 15px 50px;height:320px;width:568px}.marvel-device.nexus5.landscape:before{width:103.1%;height:calc(100% - 26px);-webkit-border-radius:50px / 600px;border-radius:50px / 600px}.marvel-device.nexus5.landscape .top-bar{left:3px;top:4px;height:calc(100% - 8px);width:calc(100% - 6px)}.marvel-device.nexus5.landscape .top-bar:before{width:103%;height:calc(100% - 26px);-webkit-border-radius:50px / 600px;border-radius:50px / 600px}.marvel-device.nexus5.landscape .sleep{height:3px;width:100px;left:calc(100% - 210px);top:-3px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.nexus5.landscape .volume{height:3px;width:45px;right:70px;top:100%;-webkit-border-radius:0px 0px 2px 2px;border-radius:0px 0px 2px 2px}.marvel-device.nexus5.landscape .camera{top:50%;left:calc(100% - 18px);margin-left:0;margin-top:-5px}.marvel-device.nexus5.landscape .camera:before{top:-100px;left:2px}.marvel-device.s5{padding:60px 18px;-webkit-border-radius:42px;border-radius:42px;width:320px;height:568px;background:#bcbcbc}.marvel-device.s5:before,.marvel-device.s5:after{width:calc(100% - 52px);content:'';display:block;height:26px;background:inherit;position:absolute;-webkit-border-radius:500px / 40px;border-radius:500px / 40px;left:50%;-moz-transform:translateX(-50%);-webkit-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.marvel-device.s5:before{top:-7px}.marvel-device.s5:after{bottom:-7px}.marvel-device.s5 .bottom-bar{display:none}.marvel-device.s5 .top-bar{-webkit-border-radius:37px;border-radius:37px;width:calc(100% - 10px);height:calc(100% - 10px);top:5px;left:5px;background:radial-gradient(rgba(0,0,0,0.02) 20%, transparent 60%) 0 0,radial-gradient(rgba(0,0,0,0.02) 20%, transparent 60%) 3px 3px;background-color:white;background-size:4px 4px;background-position:center;z-index:2;position:absolute}.marvel-device.s5 .top-bar:before,.marvel-device.s5 .top-bar:after{width:calc(100% - 48px);content:'';display:block;height:26px;background:inherit;position:absolute;-webkit-border-radius:500px / 40px;border-radius:500px / 40px;left:50%;-moz-transform:translateX(-50%);-webkit-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.marvel-device.s5 .top-bar:before{top:-7px}.marvel-device.s5 .top-bar:after{bottom:-7px}.marvel-device.s5 .sleep{width:3px;position:absolute;left:-3px;top:100px;height:100px;background:#cecece;-webkit-border-radius:2px 0px 0px 2px;border-radius:2px 0px 0px 2px}.marvel-device.s5 .speaker{width:68px;height:8px;position:absolute;top:20px;display:block;z-index:3;left:50%;margin-left:-34px;background-color:#bcbcbc;background-position:top left;-webkit-border-radius:4px;border-radius:4px}.marvel-device.s5 .sensor{display:block;position:absolute;top:20px;right:110px;background:#3c3d3d;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;width:8px;height:8px;z-index:3}.marvel-device.s5 .sensor:after{display:block;content:'';position:absolute;top:0px;right:12px;background:#3c3d3d;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;width:8px;height:8px;z-index:3}.marvel-device.s5 .camera{display:block;position:absolute;top:24px;right:42px;background:black;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;width:10px;height:10px;z-index:3}.marvel-device.s5 .camera:before{width:4px;height:4px;background:#3c3d3d;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;position:absolute;content:'';top:50%;left:50%;margin-top:-2px;margin-left:-2px}.marvel-device.s5 .home{position:absolute;z-index:3;bottom:17px;left:50%;width:70px;height:20px;background:white;-webkit-border-radius:18px;border-radius:18px;display:block;margin-left:-35px;border:2px solid black}.marvel-device.s5.landscape{padding:18px 60px;height:320px;width:568px}.marvel-device.s5.landscape:before,.marvel-device.s5.landscape:after{height:calc(100% - 52px);width:26px;-webkit-border-radius:40px / 500px;border-radius:40px / 500px;-moz-transform:translateY(-50%);-webkit-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.marvel-device.s5.landscape:before{top:50%;left:-7px}.marvel-device.s5.landscape:after{top:50%;left:auto;right:-7px}.marvel-device.s5.landscape .top-bar:before,.marvel-device.s5.landscape .top-bar:after{width:26px;height:calc(100% - 48px);-webkit-border-radius:40px / 500px;border-radius:40px / 500px;-moz-transform:translateY(-50%);-webkit-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.marvel-device.s5.landscape .top-bar:before{right:-7px;top:50%;left:auto}.marvel-device.s5.landscape .top-bar:after{left:-7px;top:50%;right:auto}.marvel-device.s5.landscape .sleep{height:3px;width:100px;left:calc(100% - 200px);top:-3px;-webkit-border-radius:2px 2px 0px 0px;border-radius:2px 2px 0px 0px}.marvel-device.s5.landscape .speaker{height:68px;width:8px;left:calc(100% - 20px);top:50%;margin-left:0;margin-top:-34px}.marvel-device.s5.landscape .sensor{right:20px;top:calc(100% - 110px)}.marvel-device.s5.landscape .sensor:after{left:-12px;right:0px}.marvel-device.s5.landscape .camera{top:calc(100% - 42px);right:24px}.marvel-device.s5.landscape .home{width:20px;height:70px;bottom:50%;margin-bottom:-35px;margin-left:0;left:17px}.marvel-device.s5.black{background:#1e1e1e}.marvel-device.s5.black .speaker{background:black}.marvel-device.s5.black .sleep{background:#1e1e1e}.marvel-device.s5.black .top-bar{background:radial-gradient(rgba(0,0,0,0.05) 20%, transparent 60%) 0 0,radial-gradient(rgba(0,0,0,0.05) 20%, transparent 60%) 3px 3px;background-color:#2c2b2c;background-size:4px 4px}.marvel-device.s5.black .home{background:#2c2b2c}.marvel-device.lumia920{padding:80px 35px 125px 35px;background:#ffdd00;width:320px;height:533px;-moz-border-radius:40px / 3px;-webkit-border-radius:40px / 3px;border-radius:40px / 3px}.marvel-device.lumia920 .bottom-bar{display:none}.marvel-device.lumia920 .top-bar{width:calc(100% - 24px);height:calc(100% - 32px);position:absolute;top:16px;left:12px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px;background:black;z-index:1}.marvel-device.lumia920 .top-bar:before{background:#1e1e1e;display:block;content:'';width:calc(100% - 4px);height:calc(100% - 4px);top:2px;left:2px;position:absolute;-moz-border-radius:22px;-webkit-border-radius:22px;border-radius:22px}.marvel-device.lumia920 .volume{width:3px;position:absolute;top:130px;height:100px;background:#1e1e1e;right:-3px;-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px}.marvel-device.lumia920 .volume:before{width:3px;position:absolute;top:190px;content:'';display:block;height:50px;background:inherit;right:0px;-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px}.marvel-device.lumia920 .volume:after{width:3px;position:absolute;top:460px;content:'';display:block;height:50px;background:inherit;right:0px;-webkit-border-radius:0px 2px 2px 0px;border-radius:0px 2px 2px 0px}.marvel-device.lumia920 .camera{background:#3c3d3d;width:10px;height:10px;position:absolute;top:34px;right:130px;z-index:5;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.marvel-device.lumia920 .speaker{background:#292728;width:64px;height:10px;position:absolute;top:38px;left:50%;margin-left:-32px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;z-index:3}.marvel-device.lumia920.landscape{padding:35px 80px 35px 125px;height:320px;width:568px;-moz-border-radius:2px / 100px;-webkit-border-radius:2px / 100px;border-radius:2px / 100px}.marvel-device.lumia920.landscape .top-bar{height:calc(100% - 24px);width:calc(100% - 32px);left:16px;top:12px}.marvel-device.lumia920.landscape .volume{height:3px;right:130px;width:100px;top:100%;-webkit-border-radius:0px 0px 2px 2px;border-radius:0px 0px 2px 2px}.marvel-device.lumia920.landscape .volume:before{height:3px;right:190px;top:0px;width:50px;-webkit-border-radius:0px 0px 2px 2px;border-radius:0px 0px 2px 2px}.marvel-device.lumia920.landscape .volume:after{height:3px;right:430px;top:0px;width:50px;-webkit-border-radius:0px 0px 2px 2px;border-radius:0px 0px 2px 2px}.marvel-device.lumia920.landscape .camera{right:30px;top:calc(100% - 140px)}.marvel-device.lumia920.landscape .speaker{width:10px;height:64px;top:50%;margin-left:0;margin-top:-32px;left:calc(100% - 48px)}.marvel-device.lumia920.black{background:black}.marvel-device.lumia920.white{background:white;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,0.2);box-shadow:0 1px 2px 0 rgba(0,0,0,0.2)}.marvel-device.lumia920.blue{background:#00acdd}.marvel-device.lumia920.red{background:#CC3E32}.marvel-device.htc-one{padding:72px 25px 100px 25px;width:320px;height:568px;background:#bebebe;-webkit-border-radius:34px;border-radius:34px}.marvel-device.htc-one:before{content:'';display:block;width:calc(100% - 4px);height:calc(100% - 4px);position:absolute;top:2px;left:2px;background:#adadad;-webkit-border-radius:32px;border-radius:32px}.marvel-device.htc-one:after{content:'';display:block;width:calc(100% - 8px);height:calc(100% - 8px);position:absolute;top:4px;left:4px;background:#eeeeee;-webkit-border-radius:30px;border-radius:30px}.marvel-device.htc-one .top-bar{width:calc(100% - 4px);height:635px;position:absolute;background:#424242;top:50px;z-index:1;left:2px}.marvel-device.htc-one .top-bar:before{content:'';position:absolute;width:calc(100% - 4px);height:100%;position:absolute;background:black;top:0px;z-index:1;left:2px}.marvel-device.htc-one .bottom-bar{display:none}.marvel-device.htc-one .speaker{height:16px;width:216px;display:block;position:absolute;top:22px;z-index:2;left:50%;margin-left:-108px;background:radial-gradient(#343434 25%, transparent 50%) 0 0,radial-gradient(#343434 25%, transparent 50%) 4px 4px;background-size:4px 4px;background-position:top left}.marvel-device.htc-one .speaker:after{content:'';height:16px;width:216px;display:block;position:absolute;top:676px;z-index:2;left:50%;margin-left:-108px;background:inherit}.marvel-device.htc-one .camera{display:block;position:absolute;top:18px;right:38px;background:#3c3d3d;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;width:24px;height:24px;z-index:3}.marvel-device.htc-one .camera:before{width:8px;height:8px;background:black;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;position:absolute;content:'';top:50%;left:50%;margin-top:-4px;margin-left:-4px}.marvel-device.htc-one .sensor{display:block;position:absolute;top:29px;left:60px;background:#3c3d3d;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;width:8px;height:8px;z-index:3}.marvel-device.htc-one .sensor:after{display:block;content:'';position:absolute;top:0px;right:12px;background:#3c3d3d;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;width:8px;height:8px;z-index:3}.marvel-device.htc-one.landscape{padding:25px 72px 25px 100px;height:320px;width:568px}.marvel-device.htc-one.landscape .top-bar{height:calc(100% - 4px);width:635px;left:calc(100% - 685px);top:2px}.marvel-device.htc-one.landscape .speaker{width:16px;height:216px;left:calc(100% - 38px);top:50%;margin-left:0px;margin-top:-108px}.marvel-device.htc-one.landscape .speaker:after{width:16px;height:216px;left:calc(100% - 692px);top:50%;margin-left:0;margin-top:-108px}.marvel-device.htc-one.landscape .camera{right:18px;top:calc(100% - 38px)}.marvel-device.htc-one.landscape .sensor{left:calc(100% - 29px);top:60px}.marvel-device.htc-one.landscape .sensor :after{right:0;top:-12px}.marvel-device.ipad{width:576px;height:768px;padding:90px 25px;background:#242324;-webkit-border-radius:44px;border-radius:44px}.marvel-device.ipad:before{width:calc(100% - 8px);height:calc(100% - 8px);position:absolute;content:'';display:block;top:4px;left:4px;-webkit-border-radius:40px;border-radius:40px;background:#1e1e1e}.marvel-device.ipad .camera{background:#3c3d3d;width:10px;height:10px;position:absolute;top:44px;left:50%;margin-left:-5px;-webkit-border-radius:100%;border-radius:100%}.marvel-device.ipad .top-bar,.marvel-device.ipad .bottom-bar{display:none}.marvel-device.ipad .home{background:#242324;-webkit-border-radius:36px;border-radius:36px;width:50px;height:50px;position:absolute;left:50%;margin-left:-25px;bottom:22px}.marvel-device.ipad .home:after{width:15px;height:15px;margin-top:-8px;margin-left:-8px;border:1px solid rgba(255,255,255,0.1);-webkit-border-radius:4px;border-radius:4px;position:absolute;display:block;content:'';top:50%;left:50%}.marvel-device.ipad.landscape{height:576px;width:768px;padding:25px 90px}.marvel-device.ipad.landscape .camera{left:calc(100% - 44px);top:50%;margin-left:0;margin-top:-5px}.marvel-device.ipad.landscape .home{top:50%;left:22px;margin-left:0;margin-top:-25px}.marvel-device.ipad.silver{background:#bcbcbc}.marvel-device.ipad.silver:before{background:#fcfcfc}.marvel-device.ipad.silver .home{background:#fcfcfc;-webkit-box-shadow:inset 0 0 0 1px #bcbcbc;box-shadow:inset 0 0 0 1px #bcbcbc}.marvel-device.ipad.silver .home:after{border:1px solid rgba(0,0,0,0.2)} 2 | -------------------------------------------------------------------------------- /static/stylesheets/jquery.emojipicker.css: -------------------------------------------------------------------------------- 1 | .emojiPickerIconWrap {display:inline-block; position:relative;} 2 | .emojiPickerIcon {position:absolute; top:0; right:0; cursor:pointer; } 3 | 4 | .emojiPickerIconWrap .white {background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMjc2Ljg5MXB4IiBoZWlnaHQ9IjI3Ni44OTFweCIgdmlld0JveD0iMCAwIDI3Ni44OTEgMjc2Ljg5MSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjc2Ljg5MSAyNzYuODkxIg0KCSB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjRkZGRkZGIiBzdHJva2Utd2lkdGg9IjExIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGN4PSIxMzguNDQ1IiBjeT0iMTM4LjQ0NSIgcj0iMTMyLjk0NSIvPg0KPGNpcmNsZSBmaWxsPSIjRkZGRkZGIiBjeD0iNjguMTIiIGN5PSIxMjUuMzk1IiByPSIxNi41MDciLz4NCjxjaXJjbGUgZmlsbD0iI0ZGRkZGRiIgY3g9IjIwOC42MTciIGN5PSIxMjUuMzk1IiByPSIxNi41MDgiLz4NCjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik02OC4xMiwxODIuMDM0DQoJYzAsMCw2OS43OTMsNzAuNzA0LDE0MC40OTgsMCIvPg0KPC9zdmc+DQo=') center center no-repeat; background-size:60%;} 5 | .emojiPickerIconWrap .black {background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMjc2Ljg5MXB4IiBoZWlnaHQ9IjI3Ni44OTFweCIgdmlld0JveD0iMCAwIDI3Ni44OTEgMjc2Ljg5MSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjc2Ljg5MSAyNzYuODkxIg0KCSB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjExIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGN4PSIxMzguNDQ1IiBjeT0iMTM4LjQ0NSIgcj0iMTMyLjk0NSIvPg0KPGNpcmNsZSBjeD0iNjguMTIiIGN5PSIxMjUuMzk1IiByPSIxNi41MDciLz4NCjxjaXJjbGUgY3g9IjIwOC42MTciIGN5PSIxMjUuMzk1IiByPSIxNi41MDgiLz4NCjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik02OC4xMiwxODIuMDM0DQoJYzAsMCw2OS43OTMsNzAuNzA0LDE0MC40OTgsMCIvPg0KPC9zdmc+DQo=') center center no-repeat; background-size:60%;} 6 | .emojiPickerIconWrap .yellow {background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMjc2Ljg5MXB4IiBoZWlnaHQ9IjI3Ni44OTFweCIgdmlld0JveD0iMCAwIDI3Ni44OTEgMjc2Ljg5MSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjc2Ljg5MSAyNzYuODkxIg0KCSB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjRUJDMjAwIiBzdHJva2Utd2lkdGg9IjExIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGN4PSIxMzguNDQ1IiBjeT0iMTM4LjQ0NSIgcj0iMTMyLjk0NSIvPg0KPGNpcmNsZSBmaWxsPSIjRUJDMjAwIiBjeD0iNjguMTIiIGN5PSIxMjUuMzk1IiByPSIxNi41MDciLz4NCjxjaXJjbGUgZmlsbD0iI0VCQzIwMCIgY3g9IjIwOC42MTciIGN5PSIxMjUuMzk1IiByPSIxNi41MDgiLz4NCjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0VCQzIwMCIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik02OC4xMiwxODIuMDM0DQoJYzAsMCw2OS43OTMsNzAuNzA0LDE0MC40OTgsMCIvPg0KPC9zdmc+DQo=') center center no-repeat; background-size:60%;} 7 | .emojiPickerIconWrap .grey, .emojiPickerIconWrap .gray {background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMjc2Ljg5MXB4IiBoZWlnaHQ9IjI3Ni44OTFweCIgdmlld0JveD0iMCAwIDI3Ni44OTEgMjc2Ljg5MSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjc2Ljg5MSAyNzYuODkxIg0KCSB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjRUJDMjAwIiBzdHJva2Utd2lkdGg9IjExIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGN4PSIxMzguNDQ1IiBjeT0iMTM4LjQ0NSIgcj0iMTMyLjk0NSIvPg0KPGNpcmNsZSBmaWxsPSIjRUJDMjAwIiBjeD0iNjguMTIiIGN5PSIxMjUuMzk1IiByPSIxNi41MDciLz4NCjxjaXJjbGUgZmlsbD0iI0VCQzIwMCIgY3g9IjIwOC42MTciIGN5PSIxMjUuMzk1IiByPSIxNi41MDgiLz4NCjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0VCQzIwMCIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik02OC4xMiwxODIuMDM0DQoJYzAsMCw2OS43OTMsNzAuNzA0LDE0MC40OTgsMCIvPg0KPC9zdmc+DQo=') center center no-repeat; background-size:60%;} 8 | 9 | .emojiPicker {display:none; position:absolute; outline:none; border:none; box-shadow:0 0 7px #555; border-top-left-radius:4px; border-top-right-radius:4px;} 10 | .emojiPicker div.emoji {width:1.3em; height:1.3em; position:relative; display:inline-block;} 11 | .emojiPicker span.emoji {width:1.3em; height:1.3em; display:inline-block; position:relative; overflow:hidden; text-indent:-9999px; vertical-align:middle;} 12 | .emojiPicker .hidden {display:none;} 13 | 14 | .emojiPicker nav {position:relative; z-index:0; background-color:#f2f2f2; border-top-left-radius:4px; border-top-right-radius:4px;} 15 | .emojiPicker nav div.tab {display:inline-block; margin:2% 1% 0 1%; padding:2% 2% 1% 2%; border-top-left-radius:4px; border-top-right-radius:4px; cursor:pointer;} 16 | .emojiPicker nav div.tab.active {background-color:#fff; box-shadow:0 0 3px #ccc;} 17 | 18 | .emojiPicker section {overflow:scroll; position:relative; z-index:10; background:#fff;} 19 | .emojiPicker section div {width:40px; float:left; margin:3%;} 20 | .emojiPicker section div:hover {cursor:pointer;} 21 | -------------------------------------------------------------------------------- /static/stylesheets/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | height: 100vh; 3 | } 4 | 5 | .marvel-device.iphone6.silver { 6 | margin-top: -30px; 7 | } 8 | 9 | .marvel-device .screen { 10 | text-align: left; 11 | z-index: 3; 12 | color: inherit; 13 | -webkit-box-shadow: inherit; 14 | box-shadow: inherit; 15 | } 16 | 17 | .action-bar { 18 | width: 330px; 19 | } 20 | 21 | .option { 22 | width: 40px; 23 | padding-top: 8px; 24 | } 25 | 26 | span.emoji { 27 | font-family: initial; 28 | } 29 | 30 | #msg-input { 31 | width: 245px; 32 | } 33 | 34 | .chat-app { 35 | position: relative; 36 | height: 100%; 37 | padding-top: 0 !important; 38 | } 39 | 40 | .chat-app .action-bar { 41 | position: absolute; 42 | width: 100%; 43 | bottom: 0; 44 | } 45 | 46 | .swish-input { 47 | /*height: 43px;*/ 48 | } 49 | 50 | #try-it-out { 51 | width: 160px; 52 | font-weight: 200; 53 | padding: 10px 16px; 54 | vertical-align: bottom; 55 | } 56 | 57 | #message-list { 58 | height: 420px; 59 | overflow: scroll; 60 | } -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Realtime Chat with Pusher + React 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 50 | 51 | 52 |
53 |
54 | 55 | 56 | 57 | --------------------------------------------------------------------------------