diff --git a/dist/index.js b/dist/index.js index d149b1b..1b649a1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -function f(f){return f&&f.__esModule?f.default:f}var e,i,n,d,a,u,o={},t=[],r=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function l(f,e){for(var i in e)f[i]=e[i];return f}function s(f){var e=f.parentNode;e&&e.removeChild(f)}function c(f,i,n){var d,a,u,o={};for(u in i)"key"==u?d=i[u]:"ref"==u?a=i[u]:o[u]=i[u];if(arguments.length>2&&(o.children=arguments.length>3?e.call(arguments,2):n),"function"==typeof f&&null!=f.defaultProps)for(u in f.defaultProps)void 0===o[u]&&(o[u]=f.defaultProps[u]);return _(f,o,d,a,null)}function _(f,e,d,a,u){var o={type:f,props:e,key:d,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==u?++n:u};return null==u&&null!=i.vnode&&i.vnode(o),o}function g(f){return f.children}function b(f,e){this.props=f,this.context=e}function h(f,e){if(null==e)return f.__?h(f.__,f.__.__k.indexOf(f)+1):null;for(var i;e0?_(p.type,p.props,p.key,null,p.__v):p)){if(p.__=i,p.__b=i.__b+1,null===(m=C[c])||m&&p.key==m.key&&p.type===m.type)C[c]=void 0;else for(b=0;b`0x${f}`));return String.fromCodePoint(...e)}};const H=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart"];let $=null;var K={add:function(f){$||($=Z.get("frequently")||{});const e=f.id||f;e&&($[e]||($[e]=0),$[e]+=1,Z.set("last",e),Z.set("frequently",$))},get:function({maxFrequentRows:f,perLine:e}){$||($=Z.get("frequently"));let i=[];if(!$){$={};for(let f in H.slice(0,e)){const n=H[f];$[n]=e-f,i.push(n)}return i}const n=f*e,d=Z.get("last");for(let f in $)i.push(f);if(i.sort(((f,e)=>{const i=$[e],n=$[f];return i==n?f.localeCompare(e):i-n})),i.length>n){const f=i.slice(n);i=i.slice(0,n);for(let e of f)e!=d&&delete $[e];d&&-1==i.indexOf(d)&&(delete $[i[i.length-1]],i.splice(-1,1,d)),Z.set("frequently",$)}return i}};let W=null;function V(f,{maxResults:e}={}){const i=f.toLowerCase().replace(/(\w)-/,"$1 ").split(/[\s|,]+/).filter(((f,e,i)=>f.trim()&&i.indexOf(f)==e));if(!i.length)return;let n,d,a=W||(W=Object.values(Y.emojis));for(const f of i){if(!a.length)break;n=[],d={};for(const e of a){if(!e.search)continue;const i=e.search.indexOf(`,${f}`);-1!=i&&(n.push(e),d[e.id]||(d[e.id]=0),d[e.id]+=e.id==f?0:i+1)}a=n}return n.length<2||(n.sort(((f,e)=>{const i=d[f.id],n=d[e.id];return i==n?f.id.localeCompare(e.id):i-n})),n.length>e&&(n=n.slice(0,e))),n}var G={search:async function(f,{maxResults:e}={}){return f&&f.trim().length?(e||(e=90),await df(),V(f,{maxResults:e})):null},searchSynchronized:function(f,{maxResults:e}={}){return f&&f.trim().length?(e||(e=90),df(),V(f,{maxResults:e})):null},get:function(f){return f.id?f:Y.emojis[f]||Y.emojis[Y.aliases[f]]||Y.emojis[Y.natives[f]]},getShortcodeFromNative:function(f){return Y.natives[f]},SHORTCODES_REGEX:/^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/};var J={getUrl:function(f){return"https://static.figma.com/emoji/4/64/"+f.unified?.toLowerCase()+".png"}};let X=f(A),Y=function(f){f.natives={};const e=function(f){const e={};for(const i of Object.keys(f.aliases))e[f.aliases[i]]=i;return e}(f);return Object.keys(f.emojis).forEach((i=>{const n={};n.id=i,n.search=","+[...new Set([n.id,...n.id.split(/[-|_|\s]+/),...(e[n.id]||"").split(/[-|_|\s]+/)].map((f=>f?f.toLowerCase():"")).filter((f=>f&&f.trim())))].join(","),n.skins=f.emojis[i],n.skins.forEach(((e,i)=>{if(e){const d=i+1==1?"":`:skin-tone-${i+1}:`;e.shortcodes=`:${n.id}:${d}`;const a=N.unifiedToNative(e.unified);f.natives[a]=e.shortcodes}})),f.emojis[i]=n})),f}(f(D));const Q={autoFocus:{value:!1},emojiButtonColors:{value:null},emojiButtonRadius:{value:"100%"},emojiButtonSize:{value:34},emojiSize:{value:22},emojiVersion:{value:14,choices:[1,2,3,4,5,11,12,12.1,13,13.1,14]},locale:{value:"en",choices:["en","fr"]},maxFrequentRows:{value:4},navPosition:{value:"top",choices:["top","bottom","none"]},noCountryFlags:{value:!1},noResultsEmoji:{value:null},perLine:{value:9},previewEmoji:{value:null},previewPosition:{value:"bottom",choices:["top","bottom","none"]},set:{value:"native",choices:["native","apple","facebook","google","twitter"]},skin:{value:1,choices:[1,2,3,4,5,6]},stickySearch:{value:!0},theme:{value:"auto",choices:["auto","light","dark"]}};let ff=null,ef=!1,nf=null;function df(f){return ff||(ff=new Promise((f=>{nf=f}))),ef||(ef=!0,function(f,e){const{i18n:i}=f,n=function(f,e){function i(i){const n=Q[i];let d=e&&e.getAttribute(i)||f[i];return null!=d&&n.value&&typeof n.value!=typeof d&&(d="boolean"==typeof n.value?"false"!=d:n.value.constructor(d)),(null==d||n.choices&&-1==n.choices.indexOf(d))&&(d=n.value),d}f||(f={});const n={};for(let f in Q)n[f]=i(f);return n}(f,e);f.i18n&&(X=i);if(n.maxFrequentRows){const f=K.get(n);f.length&&Y.categories.unshift({id:"frequent",emojis:f})}nf(n)}(f||{})),ff}var af={categories:{activity:T("svg",{width:"19",height:"19",viewBox:"0 0 19 19",version:"1.1",children:[T("path",{d:"M 2.83936 4.21875C 3.89404 5.54712 4.55981 7.19824 4.66431 9L 5.66577 9C 5.55701 6.90271 4.76794 4.98523 3.51514 3.46411C 4.9408 2.05042 6.86462 1.13831 9 1.0144L 9.5 0C 4.2533 0 0 4.2533 0 9.5L 1.0144 9C 1.1189 7.19824 1.78467 5.54712 2.83936 4.21875Z"}),T("path",{d:"M 10 10L 13.5485 10L 14.5499 10L 14.5499 9L 13.5485 9L 10 9L 10 1.0144L 9.5 0L 9 1.0144L 9 9L 5.66577 9L 4.66431 9L 4.66431 10L 5.66577 10L 9 10L 9 17.9856L 9.5 19L 10 17.9856L 10 10Z"}),T("path",{d:"M 16.2678 4.35657C 17.2604 5.66052 17.8846 7.26001 17.9856 9L 19 9.5C 19 4.2533 14.7467 0 9.5 0L 10 1.0144C 12.1947 1.14172 14.1659 2.10168 15.6025 3.58313C 14.4058 5.08472 13.6544 6.95703 13.5485 9L 14.5499 9C 14.6509 7.26001 15.2753 5.66064 16.2678 4.35657Z"}),T("path",{d:"M 1.0144 10L 4.66431 10L 4.66431 9L 1.0144 9L 0 9.5L 1.0144 10Z"}),T("path",{d:"M 3.51514 15.5359C 4.76794 14.0148 5.55701 12.0973 5.66577 10L 4.66431 10C 4.55981 11.8018 3.89404 13.4529 2.83936 14.7812C 1.78467 13.4529 1.1189 11.8018 1.0144 10L 0 9.5C 0 14.7467 4.2533 19 9.5 19L 9 17.9856C 6.86462 17.8617 4.9408 16.9496 3.51514 15.5359Z"}),T("path",{d:"M 15.6025 15.4169C 14.1659 16.8983 12.1947 17.8583 10 17.9856L 9.5 19C 14.7467 19 19 14.7467 19 9.5L 17.9856 10C 17.8846 11.74 17.2604 13.3395 16.2678 14.6434C 15.2753 13.3394 14.6509 11.74 14.5499 10L 13.5485 10C 13.6544 12.043 14.4058 13.9153 15.6025 15.4169Z"}),T("path",{d:"M 14.5499 10L 17.9856 10L 19 9.5L 17.9856 9L 14.5499 9L 14.5499 10Z"})]}),flags:T("svg",{width:"12",height:"18",viewBox:"0 -1 12 18",version:"1.1",children:[T("path",{d:"M 1 0L 0 0L 0 1L 0 8L 0 9L 0 17L 1 17L 1 9L 1 8L 1 1L 1 0Z"}),T("path",{d:"M 1 9L 11 9L 12 9L 12 8L 12 1L 12 0L 11 0L 1 0L 1 1L 11 1L 11 8L 1 8L 1 9Z"})]}),foods:T("svg",{width:"17",height:"19",viewBox:"0 0 17 19",version:"1.1",children:[T("path",{d:"M 12.1183 6.48747C 11.4751 6.23515 10.7572 6.10832 10 6.10832C 9.88623 6.10832 9.77332 6.11296 9.66138 6.12187C 9.07397 6.16911 8.5144 6.33805 8 6.60771L 8 1.6082L 7.5 8.12834L 8.07019 7.73258C 8.68677 7.29289 9.25342 7.09477 10 7.10832C 11.1823 7.10832 12.1726 7.46806 12.8571 8.10026C 13.5286 8.72062 14 9.68937 14 11.1083C 14 12.462 13.3236 13.9887 12.2791 15.1969C 11.2169 16.4257 9.96875 17.1083 9 17.1083C 8.54712 17.1144 8.26135 17.0506 7.92432 16.886L 7.5 16.6873L 7.5 17.7915C 7.93848 17.997 8.43762 18.1083 9 18.1083C 11.7615 18.1083 15 14.422 15 11.1083C 15 8.70329 13.8208 7.15556 12.1183 6.48747Z"}),T("path",{d:"M 6 18.1083C 6.56238 18.1083 7.06152 17.997 7.5 17.7915L 7.5 16.6873L 7.07568 16.886C 6.73865 17.0506 6.45288 17.1144 6 17.1083C 5.03125 17.1083 3.78308 16.4257 2.72095 15.1969C 1.67639 13.9887 1 12.462 1 11.1083C 1 9.68937 1.47144 8.72062 2.14294 8.10026C 2.82739 7.46806 3.81775 7.10832 5 7.10832C 5.74658 7.09477 6.31323 7.29289 6.92981 7.73258L 7.5 8.12834L 8 1.6082L 7 1.6082L 7 6.60758C 6.38757 6.28642 5.71118 6.10832 5 6.10832C 2.23853 6.10832 0 7.7946 0 11.1083C 0 14.422 3.23853 18.1083 6 18.1083Z"}),T("path",{d:"M 11.4785 0.600017C 9.95911 1.47721 9.13403 3.11283 9.20801 4.76139L 10.2225 4.18717C 10.3368 3.08537 10.9589 2.05473 11.9785 1.46611C 12.9932 0.88029 14.1703 0.864665 15.1501 1.31889L 16.1647 0.74467C 14.8052 -0.16158 12.9978 -0.27718 11.4785 0.600017Z"}),T("path",{d:"M 13.8942 4.90605C 15.4136 4.02885 16.2386 2.39323 16.1647 0.74467L 15.1501 1.31889C 15.0359 2.42082 14.4138 3.45133 13.3942 4.04008C 12.3795 4.6259 11.2024 4.64152 10.2225 4.18717L 9.20801 4.76139C 9.4104 4.8964 9.6228 5.01371 9.84253 5.11296C 9.89465 5.13652 9.94714 5.15898 10 5.18034C 10.7045 5.46611 11.4779 5.56913 12.244 5.46842C 12.8082 5.39433 13.3684 5.20964 13.8942 4.90605Z"})]}),frequent:T("svg",{width:"20",height:"20",viewBox:"0 0 20 20",version:"1.1",children:[T("path",{d:"M 9 4L 10 4L 10 10L 16 10L 16 11L 10 11L 9 11L 9 10L 9 4Z"}),T("path",{d:"M 10 20C 4.47717 20 0 15.5228 0 10C 0 4.47717 4.47717 0 10 0L 10 1C 5.02942 1 1 5.02942 1 10C 1 14.9706 5.02942 19 10 19L 10 20Z"}),T("path",{d:"M 20 10C 20 15.5228 15.5228 20 10 20L 10 19C 14.9706 19 19 14.9706 19 10C 19 5.02942 14.9706 1 10 1L 10 0C 15.5228 0 20 4.47717 20 10Z"})]}),nature:T("svg",{width:"18",height:"18",viewBox:"0 0 18 18",version:"1.1",children:[T("path",{d:"M 4.77954 12.2311L 0 17.0106L 0.707153 17.7177L 5.39307 13.0318L 4.77954 12.2311Z"}),T("path",{d:"M 6.16248 12.2624L 5.56335 11.4472L 4.77954 12.2311L 5.39307 13.0318L 6.16248 12.2624Z"}),T("path",{d:"M 5.39307 13.0318C 8.67566 14.4375 12.6239 13.8008 15.3032 11.1214C 18.0741 8.35044 18.6605 4.22227 17.0624 0.876806L 16.4442 1.98069C 17.4929 4.82078 16.8754 8.13498 14.5961 10.4143C 12.3169 12.6936 9.00244 13.3111 6.16248 12.2624L 5.39307 13.0318Z"}),T("path",{d:"M 15.6292 1.38144L 5.56335 11.4472L 6.16248 12.2624L 16.4442 1.98069L 15.6292 1.38144Z"}),T("path",{d:"M 7.52515 3.34299C 9.7168 1.15134 12.8655 0.496191 15.6292 1.38144L 17.0624 0.876806C 13.717 -0.721216 9.58887 -0.134912 6.81799 2.63596C 4.22388 5.23008 3.54431 9.01377 4.77954 12.2311L 5.56335 11.4472C 4.6781 8.68345 5.33337 5.53477 7.52515 3.34299Z"}),T("path",{d:"M 17.0624 0.876806L 15.6292 1.38144L 16.4442 1.98069L 17.0624 0.876806Z"})]}),objects:T("svg",{width:"18",height:"17",viewBox:"0 0 18 17",version:"1.1",children:T("path",{d:"M 15.6673 1.61096C 13.5194 -0.536987 10.037 -0.536987 7.88901 1.61096L 1.1716 8.32849C -0.390533 9.8905 -0.390533 12.4232 1.1716 13.9854C 2.73361 15.5472 5.26572 15.5481 6.82785 13.9858L 9.30331 11.5105L 9.65683 11.1569L 12.1318 8.68213C 13.108 7.70581 13.108 6.12292 12.1318 5.14661C 11.1555 4.17029 9.57248 4.17029 8.59616 5.14661L 3.29294 10.45L 3.99997 11.157L 9.30331 5.85376C 9.88913 5.26794 10.8388 5.26794 11.4247 5.85376C 12.0105 6.43945 12.0105 7.38928 11.4247 7.97498L 8.9498 10.4498L 8.59616 10.8035L 6.12082 13.2787C 4.94931 14.4502 3.05038 14.4498 1.87863 13.2782C 0.707123 12.1066 0.707123 10.2072 1.87863 9.03552L 8.59616 2.31812C 10.3535 0.560669 13.2029 0.560669 14.9602 2.31812C 16.7176 4.07544 16.7176 6.9248 14.9602 8.68213L 8.24277 15.3997L 8.9498 16.1067L 15.6673 9.38928C 17.8152 7.24133 17.8152 3.75891 15.6673 1.61096Z"})}),people:T("svg",{width:"19",height:"19",viewBox:"0 0 19 19",version:"1.1",children:[T("path",{d:"M 9.5 15C 7.08093 15 5.06323 13.2822 4.59998 11L 5.62598 11C 6.07007 12.7252 7.63623 14 9.5 14C 11.3638 14 12.9299 12.7252 13.374 11L 14.4 11C 13.9368 13.2822 11.9191 15 9.5 15Z"}),T("path",{d:"M 7 7.5C 7 8.05225 6.55225 8.5 6 8.5C 5.44775 8.5 5 8.05225 5 7.5C 5 6.94775 5.44775 6.5 6 6.5C 6.55225 6.5 7 6.94775 7 7.5Z"}),T("path",{d:"M 13 8.5C 13.5522 8.5 14 8.05225 14 7.5C 14 6.94775 13.5522 6.5 13 6.5C 12.4478 6.5 12 6.94775 12 7.5C 12 8.05225 12.4478 8.5 13 8.5Z"}),T("path",{d:"M 9.5 18C 4.80554 18 1 14.1945 1 9.5C 1 4.80554 4.80554 1 9.5 1L 9.5 0C 4.2533 0 0 4.2533 0 9.5C 0 14.7467 4.2533 19 9.5 19L 9.5 18Z"}),T("path",{d:"M 18 9.5C 18 14.1945 14.1945 18 9.5 18L 9.5 19C 14.7467 19 19 14.7467 19 9.5C 19 4.2533 14.7467 0 9.5 0L 9.5 1C 14.1945 1 18 4.80554 18 9.5Z"})]}),places:T("svg",{width:"18",height:"18",viewBox:"0 0 18 18",version:"1.1",children:[T("path",{d:"M 11.9747 1.55383C 12.5566 1.17468 13.1697 0.994873 13.8641 1L 17.861 1L 17.861 0L 13.8641 0C 13.0276 0.00512695 12.1419 0.264648 11.4349 0.712036L 2.07887 6.71204C -1.70385 9.13794 0.0142913 15 4.50807 15L 9.39637 15L 10.411 15L 12.6918 15L 15.3109 15L 16.3256 15L 17.861 15L 17.861 14L 12.6918 14L 4.50807 14C 1.26454 14 -0.119864 10.0732 2.0492 8L 3.48231 7L 7.38062 4.5L 8.93995 3.5L 11.9747 1.55383Z"}),T("path",{d:"M 13.111 3.5L 8.93995 3.5L 7.38062 4.5L 13.111 4.5C 13.8013 4.5 14.361 5.05969 14.361 5.75C 14.361 6.44031 13.8013 7 13.111 7L 3.48231 7L 2.0492 8L 13.111 8C 14.3536 8 15.361 6.99268 15.361 5.75C 15.361 4.50732 14.3536 3.5 13.111 3.5Z"}),T("path",{d:"M 12.861 18C 14.6242 18 16.0829 16.6962 16.3256 15L 15.3109 15C 15.0794 16.1411 14.0704 17 12.861 17C 11.6515 17 10.6426 16.1411 10.411 15L 9.39637 15C 9.63905 16.6962 11.0978 18 12.861 18Z"})]}),symbols:T("svg",{width:"19",height:"16",viewBox:"0 0 19 16",version:"1.1",children:[T("path",{d:"M 1 5C 1 2.79091 2.79091 1 5 1C 6.54723 1 7.89015 1.8784 8.55585 3.16603L 9 4.02513L 9 1.99968C 8.08821 0.786061 6.63622 0 5 0C 2.23863 0 0 2.23863 0 5C 0 6.63571 0.786056 8.08793 1.99875 8.99938L 8.65451 15.3614L 9 15.6917L 9 14.3083L 2.66775 8.2555L 2.64519 8.23393L 2.62011 8.21534C 1.63619 7.48562 1 6.31713 1 5Z"}),T("path",{d:"M 15.3322 8.2555L 9 14.3083L 9 15.6917L 9.34549 15.3614L 16.0013 8.99938C 17.2139 8.08793 18 6.63571 18 5C 18 2.23863 15.7614 0 13 0C 11.3638 0 9.91179 0.786061 9 1.99968L 9 4.02513L 9.44415 3.16603C 10.1099 1.8784 11.4528 1 13 1C 15.2091 1 17 2.79091 17 5C 17 6.31713 16.3638 7.48562 15.3799 8.21534L 15.3548 8.23393L 15.3322 8.2555Z"})]})},search:{loupe:T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",children:T("path",{d:"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"})}),delete:T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",children:T("path",{d:"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z"})})}};function uf(f){let{id:e,skin:i,shortcodes:n,emoji:d,set:a,size:u}=f;if(!d&&!e&&n){const f=n.match(G.SHORTCODES_REGEX);f&&(e=f[1],f[2]&&(i=f[2]))}if(d||(d=G.get(e)),!d||"female_sign"===d.id||"male_sign"===d.id)return f.fallback;const o=d.skins[i-1]||d.skins[0];if("native"===a){return T("span",{style:{fontSize:u||22,fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol"},children:N.unifiedToNative(o.unified)})}const t=J.getUrl(o);return T("img",{style:{height:f.size||"1em",width:"auto",display:"inline-block",position:"relative"},alt:o.native,src:t})}class of extends window.HTMLElement{constructor(f={}){if(super(),this.props=f,f.parent||f.ref){const e=f.parent||f.ref&&f.ref.current;e&&e.appendChild(this)}}}class tf extends of{constructor(f,{styles:e}={}){super(f),this.setShadow(),this.injectStyles(e)}setShadow(){this.attachShadow({mode:"open"})}injectStyles(f){if(!f)return;const e=document.createElement("style");e.textContent=f,this.shadowRoot.insertBefore(e,this.shadowRoot.firstChild)}}class rf extends of{async connectedCallback(){const f=await df(),e=this.getAttribute("native");let i=null;e&&(i=G.get(e));R(T(uf,{...{...f,emoji:i,id:this.getAttribute("id"),set:this.getAttribute("set")||f.set,size:this.getAttribute("size"),fallback:this.getAttribute("fallback"),shortcodes:this.getAttribute("shortcodes")}}),this)}}"customElements"in window&&!customElements.get("em-emoji")&&customElements.define("em-emoji",rf);var lf,sf,cf=[],_f=i.__b,gf=i.__r,bf=i.diffed,hf=i.__c,mf=i.unmount;function pf(){var f;for(cf.sort((function(f,e){return f.__v.__b-e.__v.__b}));f=cf.pop();)if(f.__P)try{f.__H.__h.forEach(kf),f.__H.__h.forEach(yf),f.__H.__h=[]}catch(e){f.__H.__h=[],i.__e(e,f.__v)}}i.__b=function(f){lf=null,_f&&_f(f)},i.__r=function(f){gf&&gf(f),0;var e=(lf=f.__c).__H;e&&(e.__h.forEach(kf),e.__h.forEach(yf),e.__h=[])},i.diffed=function(f){bf&&bf(f);var e=f.__c;e&&e.__H&&e.__H.__h.length&&(1!==cf.push(e)&&sf===i.requestAnimationFrame||((sf=i.requestAnimationFrame)||function(f){var e,i=function(){clearTimeout(n),wf&&cancelAnimationFrame(e),setTimeout(f)},n=setTimeout(i,100);wf&&(e=requestAnimationFrame(i))})(pf)),lf=null},i.__c=function(f,e){e.some((function(f){try{f.__h.forEach(kf),f.__h=f.__h.filter((function(f){return!f.__||yf(f)}))}catch(n){e.some((function(f){f.__h&&(f.__h=[])})),e=[],i.__e(n,f.__v)}})),hf&&hf(f,e)},i.unmount=function(f){mf&&mf(f);var e,n=f.__c;n&&n.__H&&(n.__H.__.forEach((function(f){try{kf(f)}catch(f){e=f}})),e&&i.__e(e,n.__v))};var wf="function"==typeof requestAnimationFrame;function kf(f){var e=lf,i=f.__c;"function"==typeof i&&(f.__c=void 0,i()),lf=e}function yf(f){var e=lf;f.__c=f.__(),lf=e}function vf(f,e){for(var i in e)f[i]=e[i];return f}function xf(f,e){for(var i in f)if("__source"!==i&&!(i in e))return!0;for(var n in e)if("__source"!==n&&f[n]!==e[n])return!0;return!1}function Cf(f){this.props=f}(Cf.prototype=new b).isPureReactComponent=!0,Cf.prototype.shouldComponentUpdate=function(f,e){return xf(this.props,f)||xf(this.state,e)};var jf=i.__b;i.__b=function(f){f.type&&f.type.__f&&f.ref&&(f.props.ref=f.ref,f.ref=null),jf&&jf(f)};"undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref");var Lf=i.__e;i.__e=function(f,e,i){if(f.then)for(var n,d=e;d=d.__;)if((n=d.__c)&&n.__c)return null==e.__e&&(e.__e=i.__e,e.__k=i.__k),n.__c(f,e);Lf(f,e,i)};var Sf=i.unmount;function zf(){this.__u=0,this.t=null,this.__b=null}function qf(f){var e=f.__.__c;return e&&e.__e&&e.__e(f)}function Ef(){this.u=null,this.o=null}i.unmount=function(f){var e=f.__c;e&&e.__R&&e.__R(),e&&!0===f.__h&&(f.type=null),Sf&&Sf(f)},(zf.prototype=new b).__c=function(f,e){var i=e.__c,n=this;null==n.t&&(n.t=[]),n.t.push(i);var d=qf(n.__v),a=!1,u=function(){a||(a=!0,i.__R=null,d?d(o):o())};i.__R=u;var o=function(){if(!--n.__u){if(n.state.__e){var f=n.state.__e;n.__v.__k[0]=function f(e,i,n){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map((function(e){return f(e,i,n)})),e.__c&&e.__c.__P===i&&(e.__e&&n.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=n)),e}(f,f.__c.__P,f.__c.__O)}var e;for(n.setState({__e:n.__b=null});e=n.t.pop();)e.forceUpdate()}},t=!0===e.__h;n.__u++||t||n.setState({__e:n.__b=n.__v.__k[0]}),f.then(u,u)},zf.prototype.componentWillUnmount=function(){this.t=[]},zf.prototype.render=function(f,e){if(this.__b){if(this.__v.__k){var i=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function f(e,i,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach((function(f){"function"==typeof f.__c&&f.__c()})),e.__c.__H=null),null!=(e=vf({},e)).__c&&(e.__c.__P===n&&(e.__c.__P=i),e.__c=null),e.__k=e.__k&&e.__k.map((function(e){return f(e,i,n)}))),e}(this.__b,i,n.__O=n.__P)}this.__b=null}var d=e.__e&&c(g,null,f.fallback);return d&&(d.__h=null),[c(g,null,e.__e?null:f.children),d]};var Mf=function(f,e,i){if(++i[1]===i[0]&&f.o.delete(e),f.props.revealOrder&&("t"!==f.props.revealOrder[0]||!f.o.size))for(i=f.u;i;){for(;i.length>3;)i.pop()();if(i[1]!f.target)),this.state={categoryId:this.categories[0].id}}renderIcon(f){const{icon:e}=f;if(e){if(e.svg)return T("span",{class:"flex",dangerouslySetInnerHTML:{__html:e.svg}});if(e.src)return T("img",{src:e.src})}return af.categories[f.id]}render(){let f=null;return T("nav",{id:"nav",class:"padding","data-position":this.props.position,children:T("div",{class:"flex relative",children:[this.categories.map(((e,i)=>{const n=e.name||X.categories[e.id],d=!this.props.unfocused&&e.id==this.state.categoryId;return d&&(f=i),T("button",{"aria-label":n,"aria-selected":d||void 0,title:n,type:"button",class:"flex flex-grow flex-center",onClick:()=>{this.props.onClick({category:e,i:i})},children:this.renderIcon(e)})})),T("div",{class:"bar",style:{width:100/this.categories.length+"%",opacity:null==f?0:1,transform:`translateX(${100*f}%)`}})]})})}}class Nf extends Cf{shouldComponentUpdate(f){for(let e in f)if("children"!=e&&f[e]!=this.props[e])return!0;return!1}render(){return this.props.children}}const Hf=10;class $f extends b{constructor(f){super(),this.state={pos:[-1,-1],skin:Z.get("skin")||f.skin,theme:this.initTheme(f.theme),visibleRows:{0:!0}}}componentWillMount(){const{categories:f}=Y;this.refs={categories:new Map,menu:{current:null},navigation:{current:null},scroll:{current:null},search:{current:null},searchInput:{current:null},skinToneButton:{current:null},skinToneRadio:{current:null}},this.grid=[],this.grid.setsize=0;const e=(f,e)=>{const i=[];i.__categoryId=e.id,i.__index=f.length,this.grid.push(i);const n=this.grid.length-1,d=n%Hf?{}:{current:null};return d.index=n,d.posinset=this.grid.setsize+1,f.push(d),i};for(let i of f){const f=[];let n=e(f,i);for(let d of i.emojis)n.length==this.props.perLine&&(n=e(f,i)),this.grid.setsize+=1,n.push(d);this.refs.categories.set(i.id,{root:{current:null},rows:f})}}componentDidMount(){this.observeCategories(),this.observeRows(),this.shadowRoot=this.base.parentNode,this.props.autoFocus&&this.refs.searchInput.current&&this.refs.searchInput.current.focus()}initTheme(f){if("auto"!=f)return f;const e=matchMedia("(prefers-color-scheme: dark)");return e.media.match(/^not/)?"light":(e.addListener((()=>{this.setState({theme:e.matches?"dark":"light"})})),e.matches?"dark":"light")}handleBaseClick=f=>{this.state.showSkins&&(f.target.closest(".menu")||(f.preventDefault(),f.stopImmediatePropagation(),this.closeSkins()))};handleBaseKeydown=f=>{this.state.showSkins&&"Escape"==f.key&&(f.preventDefault(),f.stopImmediatePropagation(),this.closeSkins(),this.refs.skinToneButton.current.focus())};getEmojiByPos([f,e]){const i=this.state.searchResults||this.grid,n=i[f]&&i[f][e];if(n)return G.get(n)}observeCategories(){const f=this.refs.navigation.current;if(!f)return;const e=new Map,i=e=>{e!=f.state.categoryId&&f.setState({categoryId:e})},n={root:this.refs.scroll.current,threshold:[0,1]},d=new IntersectionObserver((f=>{for(const i of f){const f=i.target.dataset.id;e.set(f,i.intersectionRatio)}const n=[...e],d=n[n.length-1];if(1==d[1])return i(d[0]);for(const[f,e]of n)if(e){i(f);break}}),n);for(const{root:f}of this.refs.categories.values())d.observe(f.current)}observeRows(){const f={...this.state.visibleRows},e=new IntersectionObserver((e=>{for(const i of e){const e=parseInt(i.target.dataset.index);i.isIntersecting?f[e]=!0:delete f[e]}this.setState({visibleRows:f})}),{root:this.refs.scroll.current,rootMargin:`${this.props.emojiButtonSize*(Hf+5)}px 0px ${this.props.emojiButtonSize*Hf}px`});for(const{rows:f}of this.refs.categories.values())for(const i of f)i.current&&e.observe(i.current)}preventDefault(f){f.preventDefault()}handleSearchClick=()=>{this.getEmojiByPos(this.state.pos)&&this.setState({pos:[-1,-1]})};handleSearchInput=async()=>{const f=this.refs.searchInput.current;if(!f)return;const{value:e}=f,i=await G.search(e),n=()=>{this.refs.scroll.current&&(this.refs.scroll.current.scrollTop=0)};if(!i)return this.setState({searchResults:i,pos:[-1,-1]},n);const d=f.selectionStart==f.value.length?[0,0]:[-1,-1],a=[];a.setsize=i.length;let u=null;for(let f of i)a.length&&u.length!=this.props.perLine||(u=[],u.__categoryId="search",u.__index=a.length,a.push(u)),u.push(f);this.ignoreMouse(),this.setState({searchResults:a,pos:d},n)};handleKeyDown=f=>{if(f.stopImmediatePropagation(),"Escape"===f.key)this.props.onEscapeKeydown&&this.props.onEscapeKeydown()};handleSearchKeyDown=f=>{const e=f.currentTarget;switch(f.stopImmediatePropagation(),f.key){case"ArrowLeft":this.navigate({e:f,input:e,left:!0});break;case"ArrowRight":this.navigate({e:f,input:e,right:!0});break;case"ArrowUp":this.navigate({e:f,input:e,up:!0});break;case"ArrowDown":this.navigate({e:f,input:e,down:!0});break;case"Enter":f.preventDefault(),this.handleEmojiClick({pos:this.state.pos});break;case"Escape":f.preventDefault(),this.state.searchResults?this.clearSearch():this.props.onEscapeKeydown?this.props.onEscapeKeydown():this.unfocusSearch()}};clearSearch=()=>{const f=this.refs.searchInput.current;f&&(f.value="",f.focus(),this.handleSearchInput())};unfocusSearch(){const f=this.refs.searchInput.current;f&&f.blur()}navigate({e:f,input:e,left:i,right:n,up:d,down:a}){const u=this.state.searchResults||this.grid;if(!u.length)return;let[o,t]=this.state.pos;const r=(()=>{if(0==o&&0==t&&!f.repeat&&(i||d))return null;if(-1==o)return f.repeat||!n&&!a||e.selectionStart!=e.value.length?null:[0,0];if(i||n){let f=u[o];const e=i?-1:1;if(t+=e,!f[t]){if(o+=e,f=u[o],!f)return o=i?0:u.length-1,t=i?0:u[o].length-1,[o,t];t=i?f.length-1:0}return[o,t]}if(d||a){o+=d?-1:1;const f=u[o];return f?(f[t]||(t=f.length-1),[o,t]):(o=d?0:u.length-1,t=d?0:u[o].length-1,[o,t])}})();r?(f.preventDefault(),this.setState({pos:r,keyboard:!0},(()=>{this.scrollTo({row:r[0]})}))):this.state.pos[0]>-1&&this.setState({pos:[-1,-1]})}scrollTo({categoryId:f,row:e}){const i=this.state.searchResults||this.grid;if(!i.length)return;const n=this.refs.scroll.current,d=n.getBoundingClientRect();let a=0;if(e>=0&&(f=i[e].__categoryId),f){a=(this.refs[f]||this.refs.categories.get(f).root).current.getBoundingClientRect().top-(d.top-n.scrollTop)+1}if(e>=0)if(e){const f=a+i[e].__index*this.props.emojiButtonSize,u=f+this.props.emojiButtonSize+.88*this.props.emojiButtonSize;if(fn.scrollTop+d.height))return;a=u-d.height}}else a=0;this.ignoreMouse(),n.scrollTop=a}ignoreMouse(){this.mouseIsIgnored=!0,clearTimeout(this.ignoreMouseTimer),this.ignoreMouseTimer=setTimeout((()=>{delete this.mouseIsIgnored}),100)}handleCategoryClick=({category:f,i:e})=>{this.scrollTo(0==e?{row:-1}:{categoryId:f.id})};handleEmojiOver(f){this.mouseIsIgnored||this.state.showSkins||this.setState({pos:f||[-1,-1],keyboard:!1})}handleEmojiClick({emoji:f,pos:e}){if(this.props.onEmojiSelect&&(!f&&e&&(f=this.getEmojiByPos(e)),f)){const e=f.skins[this.state.skin-1]||f.skins[0],i={id:f.id,unified:e.unified,keywords:f?.keywords||[],shortcodes:e.shortcodes||f.shortcodes};e.src&&(i.src=e.src),f.aliases&&f.aliases.length&&(i.aliases=f.aliases),this.props.maxFrequentRows&&K.add(i,this.props),this.props.onEmojiSelect(i)}}openSkins=f=>{const{currentTarget:e}=f,i=e.getBoundingClientRect();this.setState({showSkins:i},(async()=>{await I(2);const f=this.refs.menu.current;f&&(f.classList.remove("hidden"),this.refs.skinToneRadio.current.focus(),this.base.addEventListener("click",this.handleBaseClick,!0),this.base.addEventListener("keydown",this.handleBaseKeydown,!0))}))};closeSkins(){this.state.showSkins&&(this.setState({showSkins:null,tempSkin:null}),this.base.removeEventListener("click",this.handleBaseClick),this.base.removeEventListener("keydown",this.handleBaseKeydown))}handleSkinMouseOver(f){this.setState({tempSkin:f})}handleSkinClick(f){this.ignoreMouse(),this.closeSkins(),this.setState({skin:f,tempSkin:null}),Z.set("skin",f)}renderNav(){return T(Uf,{ref:this.refs.navigation,theme:this.state.theme,unfocused:!!this.state.searchResults,position:this.props.navPosition,onClick:this.handleCategoryClick})}renderPreview(){const f=this.getEmojiByPos(this.state.pos),e=this.state.searchResults&&!this.state.searchResults.length;return T("div",{id:"preview",class:"flex flex-middle","data-position":this.props.previewPosition,children:[T("div",{class:"flex flex-middle flex-grow",style:{padding:"4px 0px"},children:[T("div",{class:"flex flex-auto flex-middle flex-center",style:{height:30,width:30,fontSize:30},children:T(uf,{emoji:f,id:e?this.props.noResultsEmoji||"cry":this.props.previewEmoji||("top"==this.props.previewPosition?"point_down":"point_up"),set:this.props.set,size:22,skin:this.state.tempSkin||this.state.skin,spritesheet:!0})}),T("div",f?{class:"ellipsis color-c",children:f.skins[0].shortcodes}:e?{class:"ellipsis color-c",children:X.search_no_results}:{class:"color-c",children:X.pick})]}),!f&&this.renderSkinToneButton()]})}renderEmojiButton(f,{pos:e,posinset:i,grid:n}){const d=this.props.emojiButtonSize,a=this.state.tempSkin||this.state.skin,u=(o=this.state.pos,t=e,Array.isArray(o)&&Array.isArray(t)&&o.length===t.length&&o.every(((f,e)=>f==t[e])));var o,t;const r=e.concat(f.id).join("");return T(Nf,{selected:u,skin:a,size:d,children:T("button",{"aria-label":f.id,"aria-selected":u||void 0,"aria-posinset":i,"aria-setsize":n.setsize,"data-keyboard":this.state.keyboard,title:"none"==this.props.previewPosition?f.id:void 0,type:"button",class:"flex flex-center flex-middle",tabindex:"-1",onClick:()=>this.handleEmojiClick({emoji:f}),onMouseEnter:()=>this.handleEmojiOver(e),onMouseLeave:()=>this.handleEmojiOver(),style:{width:this.props.emojiButtonSize,height:this.props.emojiButtonSize,fontSize:this.props.emojiSize,lineHeight:0,fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol"},children:[T("div",{"aria-hidden":"true",class:"background",style:{borderRadius:this.props.emojiButtonRadius,backgroundColor:this.props.emojiButtonColors?this.props.emojiButtonColors[(i-1)%this.props.emojiButtonColors.length]:void 0}}),T(uf,{emoji:f,set:this.props.set,size:this.props.emojiSize,skin:a,spritesheet:!0})]})},r)}renderSearch(){return T("div",{children:[T("div",{class:"spacer"}),T("div",{class:"flex flex-middle",children:[T("div",{class:"search relative flex-grow",children:[T("input",{type:"search",autoFocus:this.props.autoFocus,ref:this.refs.searchInput,placeholder:X.search,onClick:this.handleSearchClick,onInput:this.handleSearchInput,onKeyDown:this.handleSearchKeyDown}),T("span",{class:"icon loupe flex",children:af.search.loupe}),this.state.searchResults&&T("button",{title:"Clear","aria-label":"Clear",type:"button",class:"icon delete flex",onClick:this.clearSearch,onMouseDown:this.preventDefault,children:af.search.delete})]}),"none"==this.props.previewPosition&&this.renderSkinToneButton()]})]})}renderSearchResults(){const{searchResults:f}=this.state;return f?T("div",{class:"category",ref:this.refs.search,children:[T("div",{class:"sticky padding-small",children:X.categories.search}),T("div",{children:f.map(((e,i)=>T("div",{class:"flex",children:e.map(((e,n)=>this.renderEmojiButton(e,{pos:[i,n],posinset:i*this.props.perLine+n+1,grid:f})))})))})]}):null}renderCategories(){const{categories:f}=Y,e=!!this.state.searchResults;return T("div",{style:{visibility:e?"hidden":void 0,display:e?"none":void 0},children:f.map((f=>{const{root:e,rows:i}=this.refs.categories.get(f.id);return T("div",{"data-id":f.target?f.target.id:f.id,class:"category",ref:e,children:[T("div",{class:"sticky padding-small",children:f.name||X.categories[f.id]}),T("div",{class:"relative",style:{height:i.length*this.props.emojiButtonSize},children:i.map(((e,i)=>{const n=e.index-e.index%Hf,d=this.state.visibleRows[n],a="current"in e?e:void 0;if(!d&&!a)return null;const u=i*this.props.perLine,o=u+this.props.perLine,t=f.emojis.slice(u,o);return T("div",{"data-index":e.index,ref:a,class:"flex row",style:{top:i*this.props.emojiButtonSize},children:d&&t.map(((f,i)=>{const n=G.get(f);return this.renderEmojiButton(n,{pos:[e.index,i],posinset:e.posinset+i,grid:this.grid})}))},e.index)}))})]})}))})}renderSkinToneButton(){return T("div",{class:"flex flex-auto flex-center flex-middle",style:{position:"relative",width:this.props.emojiButtonSize,height:this.props.emojiButtonSize},children:T("button",{type:"button",ref:this.refs.skinToneButton,class:"skin-tone-button flex flex-auto flex-center flex-middle","aria-selected":this.state.showSkins?"":void 0,"aria-label":X.skins.choose,title:X.skins.choose,onClick:this.openSkins,style:{width:this.props.emojiSize,height:this.props.emojiSize},children:T("span",{class:`skin-tone skin-tone-${this.state.skin}`})})})}renderSkins(){const f=this.refs.skinToneButton.current.getBoundingClientRect(),e=this.base.getBoundingClientRect(),i={right:e.right-f.right-3};return"bottom"==this.props.previewPosition?i.bottom=e.bottom-f.top+4:(i.top=f.bottom-e.top+3,i.bottom="auto"),T("div",{ref:this.refs.menu,role:"radiogroup","aria-label":X.skins.choose,class:"menu hidden","data-position":i.top?"top":"bottom",style:i,children:[...Array(6).keys()].map((f=>{const e=f+1,i=this.state.skin==e;return T("div",{children:[T("input",{type:"radio",name:"skin-tone",value:e,"aria-label":X.skins[e],ref:i?this.refs.skinToneRadio:null,defaultChecked:i,onChange:()=>this.handleSkinMouseOver(e),onKeyDown:f=>{"Enter"!=f.code&&"Space"!=f.code&&"Tab"!=f.code||(f.preventDefault(),this.handleSkinClick(e),this.refs.skinToneButton.current.focus())}}),T("button",{"aria-hidden":"true",tabindex:"-1",onClick:()=>this.handleSkinClick(e),onMouseEnter:()=>this.handleSkinMouseOver(e),onMouseLeave:()=>this.handleSkinMouseOver(),class:"option flex flex-grow flex-middle",children:[T("span",{class:`skin-tone skin-tone-${e}`}),T("span",{class:"margin-small-lr",children:X.skins[e]})]})]})}))})}render(){return T("section",{id:"root",class:"flex flex-column",style:{width:this.props.perLine*this.props.emojiButtonSize+28},"data-emoji-set":this.props.set,"data-theme":this.state.theme,"data-menu":this.state.showSkins?"":void 0,onKeyDown:this.handleKeyDown,children:["top"==this.props.previewPosition&&this.renderPreview(),"top"==this.props.navPosition&&this.renderNav(),this.props.stickySearch&&T("div",{class:"padding-lr",children:this.renderSearch()}),T("div",{ref:this.refs.scroll,class:"scroll flex-grow padding-lr",children:T("div",{style:{width:this.props.perLine*this.props.emojiButtonSize},children:[!this.props.stickySearch&&this.renderSearch(),this.renderSearchResults(),this.renderCategories(),T("div",{class:"spacer"})]})}),"bottom"==this.props.navPosition&&this.renderNav(),"bottom"==this.props.previewPosition&&this.renderPreview(),this.state.showSkins&&this.renderSkins()]})}}class Kf extends tf{constructor(e){super(e,{styles:f(Wf)})}async connectedCallback(){const f=await df(this.props),{onEmojiSelect:e,onClickOutside:i,onEscapeKeydown:n}=this.props,d={...f,element:this,onEmojiSelect:e,onClickOutside:i,onEscapeKeydown:n};R(T($f,{...d}),this.shadowRoot)}}"customElements"in window&&!customElements.get("em-emoji-picker")&&customElements.define("em-emoji-picker",Kf);var Wf={};Wf=':host{width:min-content;height:405px;min-height:230px;box-shadow:var(--shadow);--category-icon-size:18px;--font-family-fallback:-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;--font-family:var(--font-family-ui,--font-family-fallback);--font-size:13px;--shadow-color:0deg 0% 0%;--shadow:.3px .5px 2.7px hsl(var(--shadow-color)/.14),.4px .8px 1px -3.2px hsl(var(--shadow-color)/.14),1px 2px 2.5px -4.5px hsl(var(--shadow-color)/.14);display:flex}[data-theme=light]{--em-color:var(--color-text,#222427);--em-color-secondary:var(--color-text-secondary,#323437);--em-color-tertiary:var(--color-text-tertiary,#505255);--em-accent:var(--color-border-selected,#2266ed);--em-background:var(--color-bg,#fff);--em-input:var(--color-bg-secondary,#fff);--em-color-border:var(--color-border,#0000000d);--em-color-border-over:var(--color-border-over,#0000001a)}[data-theme=dark]{--em-color:var(--color-text,#dededd);--em-color-secondary:var(--color-text-secondary,#b6b6b5);--em-color-tertiary:var(--color-text-tertiary,#7a7a79);--em-accent:var(--color-border-selected,#3a82f7);--em-background:var(--color-bg,#2c2c2c);--em-input:var(--color-bg-secondary,#000);--em-color-border:var(--color-border,#ffffff1a);--em-color-border-over:var(--color-border-over,#fff3)}#root{--color-a:var(--em-color);--color-b:var(--em-color-secondary);--color-c:var(--em-color-tertiary);--padding:12px;--padding-small:calc(var(--padding)/2);--sidebar-width:16px;--duration:225ms;--duration-fast:125ms;--duration-instant:50ms;--easing:cubic-bezier(.4,0,.2,1);width:100%;text-align:left;background-color:var(--em-background);position:relative}@media (prefers-reduced-motion){#root{--duration:0;--duration-fast:0;--duration-instant:0}}#root[data-menu] button{cursor:auto}#root[data-menu] .menu button{cursor:pointer}:host,#root,input,button{color:var(--em-color);font-family:var(--font-family);font-size:var(--font-size);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:normal}*,:before,:after{box-sizing:border-box;min-width:0;margin:0;padding:0}.relative{position:relative}.flex{display:flex}.flex-auto{flex:none}.flex-center{justify-content:center}.flex-column{flex-direction:column}.flex-grow{flex:auto}.flex-middle{align-items:center}.flex-wrap{flex-wrap:wrap}.padding{padding:var(--padding)}.padding-t{padding-top:var(--padding)}.padding-lr{padding-left:var(--padding);padding-right:var(--padding)}.padding-r{padding-right:var(--padding)}.padding-small{padding:var(--padding-small)}.padding-small-b{padding-bottom:var(--padding-small)}.padding-small-lr{padding-left:var(--padding-small);padding-right:var(--padding-small)}.margin{margin:var(--padding)}.margin-l{margin-left:var(--padding)}.margin-small-l{margin-left:var(--padding-small)}.margin-small-lr{margin-left:var(--padding-small);margin-right:var(--padding-small)}.color-a{color:var(--color-a)}.color-b{color:var(--color-b)}.color-c{color:var(--color-c)}.ellipsis{white-space:nowrap;max-width:100%;width:auto;text-overflow:ellipsis;overflow:hidden}a{cursor:pointer;color:var(--em-accent)}a:hover{text-decoration:underline}.spacer{height:10px}.scroll{padding-right:0;overflow-x:hidden;overflow-y:auto}.scroll::-webkit-scrollbar{width:var(--sidebar-width);height:var(--sidebar-width)}.scroll::-webkit-scrollbar-track{border:0}.scroll::-webkit-scrollbar-button{width:0;height:0;display:none}.scroll::-webkit-scrollbar-corner{background-color:#0000}.scroll::-webkit-scrollbar-thumb{min-height:20%;min-height:65px;border:4px solid var(--em-background);border-radius:8px}.scroll::-webkit-scrollbar-thumb:hover{background-color:var(--em-color-border-over)!important}.scroll:hover::-webkit-scrollbar-thumb{background-color:var(--em-color-border)}.sticky{z-index:1;background-color:var(--em-background);font-weight:500;position:sticky;top:-1px}.search{z-index:2;position:relative}.search input,.search button{font-size:calc(var(--font-size) - 1px)}.search input[type=search]{width:100%;background-color:var(--em-color-border);border:1px solid #0000;border-radius:10px;outline:0;padding:10px 2em 10px 2.2em;display:block}.search input[type=search]::placeholder{color:inherit;opacity:.6}.search input[type=search],.search input[type=search]::-webkit-search-decoration,.search input[type=search]::-webkit-search-cancel-button,.search input[type=search]::-webkit-search-results-button,.search input[type=search]::-webkit-search-results-decoration{appearance:none}.search input[type=search]:focus{background-color:var(--em-input);border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent)}.search .icon{z-index:1;color:var(--em-color);position:absolute;top:50%;transform:translateY(-50%)}.search .loupe{pointer-events:none;left:.7em}.search .delete{border:1px solid #0000;padding:4px;right:.6em}.search .delete:focus-visible{border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent);outline:none}svg{fill:currentColor;width:1em;height:1em}button{appearance:none;cursor:pointer;color:currentColor;background-color:#0000;border:0}#nav{z-index:2;padding-top:8px;padding-bottom:8px;padding-right:var(--sidebar-width);position:relative}#nav button{color:var(--color-b);border:1px solid #0000;padding-top:4px;padding-bottom:4px}#nav button:hover{color:var(--color-a)}#nav button:focus-visible{border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent);outline:none}#nav svg,#nav img{width:var(--category-icon-size);height:var(--category-icon-size)}#nav .bar{width:100%;height:2px;background-color:var(--em-accent);position:absolute;bottom:-11px;left:0}#nav button[aria-selected]{color:var(--em-accent)}#preview{z-index:2;padding:0px var(--padding);padding-right:var(--sidebar-width);position:relative}#nav:before,#preview:before{content:"";height:2px;position:absolute;left:0;right:0}#nav[data-position=top]:before,#preview[data-position=top]:before{background:linear-gradient(to bottom,var(--em-color-border),transparent);top:100%}#nav[data-position=bottom]:before,#preview[data-position=bottom]:before{background:linear-gradient(to top,var(--em-color-border),transparent);bottom:100%}.category button{font-family:var(--font-family);position:relative}.category button>*{position:relative}.category button .background{opacity:0;background-color:var(--em-color-border);position:absolute;inset:0}.category button[aria-selected] .background{opacity:1}.row{width:100%;position:absolute;top:0;left:0}.skin-tone-button{border:1px solid #0000;border-radius:100%}.skin-tone-button:hover{border-color:var(--em-color-border)}.skin-tone-button:active .skin-tone{transform:scale(.85)!important}.skin-tone-button:focus-visible{border-color:var(--em-accent);box-shadow:0 0 0 1px var(--em-accent);outline:none}.skin-tone-button[aria-selected]{background-color:var(--em-color-border);border-top-color:#0000000d;border-bottom-color:#0000;border-left-width:0;border-right-width:0}.skin-tone-button[aria-selected] .skin-tone{transform:scale(.9)}.menu{z-index:2;white-space:nowrap;border:1px solid var(--em-color-border);background-color:var(--em-background);backdrop-filter:blur(4px);border-radius:10px;padding:4px;position:absolute;box-shadow:1px 1px 5px #0000000d}.menu.hidden{opacity:0}.menu[data-position=bottom]{transform-origin:100% 100%}.menu[data-position=bottom].hidden{transform:scale(.9)rotate(-3deg)translateY(5%)}.menu[data-position=top]{transform-origin:100% 0}.menu[data-position=top].hidden{transform:scale(.9)rotate(3deg)translateY(-5%)}.menu input[type=radio]{clip:rect(0 0 0 0);width:1px;height:1px;margin:0;padding:0;position:absolute;overflow:hidden}.menu input[type=radio]:checked+.option{border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent)}.option{width:100%;border:1px solid #0000;border-radius:6px;padding:4px 6px}.option:hover{color:#fff;background-color:var(--em-accent)}.skin-tone{width:16px;height:16px;border-radius:100%;display:inline-block;position:relative;overflow:hidden}.skin-tone:after{content:"";mix-blend-mode:overlay;background:linear-gradient(#fff3,#0000);border:1px solid #000c;border-radius:100%;position:absolute;inset:0;box-shadow:inset 0 -2px 3px #000,inset 0 1px 2px #fff}.skin-tone-1{background-color:#ffc93a}.skin-tone-2{background-color:#ffdab7}.skin-tone-3{background-color:#e7b98f}.skin-tone-4{background-color:#c88c61}.skin-tone-5{background-color:#a46134}.skin-tone-6{background-color:#5d4437}[data-emoji-set=twitter] .skin-tone:after{box-shadow:none;border-color:#00000080}[data-emoji-set=twitter] .skin-tone-1{background-color:#fade72}[data-emoji-set=twitter] .skin-tone-2{background-color:#f3dfd0}[data-emoji-set=twitter] .skin-tone-3{background-color:#eed3a8}[data-emoji-set=twitter] .skin-tone-4{background-color:#cfad8d}[data-emoji-set=twitter] .skin-tone-5{background-color:#a8805d}[data-emoji-set=twitter] .skin-tone-6{background-color:#765542}[data-emoji-set=google] .skin-tone:after{box-shadow:inset 0 0 2px 2px #0006}[data-emoji-set=google] .skin-tone-1{background-color:#f5c748}[data-emoji-set=google] .skin-tone-2{background-color:#f1d5aa}[data-emoji-set=google] .skin-tone-3{background-color:#d4b48d}[data-emoji-set=google] .skin-tone-4{background-color:#aa876b}[data-emoji-set=google] .skin-tone-5{background-color:#916544}[data-emoji-set=google] .skin-tone-6{background-color:#61493f}[data-emoji-set=facebook] .skin-tone:after{border-color:#0006;box-shadow:inset 0 -2px 3px #000,inset 0 1px 4px #fff}[data-emoji-set=facebook] .skin-tone-1{background-color:#f5c748}[data-emoji-set=facebook] .skin-tone-2{background-color:#f1d5aa}[data-emoji-set=facebook] .skin-tone-3{background-color:#d4b48d}[data-emoji-set=facebook] .skin-tone-4{background-color:#aa876b}[data-emoji-set=facebook] .skin-tone-5{background-color:#916544}[data-emoji-set=facebook] .skin-tone-6{background-color:#61493f}';export{Kf as Picker,rf as Emoji,G as SearchIndex,Z as Store,df as init,Y as Data,X as I18n}; +function f(f){return f&&f.__esModule?f.default:f}var e,i,n,d,a,u,o={},t=[],r=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function l(f,e){for(var i in e)f[i]=e[i];return f}function c(f){var e=f.parentNode;e&&e.removeChild(f)}function s(f,i,n){var d,a,u,o={};for(u in i)"key"==u?d=i[u]:"ref"==u?a=i[u]:o[u]=i[u];if(arguments.length>2&&(o.children=arguments.length>3?e.call(arguments,2):n),"function"==typeof f&&null!=f.defaultProps)for(u in f.defaultProps)void 0===o[u]&&(o[u]=f.defaultProps[u]);return _(f,o,d,a,null)}function _(f,e,d,a,u){var o={type:f,props:e,key:d,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==u?++n:u};return null==u&&null!=i.vnode&&i.vnode(o),o}function g(f){return f.children}function b(f,e){this.props=f,this.context=e}function h(f,e){if(null==e)return f.__?h(f.__,f.__.__k.indexOf(f)+1):null;for(var i;e0?_(p.type,p.props,p.key,null,p.__v):p)){if(p.__=i,p.__b=i.__b+1,null===(m=j[s])||m&&p.key==m.key&&p.type===m.type)j[s]=void 0;else for(b=0;b`0x${f}`));return String.fromCodePoint(...e)}};const H=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart"];let $=null;var K={add:function(f){$||($=Z.get("frequently")||{});const e=f.id||f;e&&($[e]||($[e]=0),$[e]+=1,Z.set("last",e),Z.set("frequently",$))},get:function({maxFrequentRows:f,perLine:e}){$||($=Z.get("frequently"));let i=[];if(!$){$={};for(let f in H.slice(0,e)){const n=H[f];$[n]=e-f,i.push(n)}return i}const n=f*e,d=Z.get("last");for(let f in $)i.push(f);if(i.sort(((f,e)=>{const i=$[e],n=$[f];return i==n?f.localeCompare(e):i-n})),i.length>n){const f=i.slice(n);i=i.slice(0,n);for(let e of f)e!=d&&delete $[e];d&&-1==i.indexOf(d)&&(delete $[i[i.length-1]],i.splice(-1,1,d)),Z.set("frequently",$)}return i}};let W=null;function V(f,{maxResults:e}={}){const i=f.toLowerCase().replace(/(\w)-/,"$1 ").split(/[\s|,]+/).filter(((f,e,i)=>f.trim()&&i.indexOf(f)==e));if(!i.length)return;let n,d,a=W||(W=Object.values(Y.emojis));for(const f of i){if(!a.length)break;n=[],d={};for(const e of a){if(!e.search)continue;const i=e.search.indexOf(`,${f}`);-1!=i&&(n.push(e),d[e.id]||(d[e.id]=0),d[e.id]+=e.id==f?0:i+1)}a=n}return n.length<2||(n.sort(((f,e)=>{const i=d[f.id],n=d[e.id];return i==n?f.id.localeCompare(e.id):i-n})),n.length>e&&(n=n.slice(0,e))),n}var G={search:async function(f,{maxResults:e}={}){return f&&f.trim().length?(e||(e=90),await df(),V(f,{maxResults:e})):null},searchSynchronized:function(f,{maxResults:e}={}){return f&&f.trim().length?(e||(e=90),df(),V(f,{maxResults:e})):null},get:function(f){return f.id?f:Y.emojis[f]||Y.emojis[Y.aliases[f]]||Y.emojis[Y.natives[f]]},getShortcodeFromNative:function(f){return Y.natives[f]},SHORTCODES_REGEX:/^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/};var J={getUrl:function(f){return"https://static.figma.com/emoji/4/64/"+f.unified?.toLowerCase()+".png"}};let X=f(A),Y=function(f){f.natives={};const e=function(f){const e={};for(const i of Object.keys(f.aliases))e[f.aliases[i]]=i;return e}(f);return Object.keys(f.emojis).forEach((i=>{const n={};n.id=i,n.search=","+[...new Set([n.id,...n.id.split(/[-|_|\s]+/),...(e[n.id]||"").split(/[-|_|\s]+/)].map((f=>f?f.toLowerCase():"")).filter((f=>f&&f.trim())))].join(","),n.skins=f.emojis[i],n.skins.forEach(((e,i)=>{if(e){const d=i+1==1?"":`:skin-tone-${i+1}:`;e.shortcodes=`:${n.id}:${d}`;const a=F.unifiedToNative(e.unified);f.natives[a]=e.shortcodes}})),f.emojis[i]=n})),f}(f(D));const Q={autoFocus:{value:!1},emojiButtonColors:{value:null},emojiButtonRadius:{value:"100%"},emojiButtonSize:{value:34},emojiSize:{value:22},emojiVersion:{value:14,choices:[1,2,3,4,5,11,12,12.1,13,13.1,14]},locale:{value:"en",choices:["en","fr"]},maxFrequentRows:{value:4},navPosition:{value:"top",choices:["top","bottom","none"]},noCountryFlags:{value:!1},noResultsEmoji:{value:null},perLine:{value:9},previewEmoji:{value:null},previewPosition:{value:"bottom",choices:["top","bottom","none"]},set:{value:"native",choices:["native","apple","facebook","google","twitter"]},skin:{value:1,choices:[1,2,3,4,5,6]},stickySearch:{value:!0},theme:{value:"auto",choices:["auto","light","dark"]}};let ff=null,ef=!1,nf=null;function df(f){return ff||(ff=new Promise((f=>{nf=f}))),ef||(ef=!0,function(f,e){const{i18n:i}=f,n=function(f,e){function i(i){const n=Q[i];let d=e&&e.getAttribute(i)||f[i];return null!=d&&n.value&&typeof n.value!=typeof d&&(d="boolean"==typeof n.value?"false"!=d:n.value.constructor(d)),(null==d||n.choices&&-1==n.choices.indexOf(d))&&(d=n.value),d}f||(f={});const n={};for(let f in Q)n[f]=i(f);return n}(f,e);f.i18n&&(X=i);if(n.maxFrequentRows){const f=K.get(n);f.length&&Y.categories.unshift({id:"frequent",emojis:f})}nf(n)}(f||{})),ff}var af={categories:{activity:T("svg",{width:"19",height:"19",viewBox:"0 0 19 19",version:"1.1",children:[T("path",{d:"M 2.83936 4.21875C 3.89404 5.54712 4.55981 7.19824 4.66431 9L 5.66577 9C 5.55701 6.90271 4.76794 4.98523 3.51514 3.46411C 4.9408 2.05042 6.86462 1.13831 9 1.0144L 9.5 0C 4.2533 0 0 4.2533 0 9.5L 1.0144 9C 1.1189 7.19824 1.78467 5.54712 2.83936 4.21875Z"}),T("path",{d:"M 10 10L 13.5485 10L 14.5499 10L 14.5499 9L 13.5485 9L 10 9L 10 1.0144L 9.5 0L 9 1.0144L 9 9L 5.66577 9L 4.66431 9L 4.66431 10L 5.66577 10L 9 10L 9 17.9856L 9.5 19L 10 17.9856L 10 10Z"}),T("path",{d:"M 16.2678 4.35657C 17.2604 5.66052 17.8846 7.26001 17.9856 9L 19 9.5C 19 4.2533 14.7467 0 9.5 0L 10 1.0144C 12.1947 1.14172 14.1659 2.10168 15.6025 3.58313C 14.4058 5.08472 13.6544 6.95703 13.5485 9L 14.5499 9C 14.6509 7.26001 15.2753 5.66064 16.2678 4.35657Z"}),T("path",{d:"M 1.0144 10L 4.66431 10L 4.66431 9L 1.0144 9L 0 9.5L 1.0144 10Z"}),T("path",{d:"M 3.51514 15.5359C 4.76794 14.0148 5.55701 12.0973 5.66577 10L 4.66431 10C 4.55981 11.8018 3.89404 13.4529 2.83936 14.7812C 1.78467 13.4529 1.1189 11.8018 1.0144 10L 0 9.5C 0 14.7467 4.2533 19 9.5 19L 9 17.9856C 6.86462 17.8617 4.9408 16.9496 3.51514 15.5359Z"}),T("path",{d:"M 15.6025 15.4169C 14.1659 16.8983 12.1947 17.8583 10 17.9856L 9.5 19C 14.7467 19 19 14.7467 19 9.5L 17.9856 10C 17.8846 11.74 17.2604 13.3395 16.2678 14.6434C 15.2753 13.3394 14.6509 11.74 14.5499 10L 13.5485 10C 13.6544 12.043 14.4058 13.9153 15.6025 15.4169Z"}),T("path",{d:"M 14.5499 10L 17.9856 10L 19 9.5L 17.9856 9L 14.5499 9L 14.5499 10Z"})]}),flags:T("svg",{width:"12",height:"18",viewBox:"0 -1 12 18",version:"1.1",children:[T("path",{d:"M 1 0L 0 0L 0 1L 0 8L 0 9L 0 17L 1 17L 1 9L 1 8L 1 1L 1 0Z"}),T("path",{d:"M 1 9L 11 9L 12 9L 12 8L 12 1L 12 0L 11 0L 1 0L 1 1L 11 1L 11 8L 1 8L 1 9Z"})]}),foods:T("svg",{width:"17",height:"19",viewBox:"0 0 17 19",version:"1.1",children:[T("path",{d:"M 12.1183 6.48747C 11.4751 6.23515 10.7572 6.10832 10 6.10832C 9.88623 6.10832 9.77332 6.11296 9.66138 6.12187C 9.07397 6.16911 8.5144 6.33805 8 6.60771L 8 1.6082L 7.5 8.12834L 8.07019 7.73258C 8.68677 7.29289 9.25342 7.09477 10 7.10832C 11.1823 7.10832 12.1726 7.46806 12.8571 8.10026C 13.5286 8.72062 14 9.68937 14 11.1083C 14 12.462 13.3236 13.9887 12.2791 15.1969C 11.2169 16.4257 9.96875 17.1083 9 17.1083C 8.54712 17.1144 8.26135 17.0506 7.92432 16.886L 7.5 16.6873L 7.5 17.7915C 7.93848 17.997 8.43762 18.1083 9 18.1083C 11.7615 18.1083 15 14.422 15 11.1083C 15 8.70329 13.8208 7.15556 12.1183 6.48747Z"}),T("path",{d:"M 6 18.1083C 6.56238 18.1083 7.06152 17.997 7.5 17.7915L 7.5 16.6873L 7.07568 16.886C 6.73865 17.0506 6.45288 17.1144 6 17.1083C 5.03125 17.1083 3.78308 16.4257 2.72095 15.1969C 1.67639 13.9887 1 12.462 1 11.1083C 1 9.68937 1.47144 8.72062 2.14294 8.10026C 2.82739 7.46806 3.81775 7.10832 5 7.10832C 5.74658 7.09477 6.31323 7.29289 6.92981 7.73258L 7.5 8.12834L 8 1.6082L 7 1.6082L 7 6.60758C 6.38757 6.28642 5.71118 6.10832 5 6.10832C 2.23853 6.10832 0 7.7946 0 11.1083C 0 14.422 3.23853 18.1083 6 18.1083Z"}),T("path",{d:"M 11.4785 0.600017C 9.95911 1.47721 9.13403 3.11283 9.20801 4.76139L 10.2225 4.18717C 10.3368 3.08537 10.9589 2.05473 11.9785 1.46611C 12.9932 0.88029 14.1703 0.864665 15.1501 1.31889L 16.1647 0.74467C 14.8052 -0.16158 12.9978 -0.27718 11.4785 0.600017Z"}),T("path",{d:"M 13.8942 4.90605C 15.4136 4.02885 16.2386 2.39323 16.1647 0.74467L 15.1501 1.31889C 15.0359 2.42082 14.4138 3.45133 13.3942 4.04008C 12.3795 4.6259 11.2024 4.64152 10.2225 4.18717L 9.20801 4.76139C 9.4104 4.8964 9.6228 5.01371 9.84253 5.11296C 9.89465 5.13652 9.94714 5.15898 10 5.18034C 10.7045 5.46611 11.4779 5.56913 12.244 5.46842C 12.8082 5.39433 13.3684 5.20964 13.8942 4.90605Z"})]}),frequent:T("svg",{width:"20",height:"20",viewBox:"0 0 20 20",version:"1.1",children:[T("path",{d:"M 9 4L 10 4L 10 10L 16 10L 16 11L 10 11L 9 11L 9 10L 9 4Z"}),T("path",{d:"M 10 20C 4.47717 20 0 15.5228 0 10C 0 4.47717 4.47717 0 10 0L 10 1C 5.02942 1 1 5.02942 1 10C 1 14.9706 5.02942 19 10 19L 10 20Z"}),T("path",{d:"M 20 10C 20 15.5228 15.5228 20 10 20L 10 19C 14.9706 19 19 14.9706 19 10C 19 5.02942 14.9706 1 10 1L 10 0C 15.5228 0 20 4.47717 20 10Z"})]}),nature:T("svg",{width:"18",height:"18",viewBox:"0 0 18 18",version:"1.1",children:[T("path",{d:"M 4.77954 12.2311L 0 17.0106L 0.707153 17.7177L 5.39307 13.0318L 4.77954 12.2311Z"}),T("path",{d:"M 6.16248 12.2624L 5.56335 11.4472L 4.77954 12.2311L 5.39307 13.0318L 6.16248 12.2624Z"}),T("path",{d:"M 5.39307 13.0318C 8.67566 14.4375 12.6239 13.8008 15.3032 11.1214C 18.0741 8.35044 18.6605 4.22227 17.0624 0.876806L 16.4442 1.98069C 17.4929 4.82078 16.8754 8.13498 14.5961 10.4143C 12.3169 12.6936 9.00244 13.3111 6.16248 12.2624L 5.39307 13.0318Z"}),T("path",{d:"M 15.6292 1.38144L 5.56335 11.4472L 6.16248 12.2624L 16.4442 1.98069L 15.6292 1.38144Z"}),T("path",{d:"M 7.52515 3.34299C 9.7168 1.15134 12.8655 0.496191 15.6292 1.38144L 17.0624 0.876806C 13.717 -0.721216 9.58887 -0.134912 6.81799 2.63596C 4.22388 5.23008 3.54431 9.01377 4.77954 12.2311L 5.56335 11.4472C 4.6781 8.68345 5.33337 5.53477 7.52515 3.34299Z"}),T("path",{d:"M 17.0624 0.876806L 15.6292 1.38144L 16.4442 1.98069L 17.0624 0.876806Z"})]}),objects:T("svg",{width:"18",height:"17",viewBox:"0 0 18 17",version:"1.1",children:T("path",{d:"M 15.6673 1.61096C 13.5194 -0.536987 10.037 -0.536987 7.88901 1.61096L 1.1716 8.32849C -0.390533 9.8905 -0.390533 12.4232 1.1716 13.9854C 2.73361 15.5472 5.26572 15.5481 6.82785 13.9858L 9.30331 11.5105L 9.65683 11.1569L 12.1318 8.68213C 13.108 7.70581 13.108 6.12292 12.1318 5.14661C 11.1555 4.17029 9.57248 4.17029 8.59616 5.14661L 3.29294 10.45L 3.99997 11.157L 9.30331 5.85376C 9.88913 5.26794 10.8388 5.26794 11.4247 5.85376C 12.0105 6.43945 12.0105 7.38928 11.4247 7.97498L 8.9498 10.4498L 8.59616 10.8035L 6.12082 13.2787C 4.94931 14.4502 3.05038 14.4498 1.87863 13.2782C 0.707123 12.1066 0.707123 10.2072 1.87863 9.03552L 8.59616 2.31812C 10.3535 0.560669 13.2029 0.560669 14.9602 2.31812C 16.7176 4.07544 16.7176 6.9248 14.9602 8.68213L 8.24277 15.3997L 8.9498 16.1067L 15.6673 9.38928C 17.8152 7.24133 17.8152 3.75891 15.6673 1.61096Z"})}),people:T("svg",{width:"19",height:"19",viewBox:"0 0 19 19",version:"1.1",children:[T("path",{d:"M 9.5 15C 7.08093 15 5.06323 13.2822 4.59998 11L 5.62598 11C 6.07007 12.7252 7.63623 14 9.5 14C 11.3638 14 12.9299 12.7252 13.374 11L 14.4 11C 13.9368 13.2822 11.9191 15 9.5 15Z"}),T("path",{d:"M 7 7.5C 7 8.05225 6.55225 8.5 6 8.5C 5.44775 8.5 5 8.05225 5 7.5C 5 6.94775 5.44775 6.5 6 6.5C 6.55225 6.5 7 6.94775 7 7.5Z"}),T("path",{d:"M 13 8.5C 13.5522 8.5 14 8.05225 14 7.5C 14 6.94775 13.5522 6.5 13 6.5C 12.4478 6.5 12 6.94775 12 7.5C 12 8.05225 12.4478 8.5 13 8.5Z"}),T("path",{d:"M 9.5 18C 4.80554 18 1 14.1945 1 9.5C 1 4.80554 4.80554 1 9.5 1L 9.5 0C 4.2533 0 0 4.2533 0 9.5C 0 14.7467 4.2533 19 9.5 19L 9.5 18Z"}),T("path",{d:"M 18 9.5C 18 14.1945 14.1945 18 9.5 18L 9.5 19C 14.7467 19 19 14.7467 19 9.5C 19 4.2533 14.7467 0 9.5 0L 9.5 1C 14.1945 1 18 4.80554 18 9.5Z"})]}),places:T("svg",{width:"18",height:"18",viewBox:"0 0 18 18",version:"1.1",children:[T("path",{d:"M 11.9747 1.55383C 12.5566 1.17468 13.1697 0.994873 13.8641 1L 17.861 1L 17.861 0L 13.8641 0C 13.0276 0.00512695 12.1419 0.264648 11.4349 0.712036L 2.07887 6.71204C -1.70385 9.13794 0.0142913 15 4.50807 15L 9.39637 15L 10.411 15L 12.6918 15L 15.3109 15L 16.3256 15L 17.861 15L 17.861 14L 12.6918 14L 4.50807 14C 1.26454 14 -0.119864 10.0732 2.0492 8L 3.48231 7L 7.38062 4.5L 8.93995 3.5L 11.9747 1.55383Z"}),T("path",{d:"M 13.111 3.5L 8.93995 3.5L 7.38062 4.5L 13.111 4.5C 13.8013 4.5 14.361 5.05969 14.361 5.75C 14.361 6.44031 13.8013 7 13.111 7L 3.48231 7L 2.0492 8L 13.111 8C 14.3536 8 15.361 6.99268 15.361 5.75C 15.361 4.50732 14.3536 3.5 13.111 3.5Z"}),T("path",{d:"M 12.861 18C 14.6242 18 16.0829 16.6962 16.3256 15L 15.3109 15C 15.0794 16.1411 14.0704 17 12.861 17C 11.6515 17 10.6426 16.1411 10.411 15L 9.39637 15C 9.63905 16.6962 11.0978 18 12.861 18Z"})]}),symbols:T("svg",{width:"19",height:"16",viewBox:"0 0 19 16",version:"1.1",children:[T("path",{d:"M 1 5C 1 2.79091 2.79091 1 5 1C 6.54723 1 7.89015 1.8784 8.55585 3.16603L 9 4.02513L 9 1.99968C 8.08821 0.786061 6.63622 0 5 0C 2.23863 0 0 2.23863 0 5C 0 6.63571 0.786056 8.08793 1.99875 8.99938L 8.65451 15.3614L 9 15.6917L 9 14.3083L 2.66775 8.2555L 2.64519 8.23393L 2.62011 8.21534C 1.63619 7.48562 1 6.31713 1 5Z"}),T("path",{d:"M 15.3322 8.2555L 9 14.3083L 9 15.6917L 9.34549 15.3614L 16.0013 8.99938C 17.2139 8.08793 18 6.63571 18 5C 18 2.23863 15.7614 0 13 0C 11.3638 0 9.91179 0.786061 9 1.99968L 9 4.02513L 9.44415 3.16603C 10.1099 1.8784 11.4528 1 13 1C 15.2091 1 17 2.79091 17 5C 17 6.31713 16.3638 7.48562 15.3799 8.21534L 15.3548 8.23393L 15.3322 8.2555Z"})]})},search:{loupe:T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",children:T("path",{d:"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"})}),delete:T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",children:T("path",{d:"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z"})})}};function uf(f){let{id:e,skin:i,shortcodes:n,emoji:d,set:a,size:u}=f;if(!d&&!e&&n){const f=n.match(G.SHORTCODES_REGEX);f&&(e=f[1],f[2]&&(i=f[2]))}if(d||(d=G.get(e)),!d||"female_sign"===d.id||"male_sign"===d.id)return f.fallback;const o=d.skins[i-1]||d.skins[0];if("native"===a){return T("span",{style:{fontSize:u||22,fontFamily:"EmojiMart, Segoe UI Emoji, Segoe UI Symbol, Segoe UI, Apple Color Emoji, Twemoji Mozilla, Noto Color Emoji, Android Emoji"},children:F.unifiedToNative(o.unified)})}const t=J.getUrl(o);return T("img",{style:{height:f.size||"1em",width:"auto",display:"inline-block",position:"relative"},alt:o.native,src:t})}class of extends window.HTMLElement{constructor(f={}){if(super(),this.props=f,f.parent||f.ref){const e=f.parent||f.ref&&f.ref.current;e&&e.appendChild(this)}}}class tf extends of{constructor(f,{styles:e}={}){super(f),this.setShadow(),this.injectStyles(e)}setShadow(){this.attachShadow({mode:"open"})}injectStyles(f){if(!f)return;const e=document.createElement("style");e.textContent=f,this.shadowRoot.insertBefore(e,this.shadowRoot.firstChild)}}class rf extends of{async connectedCallback(){const f=await df(),e=this.getAttribute("native");let i=null;e&&(i=G.get(e));R(T(uf,{...{...f,emoji:i,id:this.getAttribute("id"),set:this.getAttribute("set")||f.set,size:this.getAttribute("size"),fallback:this.getAttribute("fallback"),shortcodes:this.getAttribute("shortcodes")}}),this)}}"customElements"in window&&!customElements.get("em-emoji")&&customElements.define("em-emoji",rf);var lf,cf,sf=[],_f=i.__b,gf=i.__r,bf=i.diffed,hf=i.__c,mf=i.unmount;function pf(){var f;for(sf.sort((function(f,e){return f.__v.__b-e.__v.__b}));f=sf.pop();)if(f.__P)try{f.__H.__h.forEach(kf),f.__H.__h.forEach(yf),f.__H.__h=[]}catch(e){f.__H.__h=[],i.__e(e,f.__v)}}i.__b=function(f){lf=null,_f&&_f(f)},i.__r=function(f){gf&&gf(f),0;var e=(lf=f.__c).__H;e&&(e.__h.forEach(kf),e.__h.forEach(yf),e.__h=[])},i.diffed=function(f){bf&&bf(f);var e=f.__c;e&&e.__H&&e.__H.__h.length&&(1!==sf.push(e)&&cf===i.requestAnimationFrame||((cf=i.requestAnimationFrame)||function(f){var e,i=function(){clearTimeout(n),wf&&cancelAnimationFrame(e),setTimeout(f)},n=setTimeout(i,100);wf&&(e=requestAnimationFrame(i))})(pf)),lf=null},i.__c=function(f,e){e.some((function(f){try{f.__h.forEach(kf),f.__h=f.__h.filter((function(f){return!f.__||yf(f)}))}catch(n){e.some((function(f){f.__h&&(f.__h=[])})),e=[],i.__e(n,f.__v)}})),hf&&hf(f,e)},i.unmount=function(f){mf&&mf(f);var e,n=f.__c;n&&n.__H&&(n.__H.__.forEach((function(f){try{kf(f)}catch(f){e=f}})),e&&i.__e(e,n.__v))};var wf="function"==typeof requestAnimationFrame;function kf(f){var e=lf,i=f.__c;"function"==typeof i&&(f.__c=void 0,i()),lf=e}function yf(f){var e=lf;f.__c=f.__(),lf=e}function vf(f,e){for(var i in e)f[i]=e[i];return f}function xf(f,e){for(var i in f)if("__source"!==i&&!(i in e))return!0;for(var n in e)if("__source"!==n&&f[n]!==e[n])return!0;return!1}function jf(f){this.props=f}(jf.prototype=new b).isPureReactComponent=!0,jf.prototype.shouldComponentUpdate=function(f,e){return xf(this.props,f)||xf(this.state,e)};var Cf=i.__b;i.__b=function(f){f.type&&f.type.__f&&f.ref&&(f.props.ref=f.ref,f.ref=null),Cf&&Cf(f)};"undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref");var Lf=i.__e;i.__e=function(f,e,i){if(f.then)for(var n,d=e;d=d.__;)if((n=d.__c)&&n.__c)return null==e.__e&&(e.__e=i.__e,e.__k=i.__k),n.__c(f,e);Lf(f,e,i)};var Sf=i.unmount;function zf(){this.__u=0,this.t=null,this.__b=null}function Ef(f){var e=f.__.__c;return e&&e.__e&&e.__e(f)}function qf(){this.u=null,this.o=null}i.unmount=function(f){var e=f.__c;e&&e.__R&&e.__R(),e&&!0===f.__h&&(f.type=null),Sf&&Sf(f)},(zf.prototype=new b).__c=function(f,e){var i=e.__c,n=this;null==n.t&&(n.t=[]),n.t.push(i);var d=Ef(n.__v),a=!1,u=function(){a||(a=!0,i.__R=null,d?d(o):o())};i.__R=u;var o=function(){if(!--n.__u){if(n.state.__e){var f=n.state.__e;n.__v.__k[0]=function f(e,i,n){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map((function(e){return f(e,i,n)})),e.__c&&e.__c.__P===i&&(e.__e&&n.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=n)),e}(f,f.__c.__P,f.__c.__O)}var e;for(n.setState({__e:n.__b=null});e=n.t.pop();)e.forceUpdate()}},t=!0===e.__h;n.__u++||t||n.setState({__e:n.__b=n.__v.__k[0]}),f.then(u,u)},zf.prototype.componentWillUnmount=function(){this.t=[]},zf.prototype.render=function(f,e){if(this.__b){if(this.__v.__k){var i=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function f(e,i,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach((function(f){"function"==typeof f.__c&&f.__c()})),e.__c.__H=null),null!=(e=vf({},e)).__c&&(e.__c.__P===n&&(e.__c.__P=i),e.__c=null),e.__k=e.__k&&e.__k.map((function(e){return f(e,i,n)}))),e}(this.__b,i,n.__O=n.__P)}this.__b=null}var d=e.__e&&s(g,null,f.fallback);return d&&(d.__h=null),[s(g,null,e.__e?null:f.children),d]};var Mf=function(f,e,i){if(++i[1]===i[0]&&f.o.delete(e),f.props.revealOrder&&("t"!==f.props.revealOrder[0]||!f.o.size))for(i=f.u;i;){for(;i.length>3;)i.pop()();if(i[1]!f.target)),this.state={categoryId:this.categories[0].id}}renderIcon(f){const{icon:e}=f;if(e){if(e.svg)return T("span",{class:"flex",dangerouslySetInnerHTML:{__html:e.svg}});if(e.src)return T("img",{src:e.src})}return af.categories[f.id]}render(){let f=null;return T("nav",{id:"nav",class:"padding","data-position":this.props.position,children:T("div",{class:"flex relative",children:[this.categories.map(((e,i)=>{const n=e.name||X.categories[e.id],d=!this.props.unfocused&&e.id==this.state.categoryId;return d&&(f=i),T("button",{"aria-label":n,"aria-selected":d||void 0,title:n,type:"button",class:"flex flex-grow flex-center",onClick:()=>{this.props.onClick({category:e,i:i})},children:this.renderIcon(e)})})),T("div",{class:"bar",style:{width:100/this.categories.length+"%",opacity:null==f?0:1,transform:`translateX(${100*f}%)`}})]})})}}class Ff extends jf{shouldComponentUpdate(f){for(let e in f)if("children"!=e&&f[e]!=this.props[e])return!0;return!1}render(){return this.props.children}}const Hf=10;class $f extends b{constructor(f){super(),this.state={pos:[-1,-1],skin:Z.get("skin")||f.skin,theme:this.initTheme(f.theme),visibleRows:{0:!0}}}componentWillMount(){const{categories:f}=Y;this.refs={categories:new Map,menu:{current:null},navigation:{current:null},scroll:{current:null},search:{current:null},searchInput:{current:null},skinToneButton:{current:null},skinToneRadio:{current:null}},this.grid=[],this.grid.setsize=0;const e=(f,e)=>{const i=[];i.__categoryId=e.id,i.__index=f.length,this.grid.push(i);const n=this.grid.length-1,d=n%Hf?{}:{current:null};return d.index=n,d.posinset=this.grid.setsize+1,f.push(d),i};for(let i of f){const f=[];let n=e(f,i);for(let d of i.emojis)n.length==this.props.perLine&&(n=e(f,i)),this.grid.setsize+=1,n.push(d);this.refs.categories.set(i.id,{root:{current:null},rows:f})}}componentDidMount(){this.observeCategories(),this.observeRows(),this.shadowRoot=this.base.parentNode,this.props.autoFocus&&this.refs.searchInput.current&&this.refs.searchInput.current.focus()}initTheme(f){if("auto"!=f)return f;const e=matchMedia("(prefers-color-scheme: dark)");return e.media.match(/^not/)?"light":(e.addListener((()=>{this.setState({theme:e.matches?"dark":"light"})})),e.matches?"dark":"light")}handleBaseClick=f=>{this.state.showSkins&&(f.target.closest(".menu")||(f.preventDefault(),f.stopImmediatePropagation(),this.closeSkins()))};handleBaseKeydown=f=>{this.state.showSkins&&"Escape"==f.key&&(f.preventDefault(),f.stopImmediatePropagation(),this.closeSkins(),this.refs.skinToneButton.current.focus())};getEmojiByPos([f,e]){const i=this.state.searchResults||this.grid,n=i[f]&&i[f][e];if(n)return G.get(n)}observeCategories(){const f=this.refs.navigation.current;if(!f)return;const e=new Map,i=e=>{e!=f.state.categoryId&&f.setState({categoryId:e})},n={root:this.refs.scroll.current,threshold:[0,1]},d=new IntersectionObserver((f=>{for(const i of f){const f=i.target.dataset.id;e.set(f,i.intersectionRatio)}const n=[...e],d=n[n.length-1];if(1==d[1])return i(d[0]);for(const[f,e]of n)if(e){i(f);break}}),n);for(const{root:f}of this.refs.categories.values())d.observe(f.current)}observeRows(){const f={...this.state.visibleRows},e=new IntersectionObserver((e=>{for(const i of e){const e=parseInt(i.target.dataset.index);i.isIntersecting?f[e]=!0:delete f[e]}this.setState({visibleRows:f})}),{root:this.refs.scroll.current,rootMargin:`${this.props.emojiButtonSize*(Hf+5)}px 0px ${this.props.emojiButtonSize*Hf}px`});for(const{rows:f}of this.refs.categories.values())for(const i of f)i.current&&e.observe(i.current)}preventDefault(f){f.preventDefault()}handleSearchClick=()=>{this.getEmojiByPos(this.state.pos)&&this.setState({pos:[-1,-1]})};handleSearchInput=async()=>{const f=this.refs.searchInput.current;if(!f)return;const{value:e}=f,i=await G.search(e),n=()=>{this.refs.scroll.current&&(this.refs.scroll.current.scrollTop=0)};if(!i)return this.setState({searchResults:i,pos:[-1,-1]},n);const d=f.selectionStart==f.value.length?[0,0]:[-1,-1],a=[];a.setsize=i.length;let u=null;for(let f of i)a.length&&u.length!=this.props.perLine||(u=[],u.__categoryId="search",u.__index=a.length,a.push(u)),u.push(f);this.ignoreMouse(),this.setState({searchResults:a,pos:d},n)};handleKeyDown=f=>{if(f.stopImmediatePropagation(),"Escape"===f.key)this.props.onEscapeKeydown&&this.props.onEscapeKeydown()};handleSearchKeyDown=f=>{const e=f.currentTarget;switch(f.stopImmediatePropagation(),f.key){case"ArrowLeft":this.navigate({e:f,input:e,left:!0});break;case"ArrowRight":this.navigate({e:f,input:e,right:!0});break;case"ArrowUp":this.navigate({e:f,input:e,up:!0});break;case"ArrowDown":this.navigate({e:f,input:e,down:!0});break;case"Enter":f.preventDefault(),this.handleEmojiClick({pos:this.state.pos});break;case"Escape":f.preventDefault(),this.state.searchResults?this.clearSearch():this.props.onEscapeKeydown?this.props.onEscapeKeydown():this.unfocusSearch()}};clearSearch=()=>{const f=this.refs.searchInput.current;f&&(f.value="",f.focus(),this.handleSearchInput())};unfocusSearch(){const f=this.refs.searchInput.current;f&&f.blur()}navigate({e:f,input:e,left:i,right:n,up:d,down:a}){const u=this.state.searchResults||this.grid;if(!u.length)return;let[o,t]=this.state.pos;const r=(()=>{if(0==o&&0==t&&!f.repeat&&(i||d))return null;if(-1==o)return f.repeat||!n&&!a||e.selectionStart!=e.value.length?null:[0,0];if(i||n){let f=u[o];const e=i?-1:1;if(t+=e,!f[t]){if(o+=e,f=u[o],!f)return o=i?0:u.length-1,t=i?0:u[o].length-1,[o,t];t=i?f.length-1:0}return[o,t]}if(d||a){o+=d?-1:1;const f=u[o];return f?(f[t]||(t=f.length-1),[o,t]):(o=d?0:u.length-1,t=d?0:u[o].length-1,[o,t])}})();r?(f.preventDefault(),this.setState({pos:r,keyboard:!0},(()=>{this.scrollTo({row:r[0]})}))):this.state.pos[0]>-1&&this.setState({pos:[-1,-1]})}scrollTo({categoryId:f,row:e}){const i=this.state.searchResults||this.grid;if(!i.length)return;const n=this.refs.scroll.current,d=n.getBoundingClientRect();let a=0;if(e>=0&&(f=i[e].__categoryId),f){a=(this.refs[f]||this.refs.categories.get(f).root).current.getBoundingClientRect().top-(d.top-n.scrollTop)+1}if(e>=0)if(e){const f=a+i[e].__index*this.props.emojiButtonSize,u=f+this.props.emojiButtonSize+.88*this.props.emojiButtonSize;if(fn.scrollTop+d.height))return;a=u-d.height}}else a=0;this.ignoreMouse(),n.scrollTop=a}ignoreMouse(){this.mouseIsIgnored=!0,clearTimeout(this.ignoreMouseTimer),this.ignoreMouseTimer=setTimeout((()=>{delete this.mouseIsIgnored}),100)}handleCategoryClick=({category:f,i:e})=>{this.scrollTo(0==e?{row:-1}:{categoryId:f.id})};handleEmojiOver(f){this.mouseIsIgnored||this.state.showSkins||this.setState({pos:f||[-1,-1],keyboard:!1})}handleEmojiClick({emoji:f,pos:e}){if(this.props.onEmojiSelect&&(!f&&e&&(f=this.getEmojiByPos(e)),f)){const e=f.skins[this.state.skin-1]||f.skins[0],i={id:f.id,unified:e.unified,keywords:f?.keywords||[],shortcodes:e.shortcodes||f.shortcodes};e.src&&(i.src=e.src),f.aliases&&f.aliases.length&&(i.aliases=f.aliases),this.props.maxFrequentRows&&K.add(i,this.props),this.props.onEmojiSelect(i)}}openSkins=f=>{const{currentTarget:e}=f,i=e.getBoundingClientRect();this.setState({showSkins:i},(async()=>{await I(2);const f=this.refs.menu.current;f&&(f.classList.remove("hidden"),this.refs.skinToneRadio.current.focus(),this.base.addEventListener("click",this.handleBaseClick,!0),this.base.addEventListener("keydown",this.handleBaseKeydown,!0))}))};closeSkins(){this.state.showSkins&&(this.setState({showSkins:null,tempSkin:null}),this.base.removeEventListener("click",this.handleBaseClick),this.base.removeEventListener("keydown",this.handleBaseKeydown))}handleSkinMouseOver(f){this.setState({tempSkin:f})}handleSkinClick(f){this.ignoreMouse(),this.closeSkins(),this.setState({skin:f,tempSkin:null}),Z.set("skin",f)}renderNav(){return T(Uf,{ref:this.refs.navigation,theme:this.state.theme,unfocused:!!this.state.searchResults,position:this.props.navPosition,onClick:this.handleCategoryClick})}renderPreview(){const f=this.getEmojiByPos(this.state.pos),e=this.state.searchResults&&!this.state.searchResults.length;return T("div",{id:"preview",class:"flex flex-middle","data-position":this.props.previewPosition,children:[T("div",{class:"flex flex-middle flex-grow",style:{padding:"4px 0px"},children:[T("div",{class:"flex flex-auto flex-middle flex-center",style:{height:30,width:30,fontSize:30},children:T(uf,{emoji:f,id:e?this.props.noResultsEmoji||"cry":this.props.previewEmoji||("top"==this.props.previewPosition?"point_down":"point_up"),set:this.props.set,size:22,skin:this.state.tempSkin||this.state.skin,spritesheet:!0})}),T("div",f?{class:"ellipsis color-c",children:f.skins[0].shortcodes}:e?{class:"ellipsis color-c",children:X.search_no_results}:{class:"color-c",children:X.pick})]}),!f&&this.renderSkinToneButton()]})}renderEmojiButton(f,{pos:e,posinset:i,grid:n}){const d=this.props.emojiButtonSize,a=this.state.tempSkin||this.state.skin,u=(o=this.state.pos,t=e,Array.isArray(o)&&Array.isArray(t)&&o.length===t.length&&o.every(((f,e)=>f==t[e])));var o,t;const r=e.concat(f.id).join("");return T(Ff,{selected:u,skin:a,size:d,children:T("button",{"aria-label":f.id,"aria-selected":u||void 0,"aria-posinset":i,"aria-setsize":n.setsize,"data-keyboard":this.state.keyboard,title:"none"==this.props.previewPosition?f.id:void 0,type:"button",class:"flex flex-center flex-middle",tabindex:"-1",onClick:()=>this.handleEmojiClick({emoji:f}),onMouseEnter:()=>this.handleEmojiOver(e),onMouseLeave:()=>this.handleEmojiOver(),style:{width:this.props.emojiButtonSize,height:this.props.emojiButtonSize,fontSize:this.props.emojiSize,lineHeight:0,fontFamily:"EmojiMart, Segoe UI Emoji, Segoe UI Symbol, Segoe UI, Apple Color Emoji, Twemoji Mozilla, Noto Color Emoji, Android Emoji"},children:[T("div",{"aria-hidden":"true",class:"background",style:{borderRadius:this.props.emojiButtonRadius,backgroundColor:this.props.emojiButtonColors?this.props.emojiButtonColors[(i-1)%this.props.emojiButtonColors.length]:void 0}}),T(uf,{emoji:f,set:this.props.set,size:this.props.emojiSize,skin:a,spritesheet:!0})]})},r)}renderSearch(){return T("div",{children:[T("div",{class:"spacer"}),T("div",{class:"flex flex-middle",children:[T("div",{class:"search relative flex-grow",children:[T("input",{type:"search",autoFocus:this.props.autoFocus,ref:this.refs.searchInput,placeholder:X.search,onClick:this.handleSearchClick,onInput:this.handleSearchInput,onKeyDown:this.handleSearchKeyDown}),T("span",{class:"icon loupe flex",children:af.search.loupe}),this.state.searchResults&&T("button",{title:"Clear","aria-label":"Clear",type:"button",class:"icon delete flex",onClick:this.clearSearch,onMouseDown:this.preventDefault,children:af.search.delete})]}),"none"==this.props.previewPosition&&this.renderSkinToneButton()]})]})}renderSearchResults(){const{searchResults:f}=this.state;return f?T("div",{class:"category",ref:this.refs.search,children:[T("div",{class:"sticky padding-small",children:X.categories.search}),T("div",{children:f.map(((e,i)=>T("div",{class:"flex",children:e.map(((e,n)=>this.renderEmojiButton(e,{pos:[i,n],posinset:i*this.props.perLine+n+1,grid:f})))})))})]}):null}renderCategories(){const{categories:f}=Y,e=!!this.state.searchResults;return T("div",{style:{visibility:e?"hidden":void 0,display:e?"none":void 0},children:f.map((f=>{const{root:e,rows:i}=this.refs.categories.get(f.id);return T("div",{"data-id":f.target?f.target.id:f.id,class:"category",ref:e,children:[T("div",{class:"sticky padding-small",children:f.name||X.categories[f.id]}),T("div",{class:"relative",style:{height:i.length*this.props.emojiButtonSize},children:i.map(((e,i)=>{const n=e.index-e.index%Hf,d=this.state.visibleRows[n],a="current"in e?e:void 0;if(!d&&!a)return null;const u=i*this.props.perLine,o=u+this.props.perLine,t=f.emojis.slice(u,o);return T("div",{"data-index":e.index,ref:a,class:"flex row",style:{top:i*this.props.emojiButtonSize},children:d&&t.map(((f,i)=>{const n=G.get(f);return this.renderEmojiButton(n,{pos:[e.index,i],posinset:e.posinset+i,grid:this.grid})}))},e.index)}))})]})}))})}renderSkinToneButton(){return T("div",{class:"flex flex-auto flex-center flex-middle",style:{position:"relative",width:this.props.emojiButtonSize,height:this.props.emojiButtonSize},children:T("button",{type:"button",ref:this.refs.skinToneButton,class:"skin-tone-button flex flex-auto flex-center flex-middle","aria-selected":this.state.showSkins?"":void 0,"aria-label":X.skins.choose,title:X.skins.choose,onClick:this.openSkins,style:{width:this.props.emojiSize,height:this.props.emojiSize},children:T("span",{class:`skin-tone skin-tone-${this.state.skin}`})})})}renderSkins(){const f=this.refs.skinToneButton.current.getBoundingClientRect(),e=this.base.getBoundingClientRect(),i={right:e.right-f.right-3};return"bottom"==this.props.previewPosition?i.bottom=e.bottom-f.top+4:(i.top=f.bottom-e.top+3,i.bottom="auto"),T("div",{ref:this.refs.menu,role:"radiogroup","aria-label":X.skins.choose,class:"menu hidden","data-position":i.top?"top":"bottom",style:i,children:[...Array(6).keys()].map((f=>{const e=f+1,i=this.state.skin==e;return T("div",{children:[T("input",{type:"radio",name:"skin-tone",value:e,"aria-label":X.skins[e],ref:i?this.refs.skinToneRadio:null,defaultChecked:i,onChange:()=>this.handleSkinMouseOver(e),onKeyDown:f=>{"Enter"!=f.code&&"Space"!=f.code&&"Tab"!=f.code||(f.preventDefault(),this.handleSkinClick(e),this.refs.skinToneButton.current.focus())}}),T("button",{"aria-hidden":"true",tabindex:"-1",onClick:()=>this.handleSkinClick(e),onMouseEnter:()=>this.handleSkinMouseOver(e),onMouseLeave:()=>this.handleSkinMouseOver(),class:"option flex flex-grow flex-middle",children:[T("span",{class:`skin-tone skin-tone-${e}`}),T("span",{class:"margin-small-lr",children:X.skins[e]})]})]})}))})}render(){return T("section",{id:"root",class:"flex flex-column",style:{width:this.props.perLine*this.props.emojiButtonSize+28},"data-emoji-set":this.props.set,"data-theme":this.state.theme,"data-menu":this.state.showSkins?"":void 0,onKeyDown:this.handleKeyDown,children:["top"==this.props.previewPosition&&this.renderPreview(),"top"==this.props.navPosition&&this.renderNav(),this.props.stickySearch&&T("div",{class:"padding-lr",children:this.renderSearch()}),T("div",{ref:this.refs.scroll,class:"scroll flex-grow padding-lr",children:T("div",{style:{width:this.props.perLine*this.props.emojiButtonSize},children:[!this.props.stickySearch&&this.renderSearch(),this.renderSearchResults(),this.renderCategories(),T("div",{class:"spacer"})]})}),"bottom"==this.props.navPosition&&this.renderNav(),"bottom"==this.props.previewPosition&&this.renderPreview(),this.state.showSkins&&this.renderSkins()]})}}class Kf extends tf{constructor(e){super(e,{styles:f(Wf)})}async connectedCallback(){const f=await df(this.props),{onEmojiSelect:e,onClickOutside:i,onEscapeKeydown:n}=this.props,d={...f,element:this,onEmojiSelect:e,onClickOutside:i,onEscapeKeydown:n};R(T($f,{...d}),this.shadowRoot)}}"customElements"in window&&!customElements.get("em-emoji-picker")&&customElements.define("em-emoji-picker",Kf);var Wf={};Wf=':host{width:min-content;height:405px;min-height:230px;box-shadow:var(--shadow);--category-icon-size:18px;--font-family-fallback:-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;--font-family:var(--font-family-ui,--font-family-fallback);--font-size:13px;--shadow-color:0deg 0% 0%;--shadow:.3px .5px 2.7px hsl(var(--shadow-color)/.14),.4px .8px 1px -3.2px hsl(var(--shadow-color)/.14),1px 2px 2.5px -4.5px hsl(var(--shadow-color)/.14);display:flex}[data-theme=light]{--em-color:var(--color-text,#222427);--em-color-secondary:var(--color-text-secondary,#323437);--em-color-tertiary:var(--color-text-tertiary,#505255);--em-accent:var(--color-border-selected,#2266ed);--em-background:var(--color-bg,#fff);--em-input:var(--color-bg-secondary,#fff);--em-color-border:var(--color-border,#0000000d);--em-color-border-over:var(--color-border-over,#0000001a)}[data-theme=dark]{--em-color:var(--color-text,#dededd);--em-color-secondary:var(--color-text-secondary,#b6b6b5);--em-color-tertiary:var(--color-text-tertiary,#7a7a79);--em-accent:var(--color-border-selected,#3a82f7);--em-background:var(--color-bg,#2c2c2c);--em-input:var(--color-bg-secondary,#000);--em-color-border:var(--color-border,#ffffff1a);--em-color-border-over:var(--color-border-over,#fff3)}#root{--color-a:var(--em-color);--color-b:var(--em-color-secondary);--color-c:var(--em-color-tertiary);--padding:12px;--padding-small:calc(var(--padding)/2);--sidebar-width:16px;--duration:225ms;--duration-fast:125ms;--duration-instant:50ms;--easing:cubic-bezier(.4,0,.2,1);width:100%;text-align:left;background-color:var(--em-background);position:relative}@media (prefers-reduced-motion){#root{--duration:0;--duration-fast:0;--duration-instant:0}}#root[data-menu] button{cursor:auto}#root[data-menu] .menu button{cursor:pointer}:host,#root,input,button{color:var(--em-color);font-family:var(--font-family);font-size:var(--font-size);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:normal}*,:before,:after{box-sizing:border-box;min-width:0;margin:0;padding:0}.relative{position:relative}.flex{display:flex}.flex-auto{flex:none}.flex-center{justify-content:center}.flex-column{flex-direction:column}.flex-grow{flex:auto}.flex-middle{align-items:center}.flex-wrap{flex-wrap:wrap}.padding{padding:var(--padding)}.padding-t{padding-top:var(--padding)}.padding-lr{padding-left:var(--padding);padding-right:var(--padding)}.padding-r{padding-right:var(--padding)}.padding-small{padding:var(--padding-small)}.padding-small-b{padding-bottom:var(--padding-small)}.padding-small-lr{padding-left:var(--padding-small);padding-right:var(--padding-small)}.margin{margin:var(--padding)}.margin-l{margin-left:var(--padding)}.margin-small-l{margin-left:var(--padding-small)}.margin-small-lr{margin-left:var(--padding-small);margin-right:var(--padding-small)}.color-a{color:var(--color-a)}.color-b{color:var(--color-b)}.color-c{color:var(--color-c)}.ellipsis{white-space:nowrap;max-width:100%;width:auto;text-overflow:ellipsis;overflow:hidden}a{cursor:pointer;color:var(--em-accent)}a:hover{text-decoration:underline}.spacer{height:10px}.scroll{padding-right:0;overflow-x:hidden;overflow-y:auto}.scroll::-webkit-scrollbar{width:var(--sidebar-width);height:var(--sidebar-width)}.scroll::-webkit-scrollbar-track{border:0}.scroll::-webkit-scrollbar-button{width:0;height:0;display:none}.scroll::-webkit-scrollbar-corner{background-color:#0000}.scroll::-webkit-scrollbar-thumb{min-height:20%;min-height:65px;border:4px solid var(--em-background);border-radius:8px}.scroll::-webkit-scrollbar-thumb:hover{background-color:var(--em-color-border-over)!important}.scroll:hover::-webkit-scrollbar-thumb{background-color:var(--em-color-border)}.sticky{z-index:1;background-color:var(--em-background);font-weight:500;position:sticky;top:-1px}.search{z-index:2;position:relative}.search input,.search button{font-size:calc(var(--font-size) - 1px)}.search input[type=search]{width:100%;background-color:var(--em-color-border);border:1px solid #0000;border-radius:10px;outline:0;padding:10px 2em 10px 2.2em;display:block}.search input[type=search]::placeholder{color:inherit;opacity:.6}.search input[type=search],.search input[type=search]::-webkit-search-decoration,.search input[type=search]::-webkit-search-cancel-button,.search input[type=search]::-webkit-search-results-button,.search input[type=search]::-webkit-search-results-decoration{appearance:none}.search input[type=search]:focus{background-color:var(--em-input);border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent)}.search .icon{z-index:1;color:var(--em-color);position:absolute;top:50%;transform:translateY(-50%)}.search .loupe{pointer-events:none;left:.7em}.search .delete{border:1px solid #0000;padding:4px;right:.6em}.search .delete:focus-visible{border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent);outline:none}svg{fill:currentColor;width:1em;height:1em}button{appearance:none;cursor:pointer;color:currentColor;background-color:#0000;border:0}#nav{z-index:2;padding-top:8px;padding-bottom:8px;padding-right:var(--sidebar-width);position:relative}#nav button{color:var(--color-b);border:1px solid #0000;padding-top:4px;padding-bottom:4px}#nav button:hover{color:var(--color-a)}#nav button:focus-visible{border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent);outline:none}#nav svg,#nav img{width:var(--category-icon-size);height:var(--category-icon-size)}#nav .bar{width:100%;height:2px;background-color:var(--em-accent);position:absolute;bottom:-11px;left:0}#nav button[aria-selected]{color:var(--em-accent)}#preview{z-index:2;padding:0px var(--padding);padding-right:var(--sidebar-width);position:relative}#nav:before,#preview:before{content:"";height:2px;position:absolute;left:0;right:0}#nav[data-position=top]:before,#preview[data-position=top]:before{background:linear-gradient(to bottom,var(--em-color-border),transparent);top:100%}#nav[data-position=bottom]:before,#preview[data-position=bottom]:before{background:linear-gradient(to top,var(--em-color-border),transparent);bottom:100%}.category button{font-family:var(--font-family);position:relative}.category button>*{position:relative}.category button .background{opacity:0;background-color:var(--em-color-border);position:absolute;inset:0}.category button[aria-selected] .background{opacity:1}.row{width:100%;position:absolute;top:0;left:0}.skin-tone-button{border:1px solid #0000;border-radius:100%}.skin-tone-button:hover{border-color:var(--em-color-border)}.skin-tone-button:active .skin-tone{transform:scale(.85)!important}.skin-tone-button:focus-visible{border-color:var(--em-accent);box-shadow:0 0 0 1px var(--em-accent);outline:none}.skin-tone-button[aria-selected]{background-color:var(--em-color-border);border-top-color:#0000000d;border-bottom-color:#0000;border-left-width:0;border-right-width:0}.skin-tone-button[aria-selected] .skin-tone{transform:scale(.9)}.menu{z-index:2;white-space:nowrap;border:1px solid var(--em-color-border);background-color:var(--em-background);backdrop-filter:blur(4px);border-radius:10px;padding:4px;position:absolute;box-shadow:1px 1px 5px #0000000d}.menu.hidden{opacity:0}.menu[data-position=bottom]{transform-origin:100% 100%}.menu[data-position=bottom].hidden{transform:scale(.9)rotate(-3deg)translateY(5%)}.menu[data-position=top]{transform-origin:100% 0}.menu[data-position=top].hidden{transform:scale(.9)rotate(3deg)translateY(-5%)}.menu input[type=radio]{clip:rect(0 0 0 0);width:1px;height:1px;margin:0;padding:0;position:absolute;overflow:hidden}.menu input[type=radio]:checked+.option{border-color:var(--em-accent);box-shadow:inset 0 0 0 1px var(--em-accent)}.option{width:100%;border:1px solid #0000;border-radius:6px;padding:4px 6px}.option:hover{color:#fff;background-color:var(--em-accent)}.skin-tone{width:16px;height:16px;border-radius:100%;display:inline-block;position:relative;overflow:hidden}.skin-tone:after{content:"";mix-blend-mode:overlay;background:linear-gradient(#fff3,#0000);border:1px solid #000c;border-radius:100%;position:absolute;inset:0;box-shadow:inset 0 -2px 3px #000,inset 0 1px 2px #fff}.skin-tone-1{background-color:#ffc93a}.skin-tone-2{background-color:#ffdab7}.skin-tone-3{background-color:#e7b98f}.skin-tone-4{background-color:#c88c61}.skin-tone-5{background-color:#a46134}.skin-tone-6{background-color:#5d4437}[data-emoji-set=twitter] .skin-tone:after{box-shadow:none;border-color:#00000080}[data-emoji-set=twitter] .skin-tone-1{background-color:#fade72}[data-emoji-set=twitter] .skin-tone-2{background-color:#f3dfd0}[data-emoji-set=twitter] .skin-tone-3{background-color:#eed3a8}[data-emoji-set=twitter] .skin-tone-4{background-color:#cfad8d}[data-emoji-set=twitter] .skin-tone-5{background-color:#a8805d}[data-emoji-set=twitter] .skin-tone-6{background-color:#765542}[data-emoji-set=google] .skin-tone:after{box-shadow:inset 0 0 2px 2px #0006}[data-emoji-set=google] .skin-tone-1{background-color:#f5c748}[data-emoji-set=google] .skin-tone-2{background-color:#f1d5aa}[data-emoji-set=google] .skin-tone-3{background-color:#d4b48d}[data-emoji-set=google] .skin-tone-4{background-color:#aa876b}[data-emoji-set=google] .skin-tone-5{background-color:#916544}[data-emoji-set=google] .skin-tone-6{background-color:#61493f}[data-emoji-set=facebook] .skin-tone:after{border-color:#0006;box-shadow:inset 0 -2px 3px #000,inset 0 1px 4px #fff}[data-emoji-set=facebook] .skin-tone-1{background-color:#f5c748}[data-emoji-set=facebook] .skin-tone-2{background-color:#f1d5aa}[data-emoji-set=facebook] .skin-tone-3{background-color:#d4b48d}[data-emoji-set=facebook] .skin-tone-4{background-color:#aa876b}[data-emoji-set=facebook] .skin-tone-5{background-color:#916544}[data-emoji-set=facebook] .skin-tone-6{background-color:#61493f}';export{Kf as Picker,rf as Emoji,G as SearchIndex,Z as Store,df as init,Y as Data,X as I18n}; //# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map index ac9c96e..d42687f 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["node_modules/preact/src/constants.js","node_modules/preact/src/util.js","node_modules/preact/src/options.js","node_modules/preact/src/create-element.js","node_modules/preact/src/component.js","node_modules/preact/src/diff/children.js","node_modules/preact/src/diff/props.js","node_modules/preact/src/diff/index.js","node_modules/preact/src/render.js","node_modules/preact/src/diff/catch-error.js","node_modules/preact/jsx-runtime/src/index.js","packages/emoji-mart/src/utils.js","packages/emoji-mart-data/i18n/en.json","packages/emoji-mart/src/helpers/store.js","packages/emoji-mart-data/sets/14/apple.json","packages/emoji-mart/src/helpers/native-support.js","packages/emoji-mart/src/helpers/frequently-used.js","packages/emoji-mart/src/helpers/search-index.js","packages/emoji-mart/src/helpers/images.js","packages/emoji-mart/src/config.js","packages/emoji-mart/src/icons.js","packages/emoji-mart/src/components/Emoji/Emoji.js","packages/emoji-mart/src/components/HTMLElement/HTMLElement.js","packages/emoji-mart/src/components/HTMLElement/ShadowElement.js","packages/emoji-mart/src/components/Emoji/EmojiElement.js","node_modules/preact/hooks/src/index.js","node_modules/preact/compat/src/util.js","node_modules/preact/compat/src/PureComponent.js","node_modules/preact/compat/src/forwardRef.js","node_modules/preact/compat/src/suspense.js","node_modules/preact/compat/src/suspense-list.js","node_modules/preact/compat/src/render.js","packages/emoji-mart/src/components/Navigation/Navigation.js","packages/emoji-mart/src/components/HOCs/PureInlineComponent.js","packages/emoji-mart/src/components/Picker/Picker.js","packages/emoji-mart/src/components/Picker/PickerElement.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-0ab1b627acb68da2.js"],"sourcesContent":["export const EMPTY_OBJ = {};\r\nexport const EMPTY_ARR = [];\r\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\r\n","import { EMPTY_ARR } from \"./constants\";\r\n\r\n/**\r\n * Assign properties from `props` to `obj`\r\n * @template O, P The obj and props types\r\n * @param {O} obj The object to copy properties to\r\n * @param {P} props The object to copy properties from\r\n * @returns {O & P}\r\n */\r\nexport function assign(obj, props) {\r\n\t// @ts-ignore We change the type of `obj` to be `O & P`\r\n\tfor (let i in props) obj[i] = props[i];\r\n\treturn /** @type {O & P} */ (obj);\r\n}\r\n\r\n/**\r\n * Remove a child node from its parent if attached. This is a workaround for\r\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\r\n * is smaller than including a dedicated polyfill.\r\n * @param {Node} node The node to remove\r\n */\r\nexport function removeNode(node) {\r\n\tlet parentNode = node.parentNode;\r\n\tif (parentNode) parentNode.removeChild(node);\r\n}\r\n\r\nexport const slice = EMPTY_ARR.slice;\r\n","import { _catchError } from './diff/catch-error';\r\n\r\n/**\r\n * The `option` object can potentially contain callback functions\r\n * that are called during various stages of our renderer. This is the\r\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\r\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\r\n * for a full list of available option hooks (most editors/IDEs allow you to\r\n * ctrl+click or cmd+click on mac the type definition below).\r\n * @type {import('./internal').Options}\r\n */\r\nconst options = {\r\n\t_catchError\r\n};\r\n\r\nexport default options;\r\n","import { slice } from './util';\r\nimport options from './options';\r\n\r\nlet vnodeId = 0;\r\n\r\n/**\r\n * Create an virtual node (used for JSX)\r\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\r\n * constructor for this virtual node\r\n * @param {object | null | undefined} [props] The properties of the virtual node\r\n * @param {Array} [children] The children of the virtual node\r\n * @returns {import('./internal').VNode}\r\n */\r\nexport function createElement(type, props, children) {\r\n\tlet normalizedProps = {},\r\n\t\tkey,\r\n\t\tref,\r\n\t\ti;\r\n\tfor (i in props) {\r\n\t\tif (i == 'key') key = props[i];\r\n\t\telse if (i == 'ref') ref = props[i];\r\n\t\telse normalizedProps[i] = props[i];\r\n\t}\r\n\r\n\tif (arguments.length > 2) {\r\n\t\tnormalizedProps.children =\r\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\r\n\t}\r\n\r\n\t// If a Component VNode, check for and apply defaultProps\r\n\t// Note: type may be undefined in development, must never error here.\r\n\tif (typeof type == 'function' && type.defaultProps != null) {\r\n\t\tfor (i in type.defaultProps) {\r\n\t\t\tif (normalizedProps[i] === undefined) {\r\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn createVNode(type, normalizedProps, key, ref, null);\r\n}\r\n\r\n/**\r\n * Create a VNode (used internally by Preact)\r\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\r\n * Constructor for this virtual node\r\n * @param {object | string | number | null} props The properties of this virtual node.\r\n * If this virtual node represents a text node, this is the text of the node (string or number).\r\n * @param {string | number | null} key The key for this virtual node, used when\r\n * diffing it against its children\r\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\r\n * receive a reference to its created child\r\n * @returns {import('./internal').VNode}\r\n */\r\nexport function createVNode(type, props, key, ref, original) {\r\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\r\n\t// Do not inline into createElement and coerceToVNode!\r\n\tconst vnode = {\r\n\t\ttype,\r\n\t\tprops,\r\n\t\tkey,\r\n\t\tref,\r\n\t\t_children: null,\r\n\t\t_parent: null,\r\n\t\t_depth: 0,\r\n\t\t_dom: null,\r\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\r\n\t\t// be set to dom.nextSibling which can return `null` and it is important\r\n\t\t// to be able to distinguish between an uninitialized _nextDom and\r\n\t\t// a _nextDom that has been set to `null`\r\n\t\t_nextDom: undefined,\r\n\t\t_component: null,\r\n\t\t_hydrating: null,\r\n\t\tconstructor: undefined,\r\n\t\t_original: original == null ? ++vnodeId : original\r\n\t};\r\n\r\n\t// Only invoke the vnode hook if this was *not* a direct copy:\r\n\tif (original == null && options.vnode != null) options.vnode(vnode);\r\n\r\n\treturn vnode;\r\n}\r\n\r\nexport function createRef() {\r\n\treturn { current: null };\r\n}\r\n\r\nexport function Fragment(props) {\r\n\treturn props.children;\r\n}\r\n\r\n/**\r\n * Check if a the argument is a valid Preact VNode.\r\n * @param {*} vnode\r\n * @returns {vnode is import('./internal').VNode}\r\n */\r\nexport const isValidElement = vnode =>\r\n\tvnode != null && vnode.constructor === undefined;\r\n","import { assign } from './util';\r\nimport { diff, commitRoot } from './diff/index';\r\nimport options from './options';\r\nimport { Fragment } from './create-element';\r\n\r\n/**\r\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\r\n * trigger rendering\r\n * @param {object} props The initial component props\r\n * @param {object} context The initial context from parent components'\r\n * getChildContext\r\n */\r\nexport function Component(props, context) {\r\n\tthis.props = props;\r\n\tthis.context = context;\r\n}\r\n\r\n/**\r\n * Update component state and schedule a re-render.\r\n * @this {import('./internal').Component}\r\n * @param {object | ((s: object, p: object) => object)} update A hash of state\r\n * properties to update with new values or a function that given the current\r\n * state and props returns a new partial state\r\n * @param {() => void} [callback] A function to be called once component state is\r\n * updated\r\n */\r\nComponent.prototype.setState = function(update, callback) {\r\n\t// only clone state when copying to nextState the first time.\r\n\tlet s;\r\n\tif (this._nextState != null && this._nextState !== this.state) {\r\n\t\ts = this._nextState;\r\n\t} else {\r\n\t\ts = this._nextState = assign({}, this.state);\r\n\t}\r\n\r\n\tif (typeof update == 'function') {\r\n\t\t// Some libraries like `immer` mark the current state as readonly,\r\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\r\n\t\tupdate = update(assign({}, s), this.props);\r\n\t}\r\n\r\n\tif (update) {\r\n\t\tassign(s, update);\r\n\t}\r\n\r\n\t// Skip update if updater function returned null\r\n\tif (update == null) return;\r\n\r\n\tif (this._vnode) {\r\n\t\tif (callback) this._renderCallbacks.push(callback);\r\n\t\tenqueueRender(this);\r\n\t}\r\n};\r\n\r\n/**\r\n * Immediately perform a synchronous re-render of the component\r\n * @this {import('./internal').Component}\r\n * @param {() => void} [callback] A function to be called after component is\r\n * re-rendered\r\n */\r\nComponent.prototype.forceUpdate = function(callback) {\r\n\tif (this._vnode) {\r\n\t\t// Set render mode so that we can differentiate where the render request\r\n\t\t// is coming from. We need this because forceUpdate should never call\r\n\t\t// shouldComponentUpdate\r\n\t\tthis._force = true;\r\n\t\tif (callback) this._renderCallbacks.push(callback);\r\n\t\tenqueueRender(this);\r\n\t}\r\n};\r\n\r\n/**\r\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\r\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\r\n * @param {object} props Props (eg: JSX attributes) received from parent\r\n * element/component\r\n * @param {object} state The component's current state\r\n * @param {object} context Context object, as returned by the nearest\r\n * ancestor's `getChildContext()`\r\n * @returns {import('./index').ComponentChildren | void}\r\n */\r\nComponent.prototype.render = Fragment;\r\n\r\n/**\r\n * @param {import('./internal').VNode} vnode\r\n * @param {number | null} [childIndex]\r\n */\r\nexport function getDomSibling(vnode, childIndex) {\r\n\tif (childIndex == null) {\r\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\r\n\t\treturn vnode._parent\r\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\r\n\t\t\t: null;\r\n\t}\r\n\r\n\tlet sibling;\r\n\tfor (; childIndex < vnode._children.length; childIndex++) {\r\n\t\tsibling = vnode._children[childIndex];\r\n\r\n\t\tif (sibling != null && sibling._dom != null) {\r\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\r\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\r\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\r\n\t\t\treturn sibling._dom;\r\n\t\t}\r\n\t}\r\n\r\n\t// If we get here, we have not found a DOM node in this vnode's children.\r\n\t// We must resume from this vnode's sibling (in it's parent _children array)\r\n\t// Only climb up and search the parent if we aren't searching through a DOM\r\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\r\n\t// the search)\r\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\r\n}\r\n\r\n/**\r\n * Trigger in-place re-rendering of a component.\r\n * @param {import('./internal').Component} component The component to rerender\r\n */\r\nfunction renderComponent(component) {\r\n\tlet vnode = component._vnode,\r\n\t\toldDom = vnode._dom,\r\n\t\tparentDom = component._parentDom;\r\n\r\n\tif (parentDom) {\r\n\t\tlet commitQueue = [];\r\n\t\tconst oldVNode = assign({}, vnode);\r\n\t\toldVNode._original = vnode._original + 1;\r\n\r\n\t\tdiff(\r\n\t\t\tparentDom,\r\n\t\t\tvnode,\r\n\t\t\toldVNode,\r\n\t\t\tcomponent._globalContext,\r\n\t\t\tparentDom.ownerSVGElement !== undefined,\r\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\r\n\t\t\tcommitQueue,\r\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\r\n\t\t\tvnode._hydrating\r\n\t\t);\r\n\t\tcommitRoot(commitQueue, vnode);\r\n\r\n\t\tif (vnode._dom != oldDom) {\r\n\t\t\tupdateParentDomPointers(vnode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {import('./internal').VNode} vnode\r\n */\r\nfunction updateParentDomPointers(vnode) {\r\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\r\n\t\tvnode._dom = vnode._component.base = null;\r\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\r\n\t\t\tlet child = vnode._children[i];\r\n\t\t\tif (child != null && child._dom != null) {\r\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn updateParentDomPointers(vnode);\r\n\t}\r\n}\r\n\r\n/**\r\n * The render queue\r\n * @type {Array}\r\n */\r\nlet rerenderQueue = [];\r\n\r\n/**\r\n * Asynchronously schedule a callback\r\n * @type {(cb: () => void) => void}\r\n */\r\n/* istanbul ignore next */\r\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\r\nconst defer =\r\n\ttypeof Promise == 'function'\r\n\t\t? Promise.prototype.then.bind(Promise.resolve())\r\n\t\t: setTimeout;\r\n\r\n/*\r\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\r\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\r\n * do, and when their effects will be applied. See the links below for some further reading on designing\r\n * asynchronous APIs.\r\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\r\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\r\n */\r\n\r\nlet prevDebounce;\r\n\r\n/**\r\n * Enqueue a rerender of a component\r\n * @param {import('./internal').Component} c The component to rerender\r\n */\r\nexport function enqueueRender(c) {\r\n\tif (\r\n\t\t(!c._dirty &&\r\n\t\t\t(c._dirty = true) &&\r\n\t\t\trerenderQueue.push(c) &&\r\n\t\t\t!process._rerenderCount++) ||\r\n\t\tprevDebounce !== options.debounceRendering\r\n\t) {\r\n\t\tprevDebounce = options.debounceRendering;\r\n\t\t(prevDebounce || defer)(process);\r\n\t}\r\n}\r\n\r\n/** Flush the render queue by rerendering all queued components */\r\nfunction process() {\r\n\tlet queue;\r\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\r\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\r\n\t\trerenderQueue = [];\r\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\r\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\r\n\t\tqueue.some(c => {\r\n\t\t\tif (c._dirty) renderComponent(c);\r\n\t\t});\r\n\t}\r\n}\r\nprocess._rerenderCount = 0;\r\n","import { diff, unmount, applyRef } from './index';\r\nimport { createVNode, Fragment } from '../create-element';\r\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\r\nimport { getDomSibling } from '../component';\r\n\r\n/**\r\n * Diff the children of a virtual node\r\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\r\n * children are being diffed\r\n * @param {import('../internal').ComponentChildren[]} renderResult\r\n * @param {import('../internal').VNode} newParentVNode The new virtual\r\n * node whose children should be diff'ed against oldParentVNode\r\n * @param {import('../internal').VNode} oldParentVNode The old virtual\r\n * node whose children should be diff'ed against newParentVNode\r\n * @param {object} globalContext The current context object - modified by getChildContext\r\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\r\n * @param {Array} excessDomChildren\r\n * @param {Array} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\r\n * element any new dom elements should be placed around. Likely `null` on first\r\n * render (except when hydrating). Can be a sibling DOM element when diffing\r\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\r\n * @param {boolean} isHydrating Whether or not we are in hydration\r\n */\r\nexport function diffChildren(\r\n\tparentDom,\r\n\trenderResult,\r\n\tnewParentVNode,\r\n\toldParentVNode,\r\n\tglobalContext,\r\n\tisSvg,\r\n\texcessDomChildren,\r\n\tcommitQueue,\r\n\toldDom,\r\n\tisHydrating\r\n) {\r\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\r\n\r\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\r\n\t// as EMPTY_OBJ._children should be `undefined`.\r\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\r\n\r\n\tlet oldChildrenLength = oldChildren.length;\r\n\r\n\tnewParentVNode._children = [];\r\n\tfor (i = 0; i < renderResult.length; i++) {\r\n\t\tchildVNode = renderResult[i];\r\n\r\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\r\n\t\t\tchildVNode = newParentVNode._children[i] = null;\r\n\t\t}\r\n\t\t// If this newVNode is being reused (e.g.
{reuse}{reuse}
) in the same diff,\r\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\r\n\t\t// it's own DOM & etc. pointers\r\n\t\telse if (\r\n\t\t\ttypeof childVNode == 'string' ||\r\n\t\t\ttypeof childVNode == 'number' ||\r\n\t\t\t// eslint-disable-next-line valid-typeof\r\n\t\t\ttypeof childVNode == 'bigint'\r\n\t\t) {\r\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\r\n\t\t\t\tnull,\r\n\t\t\t\tchildVNode,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tchildVNode\r\n\t\t\t);\r\n\t\t} else if (Array.isArray(childVNode)) {\r\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\r\n\t\t\t\tFragment,\r\n\t\t\t\t{ children: childVNode },\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull\r\n\t\t\t);\r\n\t\t} else if (childVNode._depth > 0) {\r\n\t\t\t// VNode is already in use, clone it. This can happen in the following\r\n\t\t\t// scenario:\r\n\t\t\t// const reuse =
\r\n\t\t\t//
{reuse}{reuse}
\r\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\r\n\t\t\t\tchildVNode.type,\r\n\t\t\t\tchildVNode.props,\r\n\t\t\t\tchildVNode.key,\r\n\t\t\t\tnull,\r\n\t\t\t\tchildVNode._original\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\r\n\t\t}\r\n\r\n\t\t// Terser removes the `continue` here and wraps the loop body\r\n\t\t// in a `if (childVNode) { ... } condition\r\n\t\tif (childVNode == null) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tchildVNode._parent = newParentVNode;\r\n\t\tchildVNode._depth = newParentVNode._depth + 1;\r\n\r\n\t\t// Check if we find a corresponding element in oldChildren.\r\n\t\t// If found, delete the array item by setting to `undefined`.\r\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\r\n\t\t// (holes).\r\n\t\toldVNode = oldChildren[i];\r\n\r\n\t\tif (\r\n\t\t\toldVNode === null ||\r\n\t\t\t(oldVNode &&\r\n\t\t\t\tchildVNode.key == oldVNode.key &&\r\n\t\t\t\tchildVNode.type === oldVNode.type)\r\n\t\t) {\r\n\t\t\toldChildren[i] = undefined;\r\n\t\t} else {\r\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\r\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\r\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\r\n\t\t\t\toldVNode = oldChildren[j];\r\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\r\n\t\t\t\t// We always match by type (in either case).\r\n\t\t\t\tif (\r\n\t\t\t\t\toldVNode &&\r\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\r\n\t\t\t\t\tchildVNode.type === oldVNode.type\r\n\t\t\t\t) {\r\n\t\t\t\t\toldChildren[j] = undefined;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\toldVNode = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toldVNode = oldVNode || EMPTY_OBJ;\r\n\r\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\r\n\t\tdiff(\r\n\t\t\tparentDom,\r\n\t\t\tchildVNode,\r\n\t\t\toldVNode,\r\n\t\t\tglobalContext,\r\n\t\t\tisSvg,\r\n\t\t\texcessDomChildren,\r\n\t\t\tcommitQueue,\r\n\t\t\toldDom,\r\n\t\t\tisHydrating\r\n\t\t);\r\n\r\n\t\tnewDom = childVNode._dom;\r\n\r\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\r\n\t\t\tif (!refs) refs = [];\r\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\r\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\r\n\t\t}\r\n\r\n\t\tif (newDom != null) {\r\n\t\t\tif (firstChildDom == null) {\r\n\t\t\t\tfirstChildDom = newDom;\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\ttypeof childVNode.type == 'function' &&\r\n\t\t\t\tchildVNode._children === oldVNode._children\r\n\t\t\t) {\r\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\r\n\t\t\t\t\tchildVNode,\r\n\t\t\t\t\toldDom,\r\n\t\t\t\t\tparentDom\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\toldDom = placeChild(\r\n\t\t\t\t\tparentDom,\r\n\t\t\t\t\tchildVNode,\r\n\t\t\t\t\toldVNode,\r\n\t\t\t\t\toldChildren,\r\n\t\t\t\t\tnewDom,\r\n\t\t\t\t\toldDom\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof newParentVNode.type == 'function') {\r\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\r\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\r\n\t\t\t\t//\r\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\r\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\r\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\r\n\t\t\t\t// node's nextSibling.\r\n\t\t\t\tnewParentVNode._nextDom = oldDom;\r\n\t\t\t}\r\n\t\t} else if (\r\n\t\t\toldDom &&\r\n\t\t\toldVNode._dom == oldDom &&\r\n\t\t\toldDom.parentNode != parentDom\r\n\t\t) {\r\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\r\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\r\n\t\t\toldDom = getDomSibling(oldVNode);\r\n\t\t}\r\n\t}\r\n\r\n\tnewParentVNode._dom = firstChildDom;\r\n\r\n\t// Remove remaining oldChildren if there are any.\r\n\tfor (i = oldChildrenLength; i--; ) {\r\n\t\tif (oldChildren[i] != null) {\r\n\t\t\tif (\r\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\r\n\t\t\t\toldChildren[i]._dom != null &&\r\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\r\n\t\t\t) {\r\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\r\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\r\n\t\t\t\t// _nextDom to it\r\n\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldParentVNode, i + 1);\r\n\t\t\t}\r\n\r\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\r\n\t\t}\r\n\t}\r\n\r\n\t// Set refs only after unmount\r\n\tif (refs) {\r\n\t\tfor (i = 0; i < refs.length; i++) {\r\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction reorderChildren(childVNode, oldDom, parentDom) {\r\n\t// Note: VNodes in nested suspended trees may be missing _children.\r\n\tlet c = childVNode._children;\r\n\tlet tmp = 0;\r\n\tfor (; c && tmp < c.length; tmp++) {\r\n\t\tlet vnode = c[tmp];\r\n\t\tif (vnode) {\r\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\r\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\r\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\r\n\t\t\t// (childVNode here).\r\n\t\t\tvnode._parent = childVNode;\r\n\r\n\t\t\tif (typeof vnode.type == 'function') {\r\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\r\n\t\t\t} else {\r\n\t\t\t\toldDom = placeChild(\r\n\t\t\t\t\tparentDom,\r\n\t\t\t\t\tvnode,\r\n\t\t\t\t\tvnode,\r\n\t\t\t\t\tc,\r\n\t\t\t\t\tvnode._dom,\r\n\t\t\t\t\toldDom\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn oldDom;\r\n}\r\n\r\n/**\r\n * Flatten and loop through the children of a virtual node\r\n * @param {import('../index').ComponentChildren} children The unflattened\r\n * children of a virtual node\r\n * @returns {import('../internal').VNode[]}\r\n */\r\nexport function toChildArray(children, out) {\r\n\tout = out || [];\r\n\tif (children == null || typeof children == 'boolean') {\r\n\t} else if (Array.isArray(children)) {\r\n\t\tchildren.some(child => {\r\n\t\t\ttoChildArray(child, out);\r\n\t\t});\r\n\t} else {\r\n\t\tout.push(children);\r\n\t}\r\n\treturn out;\r\n}\r\n\r\nfunction placeChild(\r\n\tparentDom,\r\n\tchildVNode,\r\n\toldVNode,\r\n\toldChildren,\r\n\tnewDom,\r\n\toldDom\r\n) {\r\n\tlet nextDom;\r\n\tif (childVNode._nextDom !== undefined) {\r\n\t\t// Only Fragments or components that return Fragment like VNodes will\r\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\r\n\t\t// of last DOM child of this child VNode\r\n\t\tnextDom = childVNode._nextDom;\r\n\r\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\r\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\r\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\r\n\t\t// can clean up the property\r\n\t\tchildVNode._nextDom = undefined;\r\n\t} else if (\r\n\t\toldVNode == null ||\r\n\t\tnewDom != oldDom ||\r\n\t\tnewDom.parentNode == null\r\n\t) {\r\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\r\n\t\t\tparentDom.appendChild(newDom);\r\n\t\t\tnextDom = null;\r\n\t\t} else {\r\n\t\t\t// `j href (xlink:href was removed from SVG and isn't needed)\r\n\t\t\t// - className --> class\r\n\t\t\tname = name.replace(/xlink[H:h]/, 'h').replace(/sName$/, 's');\r\n\t\t} else if (\r\n\t\t\tname !== 'href' &&\r\n\t\t\tname !== 'list' &&\r\n\t\t\tname !== 'form' &&\r\n\t\t\t// Default value in browsers is `-1` and an empty string is\r\n\t\t\t// cast to `0` instead\r\n\t\t\tname !== 'tabIndex' &&\r\n\t\t\tname !== 'download' &&\r\n\t\t\tname in dom\r\n\t\t) {\r\n\t\t\ttry {\r\n\t\t\t\tdom[name] = value == null ? '' : value;\r\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\r\n\t\t\t\tbreak o;\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\t// ARIA-attributes have a different notion of boolean values.\r\n\t\t// The value `false` is different from the attribute not\r\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\r\n\t\t// ARIA-attributes we could treat false as a removal, but the\r\n\t\t// amount of exceptions would cost us too many bytes. On top of\r\n\t\t// that other VDOM frameworks also always stringify `false`.\r\n\r\n\t\tif (typeof value === 'function') {\r\n\t\t\t// never serialize functions as attribute values\r\n\t\t} else if (\r\n\t\t\tvalue != null &&\r\n\t\t\t(value !== false || (name[0] === 'a' && name[1] === 'r'))\r\n\t\t) {\r\n\t\t\tdom.setAttribute(name, value);\r\n\t\t} else {\r\n\t\t\tdom.removeAttribute(name);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Proxy an event to hooked event handlers\r\n * @param {Event} e The event object from the browser\r\n * @private\r\n */\r\nfunction eventProxy(e) {\r\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\r\n}\r\n\r\nfunction eventProxyCapture(e) {\r\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\r\n}\r\n","import { EMPTY_OBJ } from '../constants';\r\nimport { Component, getDomSibling } from '../component';\r\nimport { Fragment } from '../create-element';\r\nimport { diffChildren } from './children';\r\nimport { diffProps, setProperty } from './props';\r\nimport { assign, removeNode, slice } from '../util';\r\nimport options from '../options';\r\n\r\n/**\r\n * Diff two virtual nodes and apply proper changes to the DOM\r\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\r\n * @param {import('../internal').VNode} newVNode The new virtual node\r\n * @param {import('../internal').VNode} oldVNode The old virtual node\r\n * @param {object} globalContext The current context object. Modified by getChildContext\r\n * @param {boolean} isSvg Whether or not this element is an SVG node\r\n * @param {Array} excessDomChildren\r\n * @param {Array} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\r\n * element any new dom elements should be placed around. Likely `null` on first\r\n * render (except when hydrating). Can be a sibling DOM element when diffing\r\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\r\n * @param {boolean} [isHydrating] Whether or not we are in hydration\r\n */\r\nexport function diff(\r\n\tparentDom,\r\n\tnewVNode,\r\n\toldVNode,\r\n\tglobalContext,\r\n\tisSvg,\r\n\texcessDomChildren,\r\n\tcommitQueue,\r\n\toldDom,\r\n\tisHydrating\r\n) {\r\n\tlet tmp,\r\n\t\tnewType = newVNode.type;\r\n\r\n\t// When passing through createElement it assigns the object\r\n\t// constructor as undefined. This to prevent JSON-injection.\r\n\tif (newVNode.constructor !== undefined) return null;\r\n\r\n\t// If the previous diff bailed out, resume creating/hydrating.\r\n\tif (oldVNode._hydrating != null) {\r\n\t\tisHydrating = oldVNode._hydrating;\r\n\t\toldDom = newVNode._dom = oldVNode._dom;\r\n\t\t// if we resume, we want the tree to be \"unlocked\"\r\n\t\tnewVNode._hydrating = null;\r\n\t\texcessDomChildren = [oldDom];\r\n\t}\r\n\r\n\tif ((tmp = options._diff)) tmp(newVNode);\r\n\r\n\ttry {\r\n\t\touter: if (typeof newType == 'function') {\r\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\r\n\t\t\tlet newProps = newVNode.props;\r\n\r\n\t\t\t// Necessary for createContext api. Setting this property will pass\r\n\t\t\t// the context value as `this.context` just for this component.\r\n\t\t\ttmp = newType.contextType;\r\n\t\t\tlet provider = tmp && globalContext[tmp._id];\r\n\t\t\tlet componentContext = tmp\r\n\t\t\t\t? provider\r\n\t\t\t\t\t? provider.props.value\r\n\t\t\t\t\t: tmp._defaultValue\r\n\t\t\t\t: globalContext;\r\n\r\n\t\t\t// Get component and set it to `c`\r\n\t\t\tif (oldVNode._component) {\r\n\t\t\t\tc = newVNode._component = oldVNode._component;\r\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\r\n\t\t\t} else {\r\n\t\t\t\t// Instantiate the new component\r\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\r\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\r\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\r\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\r\n\t\t\t\t\tc.constructor = newType;\r\n\t\t\t\t\tc.render = doRender;\r\n\t\t\t\t}\r\n\t\t\t\tif (provider) provider.sub(c);\r\n\r\n\t\t\t\tc.props = newProps;\r\n\t\t\t\tif (!c.state) c.state = {};\r\n\t\t\t\tc.context = componentContext;\r\n\t\t\t\tc._globalContext = globalContext;\r\n\t\t\t\tisNew = c._dirty = true;\r\n\t\t\t\tc._renderCallbacks = [];\r\n\t\t\t}\r\n\r\n\t\t\t// Invoke getDerivedStateFromProps\r\n\t\t\tif (c._nextState == null) {\r\n\t\t\t\tc._nextState = c.state;\r\n\t\t\t}\r\n\t\t\tif (newType.getDerivedStateFromProps != null) {\r\n\t\t\t\tif (c._nextState == c.state) {\r\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tassign(\r\n\t\t\t\t\tc._nextState,\r\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\toldProps = c.props;\r\n\t\t\toldState = c.state;\r\n\r\n\t\t\t// Invoke pre-render lifecycle methods\r\n\t\t\tif (isNew) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\r\n\t\t\t\t\tc.componentWillMount != null\r\n\t\t\t\t) {\r\n\t\t\t\t\tc.componentWillMount();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.componentDidMount != null) {\r\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (\r\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\r\n\t\t\t\t\tnewProps !== oldProps &&\r\n\t\t\t\t\tc.componentWillReceiveProps != null\r\n\t\t\t\t) {\r\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t(!c._force &&\r\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\r\n\t\t\t\t\t\tc.shouldComponentUpdate(\r\n\t\t\t\t\t\t\tnewProps,\r\n\t\t\t\t\t\t\tc._nextState,\r\n\t\t\t\t\t\t\tcomponentContext\r\n\t\t\t\t\t\t) === false) ||\r\n\t\t\t\t\tnewVNode._original === oldVNode._original\r\n\t\t\t\t) {\r\n\t\t\t\t\tc.props = newProps;\r\n\t\t\t\t\tc.state = c._nextState;\r\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\r\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\r\n\t\t\t\t\tc._vnode = newVNode;\r\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\r\n\t\t\t\t\tnewVNode._children = oldVNode._children;\r\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\r\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (c._renderCallbacks.length) {\r\n\t\t\t\t\t\tcommitQueue.push(c);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak outer;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.componentWillUpdate != null) {\r\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.componentDidUpdate != null) {\r\n\t\t\t\t\tc._renderCallbacks.push(() => {\r\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tc.context = componentContext;\r\n\t\t\tc.props = newProps;\r\n\t\t\tc.state = c._nextState;\r\n\r\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\r\n\r\n\t\t\tc._dirty = false;\r\n\t\t\tc._vnode = newVNode;\r\n\t\t\tc._parentDom = parentDom;\r\n\r\n\t\t\ttmp = c.render(c.props, c.state, c.context);\r\n\r\n\t\t\t// Handle setState called in render, see #2553\r\n\t\t\tc.state = c._nextState;\r\n\r\n\t\t\tif (c.getChildContext != null) {\r\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\r\n\t\t\t}\r\n\r\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\r\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\r\n\t\t\t}\r\n\r\n\t\t\tlet isTopLevelFragment =\r\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\r\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\r\n\r\n\t\t\tdiffChildren(\r\n\t\t\t\tparentDom,\r\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\r\n\t\t\t\tnewVNode,\r\n\t\t\t\toldVNode,\r\n\t\t\t\tglobalContext,\r\n\t\t\t\tisSvg,\r\n\t\t\t\texcessDomChildren,\r\n\t\t\t\tcommitQueue,\r\n\t\t\t\toldDom,\r\n\t\t\t\tisHydrating\r\n\t\t\t);\r\n\r\n\t\t\tc.base = newVNode._dom;\r\n\r\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\r\n\t\t\tnewVNode._hydrating = null;\r\n\r\n\t\t\tif (c._renderCallbacks.length) {\r\n\t\t\t\tcommitQueue.push(c);\r\n\t\t\t}\r\n\r\n\t\t\tif (clearProcessingException) {\r\n\t\t\t\tc._pendingError = c._processingException = null;\r\n\t\t\t}\r\n\r\n\t\t\tc._force = false;\r\n\t\t} else if (\r\n\t\t\texcessDomChildren == null &&\r\n\t\t\tnewVNode._original === oldVNode._original\r\n\t\t) {\r\n\t\t\tnewVNode._children = oldVNode._children;\r\n\t\t\tnewVNode._dom = oldVNode._dom;\r\n\t\t} else {\r\n\t\t\tnewVNode._dom = diffElementNodes(\r\n\t\t\t\toldVNode._dom,\r\n\t\t\t\tnewVNode,\r\n\t\t\t\toldVNode,\r\n\t\t\t\tglobalContext,\r\n\t\t\t\tisSvg,\r\n\t\t\t\texcessDomChildren,\r\n\t\t\t\tcommitQueue,\r\n\t\t\t\tisHydrating\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\r\n\t} catch (e) {\r\n\t\tnewVNode._original = null;\r\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\r\n\t\tif (isHydrating || excessDomChildren != null) {\r\n\t\t\tnewVNode._dom = oldDom;\r\n\t\t\tnewVNode._hydrating = !!isHydrating;\r\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\r\n\t\t\t// ^ could possibly be simplified to:\r\n\t\t\t// excessDomChildren.length = 0;\r\n\t\t}\r\n\t\toptions._catchError(e, newVNode, oldVNode);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {Array} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {import('../internal').VNode} root\r\n */\r\nexport function commitRoot(commitQueue, root) {\r\n\tif (options._commit) options._commit(root, commitQueue);\r\n\r\n\tcommitQueue.some(c => {\r\n\t\ttry {\r\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\r\n\t\t\tcommitQueue = c._renderCallbacks;\r\n\t\t\tc._renderCallbacks = [];\r\n\t\t\tcommitQueue.some(cb => {\r\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\r\n\t\t\t\tcb.call(c);\r\n\t\t\t});\r\n\t\t} catch (e) {\r\n\t\t\toptions._catchError(e, c._vnode);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Diff two virtual nodes representing DOM element\r\n * @param {import('../internal').PreactElement} dom The DOM element representing\r\n * the virtual nodes being diffed\r\n * @param {import('../internal').VNode} newVNode The new virtual node\r\n * @param {import('../internal').VNode} oldVNode The old virtual node\r\n * @param {object} globalContext The current context object\r\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\r\n * @param {*} excessDomChildren\r\n * @param {Array} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {boolean} isHydrating Whether or not we are in hydration\r\n * @returns {import('../internal').PreactElement}\r\n */\r\nfunction diffElementNodes(\r\n\tdom,\r\n\tnewVNode,\r\n\toldVNode,\r\n\tglobalContext,\r\n\tisSvg,\r\n\texcessDomChildren,\r\n\tcommitQueue,\r\n\tisHydrating\r\n) {\r\n\tlet oldProps = oldVNode.props;\r\n\tlet newProps = newVNode.props;\r\n\tlet nodeType = newVNode.type;\r\n\tlet i = 0;\r\n\r\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\r\n\tif (nodeType === 'svg') isSvg = true;\r\n\r\n\tif (excessDomChildren != null) {\r\n\t\tfor (; i < excessDomChildren.length; i++) {\r\n\t\t\tconst child = excessDomChildren[i];\r\n\r\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\r\n\t\t\t// argument matches an element in excessDomChildren, remove it from\r\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\r\n\t\t\tif (\r\n\t\t\t\tchild &&\r\n\t\t\t\t'setAttribute' in child === !!nodeType &&\r\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\r\n\t\t\t) {\r\n\t\t\t\tdom = child;\r\n\t\t\t\texcessDomChildren[i] = null;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (dom == null) {\r\n\t\tif (nodeType === null) {\r\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\r\n\t\t\treturn document.createTextNode(newProps);\r\n\t\t}\r\n\r\n\t\tif (isSvg) {\r\n\t\t\tdom = document.createElementNS(\r\n\t\t\t\t'http://www.w3.org/2000/svg',\r\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\r\n\t\t\t\tnodeType\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tdom = document.createElement(\r\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\r\n\t\t\t\tnodeType,\r\n\t\t\t\tnewProps.is && newProps\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// we created a new parent, so none of the previously attached children can be reused:\r\n\t\texcessDomChildren = null;\r\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\r\n\t\tisHydrating = false;\r\n\t}\r\n\r\n\tif (nodeType === null) {\r\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\r\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\r\n\t\t\tdom.data = newProps;\r\n\t\t}\r\n\t} else {\r\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\r\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\r\n\r\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\r\n\r\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\r\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\r\n\r\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\r\n\t\t// @TODO we should warn in debug mode when props don't match here.\r\n\t\tif (!isHydrating) {\r\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\r\n\t\t\t// we should read the existing DOM attributes to diff them\r\n\t\t\tif (excessDomChildren != null) {\r\n\t\t\t\toldProps = {};\r\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\r\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newHtml || oldHtml) {\r\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\r\n\t\t\t\tif (\r\n\t\t\t\t\t!newHtml ||\r\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\r\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\r\n\t\t\t\t) {\r\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\r\n\r\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\r\n\t\tif (newHtml) {\r\n\t\t\tnewVNode._children = [];\r\n\t\t} else {\r\n\t\t\ti = newVNode.props.children;\r\n\t\t\tdiffChildren(\r\n\t\t\t\tdom,\r\n\t\t\t\tArray.isArray(i) ? i : [i],\r\n\t\t\t\tnewVNode,\r\n\t\t\t\toldVNode,\r\n\t\t\t\tglobalContext,\r\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\r\n\t\t\t\texcessDomChildren,\r\n\t\t\t\tcommitQueue,\r\n\t\t\t\texcessDomChildren\r\n\t\t\t\t\t? excessDomChildren[0]\r\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\r\n\t\t\t\tisHydrating\r\n\t\t\t);\r\n\r\n\t\t\t// Remove children that are not part of any vnode.\r\n\t\t\tif (excessDomChildren != null) {\r\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\r\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// (as above, don't diff props during hydration)\r\n\t\tif (!isHydrating) {\r\n\t\t\tif (\r\n\t\t\t\t'value' in newProps &&\r\n\t\t\t\t(i = newProps.value) !== undefined &&\r\n\t\t\t\t// #2756 For the -element the initial value is 0,\r\n\t\t\t\t// despite the attribute not being present. When the attribute\r\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\r\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\r\n\t\t\t\t(i !== oldProps.value ||\r\n\t\t\t\t\ti !== dom.value ||\r\n\t\t\t\t\t(nodeType === 'progress' && !i))\r\n\t\t\t) {\r\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\t'checked' in newProps &&\r\n\t\t\t\t(i = newProps.checked) !== undefined &&\r\n\t\t\t\ti !== dom.checked\r\n\t\t\t) {\r\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn dom;\r\n}\r\n\r\n/**\r\n * Invoke or update a ref, depending on whether it is a function or object ref.\r\n * @param {object|function} ref\r\n * @param {any} value\r\n * @param {import('../internal').VNode} vnode\r\n */\r\nexport function applyRef(ref, value, vnode) {\r\n\ttry {\r\n\t\tif (typeof ref == 'function') ref(value);\r\n\t\telse ref.current = value;\r\n\t} catch (e) {\r\n\t\toptions._catchError(e, vnode);\r\n\t}\r\n}\r\n\r\n/**\r\n * Unmount a virtual node from the tree and apply DOM changes\r\n * @param {import('../internal').VNode} vnode The virtual node to unmount\r\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\r\n * initiated the unmount\r\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\r\n * current element is already detached from the DOM.\r\n */\r\nexport function unmount(vnode, parentVNode, skipRemove) {\r\n\tlet r;\r\n\tif (options.unmount) options.unmount(vnode);\r\n\r\n\tif ((r = vnode.ref)) {\r\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\r\n\t}\r\n\r\n\tif ((r = vnode._component) != null) {\r\n\t\tif (r.componentWillUnmount) {\r\n\t\t\ttry {\r\n\t\t\t\tr.componentWillUnmount();\r\n\t\t\t} catch (e) {\r\n\t\t\t\toptions._catchError(e, parentVNode);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tr.base = r._parentDom = null;\r\n\t}\r\n\r\n\tif ((r = vnode._children)) {\r\n\t\tfor (let i = 0; i < r.length; i++) {\r\n\t\t\tif (r[i]) {\r\n\t\t\t\tunmount(r[i], parentVNode, typeof vnode.type != 'function');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (!skipRemove && vnode._dom != null) removeNode(vnode._dom);\r\n\r\n\t// Must be set to `undefined` to properly clean up `_nextDom`\r\n\t// for which `null` is a valid value. See comment in `create-element.js`\r\n\tvnode._dom = vnode._nextDom = undefined;\r\n}\r\n\r\n/** The `.render()` method for a PFC backing instance. */\r\nfunction doRender(props, state, context) {\r\n\treturn this.constructor(props, context);\r\n}\r\n","import { EMPTY_OBJ } from './constants';\r\nimport { commitRoot, diff } from './diff/index';\r\nimport { createElement, Fragment } from './create-element';\r\nimport options from './options';\r\nimport { slice } from './util';\r\n\r\n/**\r\n * Render a Preact virtual node into a DOM element\r\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\r\n * @param {import('./internal').PreactElement} parentDom The DOM element to\r\n * render into\r\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\r\n * existing DOM tree rooted at `replaceNode`\r\n */\r\nexport function render(vnode, parentDom, replaceNode) {\r\n\tif (options._root) options._root(vnode, parentDom);\r\n\r\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\r\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\r\n\t// element..\r\n\tlet isHydrating = typeof replaceNode === 'function';\r\n\r\n\t// To be able to support calling `render()` multiple times on the same\r\n\t// DOM node, we need to obtain a reference to the previous tree. We do\r\n\t// this by assigning a new `_children` property to DOM nodes which points\r\n\t// to the last rendered tree. By default this property is not present, which\r\n\t// means that we are mounting a new tree for the first time.\r\n\tlet oldVNode = isHydrating\r\n\t\t? null\r\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\r\n\r\n\tvnode = (\r\n\t\t(!isHydrating && replaceNode) ||\r\n\t\tparentDom\r\n\t)._children = createElement(Fragment, null, [vnode]);\r\n\r\n\t// List of effects that need to be called after diffing.\r\n\tlet commitQueue = [];\r\n\tdiff(\r\n\t\tparentDom,\r\n\t\t// Determine the new vnode tree and store it on the DOM element on\r\n\t\t// our custom `_children` property.\r\n\t\tvnode,\r\n\t\toldVNode || EMPTY_OBJ,\r\n\t\tEMPTY_OBJ,\r\n\t\tparentDom.ownerSVGElement !== undefined,\r\n\t\t!isHydrating && replaceNode\r\n\t\t\t? [replaceNode]\r\n\t\t\t: oldVNode\r\n\t\t\t? null\r\n\t\t\t: parentDom.firstChild\r\n\t\t\t? slice.call(parentDom.childNodes)\r\n\t\t\t: null,\r\n\t\tcommitQueue,\r\n\t\t!isHydrating && replaceNode\r\n\t\t\t? replaceNode\r\n\t\t\t: oldVNode\r\n\t\t\t? oldVNode._dom\r\n\t\t\t: parentDom.firstChild,\r\n\t\tisHydrating\r\n\t);\r\n\r\n\t// Flush all queued effects\r\n\tcommitRoot(commitQueue, vnode);\r\n}\r\n\r\n/**\r\n * Update an existing DOM element with data from a Preact virtual node\r\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\r\n * @param {import('./internal').PreactElement} parentDom The DOM element to\r\n * update\r\n */\r\nexport function hydrate(vnode, parentDom) {\r\n\trender(vnode, parentDom, hydrate);\r\n}\r\n","/**\r\n * Find the closest error boundary to a thrown error and call it\r\n * @param {object} error The thrown value\r\n * @param {import('../internal').VNode} vnode The vnode that threw\r\n * the error that was caught (except for unmounting when this parameter\r\n * is the highest parent that was being unmounted)\r\n */\r\nexport function _catchError(error, vnode) {\r\n\t/** @type {import('../internal').Component} */\r\n\tlet component, ctor, handled;\r\n\r\n\tfor (; (vnode = vnode._parent); ) {\r\n\t\tif ((component = vnode._component) && !component._processingException) {\r\n\t\t\ttry {\r\n\t\t\t\tctor = component.constructor;\r\n\r\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\r\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\r\n\t\t\t\t\thandled = component._dirty;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (component.componentDidCatch != null) {\r\n\t\t\t\t\tcomponent.componentDidCatch(error);\r\n\t\t\t\t\thandled = component._dirty;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\r\n\t\t\t\tif (handled) {\r\n\t\t\t\t\treturn (component._pendingError = component);\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\terror = e;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthrow error;\r\n}\r\n","import { options, Fragment } from 'preact';\r\n\r\n/** @typedef {import('preact').VNode} VNode */\r\n\r\nlet vnodeId = 0;\r\n\r\n/**\r\n * @fileoverview\r\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\r\n * - jsx(type, props, key)\r\n * - jsxs(type, props, key)\r\n * - jsxDEV(type, props, key, __source, __self)\r\n *\r\n * The implementation of createVNode here is optimized for performance.\r\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\r\n */\r\n\r\n/**\r\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\r\n * @param {VNode['type']} type\r\n * @param {VNode['props']} props\r\n * @param {VNode['key']} [key]\r\n * @param {string} [__source]\r\n * @param {string} [__self]\r\n */\r\nfunction createVNode(type, props, key, __source, __self) {\r\n\t// We'll want to preserve `ref` in props to get rid of the need for\r\n\t// forwardRef components in the future, but that should happen via\r\n\t// a separate PR.\r\n\tlet normalizedProps = {},\r\n\t\tref,\r\n\t\ti;\r\n\tfor (i in props) {\r\n\t\tif (i == 'ref') {\r\n\t\t\tref = props[i];\r\n\t\t} else {\r\n\t\t\tnormalizedProps[i] = props[i];\r\n\t\t}\r\n\t}\r\n\r\n\tconst vnode = {\r\n\t\ttype,\r\n\t\tprops: normalizedProps,\r\n\t\tkey,\r\n\t\tref,\r\n\t\t_children: null,\r\n\t\t_parent: null,\r\n\t\t_depth: 0,\r\n\t\t_dom: null,\r\n\t\t_nextDom: undefined,\r\n\t\t_component: null,\r\n\t\t_hydrating: null,\r\n\t\tconstructor: undefined,\r\n\t\t_original: --vnodeId,\r\n\t\t__source,\r\n\t\t__self\r\n\t};\r\n\r\n\t// If a Component VNode, check for and apply defaultProps.\r\n\t// Note: `type` is often a String, and can be `undefined` in development.\r\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\r\n\t\tfor (i in ref)\r\n\t\t\tif (typeof normalizedProps[i] === 'undefined') {\r\n\t\t\t\tnormalizedProps[i] = ref[i];\r\n\t\t\t}\r\n\t}\r\n\r\n\tif (options.vnode) options.vnode(vnode);\r\n\treturn vnode;\r\n}\r\n\r\nexport {\r\n\tcreateVNode as jsx,\r\n\tcreateVNode as jsxs,\r\n\tcreateVNode as jsxDEV,\r\n\tFragment\r\n};\r\n","export function deepEqual(a, b) {\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((val, index) => val == b[index])\n )\n}\n\nexport async function sleep(frames = 1) {\n for (let _ in [...Array(frames).keys()]) {\n await new Promise(requestAnimationFrame)\n }\n}\n","{\n \"search\": \"Search\",\n \"search_no_results\": \"That emoji couldn’t be found\",\n \"pick\": \"Pick an emoji…\",\n \"categories\": {\n \"activity\": \"Activity\",\n \"flags\": \"Flags\",\n \"foods\": \"Food & Drink\",\n \"frequent\": \"Frequently used\",\n \"nature\": \"Animals & Nature\",\n \"objects\": \"Objects\",\n \"people\": \"Smileys & People\",\n \"places\": \"Travel & Places\",\n \"search\": \"Search Results\",\n \"symbols\": \"Symbols\"\n },\n \"skins\": {\n \"choose\": \"Choose default skin tone\",\n \"1\": \"Default\",\n \"2\": \"Light\",\n \"3\": \"Medium-Light\",\n \"4\": \"Medium\",\n \"5\": \"Medium-Dark\",\n \"6\": \"Dark\"\n }\n}\n","function set(key, value) {\n try {\n window.localStorage[`emoji-mart.${key}`] = JSON.stringify(value)\n } catch (error) {}\n}\n\nfunction get(key) {\n try {\n const value = window.localStorage[`emoji-mart.${key}`]\n\n if (value) {\n return JSON.parse(value)\n }\n } catch (error) {}\n}\n\nfunction getDefaultSkin() {\n return get('skin')\n}\n\nexport default { set, get, getDefaultSkin }\n","{\"categories\":[{\"id\":\"people\",\"emojis\":[\"grinning\",\"smiley\",\"smile\",\"grin\",\"laughing\",\"sweat_smile\",\"rolling_on_the_floor_laughing\",\"joy\",\"slightly_smiling_face\",\"upside_down_face\",\"melting_face\",\"wink\",\"blush\",\"innocent\",\"smiling_face_with_3_hearts\",\"heart_eyes\",\"star-struck\",\"kissing_heart\",\"kissing\",\"relaxed\",\"kissing_closed_eyes\",\"kissing_smiling_eyes\",\"smiling_face_with_tear\",\"yum\",\"stuck_out_tongue\",\"stuck_out_tongue_winking_eye\",\"zany_face\",\"stuck_out_tongue_closed_eyes\",\"money_mouth_face\",\"hugging_face\",\"face_with_hand_over_mouth\",\"face_with_open_eyes_and_hand_over_mouth\",\"face_with_peeking_eye\",\"shushing_face\",\"thinking_face\",\"saluting_face\",\"zipper_mouth_face\",\"face_with_raised_eyebrow\",\"neutral_face\",\"expressionless\",\"no_mouth\",\"dotted_line_face\",\"face_in_clouds\",\"smirk\",\"unamused\",\"face_with_rolling_eyes\",\"grimacing\",\"face_exhaling\",\"lying_face\",\"relieved\",\"pensive\",\"sleepy\",\"drooling_face\",\"sleeping\",\"mask\",\"face_with_thermometer\",\"face_with_head_bandage\",\"nauseated_face\",\"face_vomiting\",\"sneezing_face\",\"hot_face\",\"cold_face\",\"woozy_face\",\"dizzy_face\",\"face_with_spiral_eyes\",\"exploding_head\",\"face_with_cowboy_hat\",\"partying_face\",\"disguised_face\",\"sunglasses\",\"nerd_face\",\"face_with_monocle\",\"confused\",\"face_with_diagonal_mouth\",\"worried\",\"slightly_frowning_face\",\"white_frowning_face\",\"open_mouth\",\"hushed\",\"astonished\",\"flushed\",\"pleading_face\",\"face_holding_back_tears\",\"frowning\",\"anguished\",\"fearful\",\"cold_sweat\",\"disappointed_relieved\",\"cry\",\"sob\",\"scream\",\"confounded\",\"persevere\",\"disappointed\",\"sweat\",\"weary\",\"tired_face\",\"yawning_face\",\"triumph\",\"rage\",\"angry\",\"face_with_symbols_on_mouth\",\"smiling_imp\",\"imp\",\"skull\",\"skull_and_crossbones\",\"hankey\",\"clown_face\",\"japanese_ogre\",\"japanese_goblin\",\"ghost\",\"alien\",\"space_invader\",\"robot_face\",\"wave\",\"raised_back_of_hand\",\"raised_hand_with_fingers_splayed\",\"hand\",\"spock-hand\",\"rightwards_hand\",\"leftwards_hand\",\"palm_down_hand\",\"palm_up_hand\",\"ok_hand\",\"pinched_fingers\",\"pinching_hand\",\"v\",\"crossed_fingers\",\"hand_with_index_finger_and_thumb_crossed\",\"i_love_you_hand_sign\",\"the_horns\",\"call_me_hand\",\"point_left\",\"point_right\",\"point_up_2\",\"middle_finger\",\"point_down\",\"point_up\",\"index_pointing_at_the_viewer\",\"+1\",\"-1\",\"fist\",\"facepunch\",\"left-facing_fist\",\"right-facing_fist\",\"clap\",\"raised_hands\",\"heart_hands\",\"open_hands\",\"palms_up_together\",\"handshake\",\"pray\",\"writing_hand\",\"nail_care\",\"selfie\",\"muscle\",\"mechanical_arm\",\"mechanical_leg\",\"leg\",\"foot\",\"ear\",\"ear_with_hearing_aid\",\"nose\",\"brain\",\"anatomical_heart\",\"lungs\",\"tooth\",\"bone\",\"eyes\",\"eye\",\"tongue\",\"lips\",\"biting_lip\",\"baby\",\"child\",\"boy\",\"girl\",\"adult\",\"person_with_blond_hair\",\"man\",\"bearded_person\",\"man_with_beard\",\"woman_with_beard\",\"red_haired_man\",\"curly_haired_man\",\"white_haired_man\",\"bald_man\",\"woman\",\"red_haired_woman\",\"red_haired_person\",\"curly_haired_woman\",\"curly_haired_person\",\"white_haired_woman\",\"white_haired_person\",\"bald_woman\",\"bald_person\",\"blond-haired-woman\",\"blond-haired-man\",\"older_adult\",\"older_man\",\"older_woman\",\"person_frowning\",\"man-frowning\",\"woman-frowning\",\"person_with_pouting_face\",\"man-pouting\",\"woman-pouting\",\"no_good\",\"man-gesturing-no\",\"woman-gesturing-no\",\"ok_woman\",\"man-gesturing-ok\",\"woman-gesturing-ok\",\"information_desk_person\",\"man-tipping-hand\",\"woman-tipping-hand\",\"raising_hand\",\"man-raising-hand\",\"woman-raising-hand\",\"deaf_person\",\"deaf_man\",\"deaf_woman\",\"bow\",\"man-bowing\",\"woman-bowing\",\"face_palm\",\"man-facepalming\",\"woman-facepalming\",\"shrug\",\"man-shrugging\",\"woman-shrugging\",\"health_worker\",\"male-doctor\",\"female-doctor\",\"student\",\"male-student\",\"female-student\",\"teacher\",\"male-teacher\",\"female-teacher\",\"judge\",\"male-judge\",\"female-judge\",\"farmer\",\"male-farmer\",\"female-farmer\",\"cook\",\"male-cook\",\"female-cook\",\"mechanic\",\"male-mechanic\",\"female-mechanic\",\"factory_worker\",\"male-factory-worker\",\"female-factory-worker\",\"office_worker\",\"male-office-worker\",\"female-office-worker\",\"scientist\",\"male-scientist\",\"female-scientist\",\"technologist\",\"male-technologist\",\"female-technologist\",\"singer\",\"male-singer\",\"female-singer\",\"artist\",\"male-artist\",\"female-artist\",\"pilot\",\"male-pilot\",\"female-pilot\",\"astronaut\",\"male-astronaut\",\"female-astronaut\",\"firefighter\",\"male-firefighter\",\"female-firefighter\",\"cop\",\"male-police-officer\",\"female-police-officer\",\"sleuth_or_spy\",\"male-detective\",\"female-detective\",\"guardsman\",\"male-guard\",\"female-guard\",\"ninja\",\"construction_worker\",\"male-construction-worker\",\"female-construction-worker\",\"person_with_crown\",\"prince\",\"princess\",\"man_with_turban\",\"man-wearing-turban\",\"woman-wearing-turban\",\"man_with_gua_pi_mao\",\"person_with_headscarf\",\"person_in_tuxedo\",\"man_in_tuxedo\",\"woman_in_tuxedo\",\"bride_with_veil\",\"man_with_veil\",\"woman_with_veil\",\"pregnant_woman\",\"pregnant_man\",\"pregnant_person\",\"breast-feeding\",\"woman_feeding_baby\",\"man_feeding_baby\",\"person_feeding_baby\",\"angel\",\"santa\",\"mrs_claus\",\"mx_claus\",\"superhero\",\"male_superhero\",\"female_superhero\",\"supervillain\",\"male_supervillain\",\"female_supervillain\",\"mage\",\"male_mage\",\"female_mage\",\"fairy\",\"male_fairy\",\"female_fairy\",\"vampire\",\"male_vampire\",\"female_vampire\",\"merperson\",\"merman\",\"mermaid\",\"elf\",\"male_elf\",\"female_elf\",\"genie\",\"male_genie\",\"female_genie\",\"zombie\",\"male_zombie\",\"female_zombie\",\"troll\",\"massage\",\"man-getting-massage\",\"woman-getting-massage\",\"haircut\",\"man-getting-haircut\",\"woman-getting-haircut\",\"walking\",\"man-walking\",\"woman-walking\",\"standing_person\",\"man_standing\",\"woman_standing\",\"kneeling_person\",\"man_kneeling\",\"woman_kneeling\",\"person_with_probing_cane\",\"man_with_probing_cane\",\"woman_with_probing_cane\",\"person_in_motorized_wheelchair\",\"man_in_motorized_wheelchair\",\"woman_in_motorized_wheelchair\",\"person_in_manual_wheelchair\",\"man_in_manual_wheelchair\",\"woman_in_manual_wheelchair\",\"runner\",\"man-running\",\"woman-running\",\"dancer\",\"man_dancing\",\"man_in_business_suit_levitating\",\"dancers\",\"men-with-bunny-ears-partying\",\"women-with-bunny-ears-partying\",\"person_in_steamy_room\",\"man_in_steamy_room\",\"woman_in_steamy_room\",\"person_climbing\",\"man_climbing\",\"woman_climbing\",\"fencer\",\"horse_racing\",\"skier\",\"snowboarder\",\"golfer\",\"man-golfing\",\"woman-golfing\",\"surfer\",\"man-surfing\",\"woman-surfing\",\"rowboat\",\"man-rowing-boat\",\"woman-rowing-boat\",\"swimmer\",\"man-swimming\",\"woman-swimming\",\"person_with_ball\",\"man-bouncing-ball\",\"woman-bouncing-ball\",\"weight_lifter\",\"man-lifting-weights\",\"woman-lifting-weights\",\"bicyclist\",\"man-biking\",\"woman-biking\",\"mountain_bicyclist\",\"man-mountain-biking\",\"woman-mountain-biking\",\"person_doing_cartwheel\",\"man-cartwheeling\",\"woman-cartwheeling\",\"wrestlers\",\"man-wrestling\",\"woman-wrestling\",\"water_polo\",\"man-playing-water-polo\",\"woman-playing-water-polo\",\"handball\",\"man-playing-handball\",\"woman-playing-handball\",\"juggling\",\"man-juggling\",\"woman-juggling\",\"person_in_lotus_position\",\"man_in_lotus_position\",\"woman_in_lotus_position\",\"bath\",\"sleeping_accommodation\",\"people_holding_hands\",\"two_women_holding_hands\",\"man_and_woman_holding_hands\",\"two_men_holding_hands\",\"couplekiss\",\"woman-kiss-man\",\"man-kiss-man\",\"woman-kiss-woman\",\"couple_with_heart\",\"woman-heart-man\",\"man-heart-man\",\"woman-heart-woman\",\"family\",\"man-woman-boy\",\"man-woman-girl\",\"man-woman-girl-boy\",\"man-woman-boy-boy\",\"man-woman-girl-girl\",\"man-man-boy\",\"man-man-girl\",\"man-man-girl-boy\",\"man-man-boy-boy\",\"man-man-girl-girl\",\"woman-woman-boy\",\"woman-woman-girl\",\"woman-woman-girl-boy\",\"woman-woman-boy-boy\",\"woman-woman-girl-girl\",\"man-boy\",\"man-boy-boy\",\"man-girl\",\"man-girl-boy\",\"man-girl-girl\",\"woman-boy\",\"woman-boy-boy\",\"woman-girl\",\"woman-girl-boy\",\"woman-girl-girl\",\"speaking_head_in_silhouette\",\"bust_in_silhouette\",\"busts_in_silhouette\",\"people_hugging\",\"footprints\",\"smiley_cat\",\"smile_cat\",\"joy_cat\",\"heart_eyes_cat\",\"smirk_cat\",\"kissing_cat\",\"scream_cat\",\"crying_cat_face\",\"pouting_cat\",\"see_no_evil\",\"hear_no_evil\",\"speak_no_evil\",\"kiss\",\"love_letter\",\"cupid\",\"gift_heart\",\"sparkling_heart\",\"heartpulse\",\"heartbeat\",\"revolving_hearts\",\"two_hearts\",\"heart_decoration\",\"heavy_heart_exclamation_mark_ornament\",\"broken_heart\",\"heart_on_fire\",\"mending_heart\",\"heart\",\"orange_heart\",\"yellow_heart\",\"green_heart\",\"blue_heart\",\"purple_heart\",\"brown_heart\",\"black_heart\",\"white_heart\",\"100\",\"anger\",\"boom\",\"dizzy\",\"sweat_drops\",\"dash\",\"hole\",\"bomb\",\"speech_balloon\",\"eye-in-speech-bubble\",\"left_speech_bubble\",\"right_anger_bubble\",\"thought_balloon\",\"zzz\"]},{\"id\":\"nature\",\"emojis\":[\"monkey_face\",\"monkey\",\"gorilla\",\"orangutan\",\"dog\",\"dog2\",\"guide_dog\",\"service_dog\",\"poodle\",\"wolf\",\"fox_face\",\"raccoon\",\"cat\",\"cat2\",\"black_cat\",\"lion_face\",\"tiger\",\"tiger2\",\"leopard\",\"horse\",\"racehorse\",\"unicorn_face\",\"zebra_face\",\"deer\",\"bison\",\"cow\",\"ox\",\"water_buffalo\",\"cow2\",\"pig\",\"pig2\",\"boar\",\"pig_nose\",\"ram\",\"sheep\",\"goat\",\"dromedary_camel\",\"camel\",\"llama\",\"giraffe_face\",\"elephant\",\"mammoth\",\"rhinoceros\",\"hippopotamus\",\"mouse\",\"mouse2\",\"rat\",\"hamster\",\"rabbit\",\"rabbit2\",\"chipmunk\",\"beaver\",\"hedgehog\",\"bat\",\"bear\",\"polar_bear\",\"koala\",\"panda_face\",\"sloth\",\"otter\",\"skunk\",\"kangaroo\",\"badger\",\"feet\",\"turkey\",\"chicken\",\"rooster\",\"hatching_chick\",\"baby_chick\",\"hatched_chick\",\"bird\",\"penguin\",\"dove_of_peace\",\"eagle\",\"duck\",\"swan\",\"owl\",\"dodo\",\"feather\",\"flamingo\",\"peacock\",\"parrot\",\"frog\",\"crocodile\",\"turtle\",\"lizard\",\"snake\",\"dragon_face\",\"dragon\",\"sauropod\",\"t-rex\",\"whale\",\"whale2\",\"dolphin\",\"seal\",\"fish\",\"tropical_fish\",\"blowfish\",\"shark\",\"octopus\",\"shell\",\"coral\",\"snail\",\"butterfly\",\"bug\",\"ant\",\"bee\",\"beetle\",\"ladybug\",\"cricket\",\"cockroach\",\"spider\",\"spider_web\",\"scorpion\",\"mosquito\",\"fly\",\"worm\",\"microbe\",\"bouquet\",\"cherry_blossom\",\"white_flower\",\"lotus\",\"rosette\",\"rose\",\"wilted_flower\",\"hibiscus\",\"sunflower\",\"blossom\",\"tulip\",\"seedling\",\"potted_plant\",\"evergreen_tree\",\"deciduous_tree\",\"palm_tree\",\"cactus\",\"ear_of_rice\",\"herb\",\"shamrock\",\"four_leaf_clover\",\"maple_leaf\",\"fallen_leaf\",\"leaves\",\"empty_nest\",\"nest_with_eggs\"]},{\"id\":\"foods\",\"emojis\":[\"grapes\",\"melon\",\"watermelon\",\"tangerine\",\"lemon\",\"banana\",\"pineapple\",\"mango\",\"apple\",\"green_apple\",\"pear\",\"peach\",\"cherries\",\"strawberry\",\"blueberries\",\"kiwifruit\",\"tomato\",\"olive\",\"coconut\",\"avocado\",\"eggplant\",\"potato\",\"carrot\",\"corn\",\"hot_pepper\",\"bell_pepper\",\"cucumber\",\"leafy_green\",\"broccoli\",\"garlic\",\"onion\",\"mushroom\",\"peanuts\",\"beans\",\"chestnut\",\"bread\",\"croissant\",\"baguette_bread\",\"flatbread\",\"pretzel\",\"bagel\",\"pancakes\",\"waffle\",\"cheese_wedge\",\"meat_on_bone\",\"poultry_leg\",\"cut_of_meat\",\"bacon\",\"hamburger\",\"fries\",\"pizza\",\"hotdog\",\"sandwich\",\"taco\",\"burrito\",\"tamale\",\"stuffed_flatbread\",\"falafel\",\"egg\",\"fried_egg\",\"shallow_pan_of_food\",\"stew\",\"fondue\",\"bowl_with_spoon\",\"green_salad\",\"popcorn\",\"butter\",\"salt\",\"canned_food\",\"bento\",\"rice_cracker\",\"rice_ball\",\"rice\",\"curry\",\"ramen\",\"spaghetti\",\"sweet_potato\",\"oden\",\"sushi\",\"fried_shrimp\",\"fish_cake\",\"moon_cake\",\"dango\",\"dumpling\",\"fortune_cookie\",\"takeout_box\",\"crab\",\"lobster\",\"shrimp\",\"squid\",\"oyster\",\"icecream\",\"shaved_ice\",\"ice_cream\",\"doughnut\",\"cookie\",\"birthday\",\"cake\",\"cupcake\",\"pie\",\"chocolate_bar\",\"candy\",\"lollipop\",\"custard\",\"honey_pot\",\"baby_bottle\",\"glass_of_milk\",\"coffee\",\"teapot\",\"tea\",\"sake\",\"champagne\",\"wine_glass\",\"cocktail\",\"tropical_drink\",\"beer\",\"beers\",\"clinking_glasses\",\"tumbler_glass\",\"pouring_liquid\",\"cup_with_straw\",\"bubble_tea\",\"beverage_box\",\"mate_drink\",\"ice_cube\",\"chopsticks\",\"knife_fork_plate\",\"fork_and_knife\",\"spoon\",\"hocho\",\"jar\",\"amphora\"]},{\"id\":\"activity\",\"emojis\":[\"jack_o_lantern\",\"christmas_tree\",\"fireworks\",\"sparkler\",\"firecracker\",\"sparkles\",\"balloon\",\"tada\",\"confetti_ball\",\"tanabata_tree\",\"bamboo\",\"dolls\",\"flags\",\"wind_chime\",\"rice_scene\",\"red_envelope\",\"ribbon\",\"gift\",\"reminder_ribbon\",\"admission_tickets\",\"ticket\",\"medal\",\"trophy\",\"sports_medal\",\"first_place_medal\",\"second_place_medal\",\"third_place_medal\",\"soccer\",\"baseball\",\"softball\",\"basketball\",\"volleyball\",\"football\",\"rugby_football\",\"tennis\",\"flying_disc\",\"bowling\",\"cricket_bat_and_ball\",\"field_hockey_stick_and_ball\",\"ice_hockey_stick_and_puck\",\"lacrosse\",\"table_tennis_paddle_and_ball\",\"badminton_racquet_and_shuttlecock\",\"boxing_glove\",\"martial_arts_uniform\",\"goal_net\",\"golf\",\"ice_skate\",\"fishing_pole_and_fish\",\"diving_mask\",\"running_shirt_with_sash\",\"ski\",\"sled\",\"curling_stone\",\"dart\",\"yo-yo\",\"kite\",\"8ball\",\"crystal_ball\",\"magic_wand\",\"nazar_amulet\",\"hamsa\",\"video_game\",\"joystick\",\"slot_machine\",\"game_die\",\"jigsaw\",\"teddy_bear\",\"pinata\",\"mirror_ball\",\"nesting_dolls\",\"spades\",\"hearts\",\"diamonds\",\"clubs\",\"chess_pawn\",\"black_joker\",\"mahjong\",\"flower_playing_cards\",\"performing_arts\",\"frame_with_picture\",\"art\",\"thread\",\"sewing_needle\",\"yarn\",\"knot\"]},{\"id\":\"places\",\"emojis\":[\"earth_africa\",\"earth_americas\",\"earth_asia\",\"globe_with_meridians\",\"world_map\",\"japan\",\"compass\",\"snow_capped_mountain\",\"mountain\",\"volcano\",\"mount_fuji\",\"camping\",\"beach_with_umbrella\",\"desert\",\"desert_island\",\"national_park\",\"stadium\",\"classical_building\",\"building_construction\",\"bricks\",\"rock\",\"wood\",\"hut\",\"house_buildings\",\"derelict_house_building\",\"house\",\"house_with_garden\",\"office\",\"post_office\",\"european_post_office\",\"hospital\",\"bank\",\"hotel\",\"love_hotel\",\"convenience_store\",\"school\",\"department_store\",\"factory\",\"japanese_castle\",\"european_castle\",\"wedding\",\"tokyo_tower\",\"statue_of_liberty\",\"church\",\"mosque\",\"hindu_temple\",\"synagogue\",\"shinto_shrine\",\"kaaba\",\"fountain\",\"tent\",\"foggy\",\"night_with_stars\",\"cityscape\",\"sunrise_over_mountains\",\"sunrise\",\"city_sunset\",\"city_sunrise\",\"bridge_at_night\",\"hotsprings\",\"carousel_horse\",\"playground_slide\",\"ferris_wheel\",\"roller_coaster\",\"barber\",\"circus_tent\",\"steam_locomotive\",\"railway_car\",\"bullettrain_side\",\"bullettrain_front\",\"train2\",\"metro\",\"light_rail\",\"station\",\"tram\",\"monorail\",\"mountain_railway\",\"train\",\"bus\",\"oncoming_bus\",\"trolleybus\",\"minibus\",\"ambulance\",\"fire_engine\",\"police_car\",\"oncoming_police_car\",\"taxi\",\"oncoming_taxi\",\"car\",\"oncoming_automobile\",\"blue_car\",\"pickup_truck\",\"truck\",\"articulated_lorry\",\"tractor\",\"racing_car\",\"racing_motorcycle\",\"motor_scooter\",\"manual_wheelchair\",\"motorized_wheelchair\",\"auto_rickshaw\",\"bike\",\"scooter\",\"skateboard\",\"roller_skate\",\"busstop\",\"motorway\",\"railway_track\",\"oil_drum\",\"fuelpump\",\"wheel\",\"rotating_light\",\"traffic_light\",\"vertical_traffic_light\",\"octagonal_sign\",\"construction\",\"anchor\",\"ring_buoy\",\"boat\",\"canoe\",\"speedboat\",\"passenger_ship\",\"ferry\",\"motor_boat\",\"ship\",\"airplane\",\"small_airplane\",\"airplane_departure\",\"airplane_arriving\",\"parachute\",\"seat\",\"helicopter\",\"suspension_railway\",\"mountain_cableway\",\"aerial_tramway\",\"satellite\",\"rocket\",\"flying_saucer\",\"bellhop_bell\",\"luggage\",\"hourglass\",\"hourglass_flowing_sand\",\"watch\",\"alarm_clock\",\"stopwatch\",\"timer_clock\",\"mantelpiece_clock\",\"clock12\",\"clock1230\",\"clock1\",\"clock130\",\"clock2\",\"clock230\",\"clock3\",\"clock330\",\"clock4\",\"clock430\",\"clock5\",\"clock530\",\"clock6\",\"clock630\",\"clock7\",\"clock730\",\"clock8\",\"clock830\",\"clock9\",\"clock930\",\"clock10\",\"clock1030\",\"clock11\",\"clock1130\",\"new_moon\",\"waxing_crescent_moon\",\"first_quarter_moon\",\"moon\",\"full_moon\",\"waning_gibbous_moon\",\"last_quarter_moon\",\"waning_crescent_moon\",\"crescent_moon\",\"new_moon_with_face\",\"first_quarter_moon_with_face\",\"last_quarter_moon_with_face\",\"thermometer\",\"sunny\",\"full_moon_with_face\",\"sun_with_face\",\"ringed_planet\",\"star\",\"star2\",\"stars\",\"milky_way\",\"cloud\",\"partly_sunny\",\"thunder_cloud_and_rain\",\"mostly_sunny\",\"barely_sunny\",\"partly_sunny_rain\",\"rain_cloud\",\"snow_cloud\",\"lightning\",\"tornado\",\"fog\",\"wind_blowing_face\",\"cyclone\",\"rainbow\",\"closed_umbrella\",\"umbrella\",\"umbrella_with_rain_drops\",\"umbrella_on_ground\",\"zap\",\"snowflake\",\"snowman\",\"snowman_without_snow\",\"comet\",\"fire\",\"droplet\",\"ocean\"]},{\"id\":\"objects\",\"emojis\":[\"eyeglasses\",\"dark_sunglasses\",\"goggles\",\"lab_coat\",\"safety_vest\",\"necktie\",\"shirt\",\"jeans\",\"scarf\",\"gloves\",\"coat\",\"socks\",\"dress\",\"kimono\",\"sari\",\"one-piece_swimsuit\",\"briefs\",\"shorts\",\"bikini\",\"womans_clothes\",\"purse\",\"handbag\",\"pouch\",\"shopping_bags\",\"school_satchel\",\"thong_sandal\",\"mans_shoe\",\"athletic_shoe\",\"hiking_boot\",\"womans_flat_shoe\",\"high_heel\",\"sandal\",\"ballet_shoes\",\"boot\",\"crown\",\"womans_hat\",\"tophat\",\"mortar_board\",\"billed_cap\",\"military_helmet\",\"helmet_with_white_cross\",\"prayer_beads\",\"lipstick\",\"ring\",\"gem\",\"mute\",\"speaker\",\"sound\",\"loud_sound\",\"loudspeaker\",\"mega\",\"postal_horn\",\"bell\",\"no_bell\",\"musical_score\",\"musical_note\",\"notes\",\"studio_microphone\",\"level_slider\",\"control_knobs\",\"microphone\",\"headphones\",\"radio\",\"saxophone\",\"accordion\",\"guitar\",\"musical_keyboard\",\"trumpet\",\"violin\",\"banjo\",\"drum_with_drumsticks\",\"long_drum\",\"iphone\",\"calling\",\"phone\",\"telephone_receiver\",\"pager\",\"fax\",\"battery\",\"low_battery\",\"electric_plug\",\"computer\",\"desktop_computer\",\"printer\",\"keyboard\",\"three_button_mouse\",\"trackball\",\"minidisc\",\"floppy_disk\",\"cd\",\"dvd\",\"abacus\",\"movie_camera\",\"film_frames\",\"film_projector\",\"clapper\",\"tv\",\"camera\",\"camera_with_flash\",\"video_camera\",\"vhs\",\"mag\",\"mag_right\",\"candle\",\"bulb\",\"flashlight\",\"izakaya_lantern\",\"diya_lamp\",\"notebook_with_decorative_cover\",\"closed_book\",\"book\",\"green_book\",\"blue_book\",\"orange_book\",\"books\",\"notebook\",\"ledger\",\"page_with_curl\",\"scroll\",\"page_facing_up\",\"newspaper\",\"rolled_up_newspaper\",\"bookmark_tabs\",\"bookmark\",\"label\",\"moneybag\",\"coin\",\"yen\",\"dollar\",\"euro\",\"pound\",\"money_with_wings\",\"credit_card\",\"receipt\",\"chart\",\"email\",\"e-mail\",\"incoming_envelope\",\"envelope_with_arrow\",\"outbox_tray\",\"inbox_tray\",\"package\",\"mailbox\",\"mailbox_closed\",\"mailbox_with_mail\",\"mailbox_with_no_mail\",\"postbox\",\"ballot_box_with_ballot\",\"pencil2\",\"black_nib\",\"lower_left_fountain_pen\",\"lower_left_ballpoint_pen\",\"lower_left_paintbrush\",\"lower_left_crayon\",\"memo\",\"briefcase\",\"file_folder\",\"open_file_folder\",\"card_index_dividers\",\"date\",\"calendar\",\"spiral_note_pad\",\"spiral_calendar_pad\",\"card_index\",\"chart_with_upwards_trend\",\"chart_with_downwards_trend\",\"bar_chart\",\"clipboard\",\"pushpin\",\"round_pushpin\",\"paperclip\",\"linked_paperclips\",\"straight_ruler\",\"triangular_ruler\",\"scissors\",\"card_file_box\",\"file_cabinet\",\"wastebasket\",\"lock\",\"unlock\",\"lock_with_ink_pen\",\"closed_lock_with_key\",\"key\",\"old_key\",\"hammer\",\"axe\",\"pick\",\"hammer_and_pick\",\"hammer_and_wrench\",\"dagger_knife\",\"crossed_swords\",\"gun\",\"boomerang\",\"bow_and_arrow\",\"shield\",\"carpentry_saw\",\"wrench\",\"screwdriver\",\"nut_and_bolt\",\"gear\",\"compression\",\"scales\",\"probing_cane\",\"link\",\"chains\",\"hook\",\"toolbox\",\"magnet\",\"ladder\",\"alembic\",\"test_tube\",\"petri_dish\",\"dna\",\"microscope\",\"telescope\",\"satellite_antenna\",\"syringe\",\"drop_of_blood\",\"pill\",\"adhesive_bandage\",\"crutch\",\"stethoscope\",\"x-ray\",\"door\",\"elevator\",\"mirror\",\"window\",\"bed\",\"couch_and_lamp\",\"chair\",\"toilet\",\"plunger\",\"shower\",\"bathtub\",\"mouse_trap\",\"razor\",\"lotion_bottle\",\"safety_pin\",\"broom\",\"basket\",\"roll_of_paper\",\"bucket\",\"soap\",\"bubbles\",\"toothbrush\",\"sponge\",\"fire_extinguisher\",\"shopping_trolley\",\"smoking\",\"coffin\",\"headstone\",\"funeral_urn\",\"moyai\",\"placard\",\"identification_card\"]},{\"id\":\"symbols\",\"emojis\":[\"atm\",\"put_litter_in_its_place\",\"potable_water\",\"wheelchair\",\"mens\",\"womens\",\"restroom\",\"baby_symbol\",\"wc\",\"passport_control\",\"customs\",\"baggage_claim\",\"left_luggage\",\"warning\",\"children_crossing\",\"no_entry\",\"no_entry_sign\",\"no_bicycles\",\"no_smoking\",\"do_not_litter\",\"non-potable_water\",\"no_pedestrians\",\"no_mobile_phones\",\"underage\",\"radioactive_sign\",\"biohazard_sign\",\"arrow_up\",\"arrow_upper_right\",\"arrow_right\",\"arrow_lower_right\",\"arrow_down\",\"arrow_lower_left\",\"arrow_left\",\"arrow_upper_left\",\"arrow_up_down\",\"left_right_arrow\",\"leftwards_arrow_with_hook\",\"arrow_right_hook\",\"arrow_heading_up\",\"arrow_heading_down\",\"arrows_clockwise\",\"arrows_counterclockwise\",\"back\",\"end\",\"on\",\"soon\",\"top\",\"place_of_worship\",\"atom_symbol\",\"om_symbol\",\"star_of_david\",\"wheel_of_dharma\",\"yin_yang\",\"latin_cross\",\"orthodox_cross\",\"star_and_crescent\",\"peace_symbol\",\"menorah_with_nine_branches\",\"six_pointed_star\",\"aries\",\"taurus\",\"gemini\",\"cancer\",\"leo\",\"virgo\",\"libra\",\"scorpius\",\"sagittarius\",\"capricorn\",\"aquarius\",\"pisces\",\"ophiuchus\",\"twisted_rightwards_arrows\",\"repeat\",\"repeat_one\",\"arrow_forward\",\"fast_forward\",\"black_right_pointing_double_triangle_with_vertical_bar\",\"black_right_pointing_triangle_with_double_vertical_bar\",\"arrow_backward\",\"rewind\",\"black_left_pointing_double_triangle_with_vertical_bar\",\"arrow_up_small\",\"arrow_double_up\",\"arrow_down_small\",\"arrow_double_down\",\"double_vertical_bar\",\"black_square_for_stop\",\"black_circle_for_record\",\"eject\",\"cinema\",\"low_brightness\",\"high_brightness\",\"signal_strength\",\"vibration_mode\",\"mobile_phone_off\",\"female_sign\",\"male_sign\",\"transgender_symbol\",\"heavy_multiplication_x\",\"heavy_plus_sign\",\"heavy_minus_sign\",\"heavy_division_sign\",\"heavy_equals_sign\",\"infinity\",\"bangbang\",\"interrobang\",\"question\",\"grey_question\",\"grey_exclamation\",\"exclamation\",\"wavy_dash\",\"currency_exchange\",\"heavy_dollar_sign\",\"medical_symbol\",\"recycle\",\"fleur_de_lis\",\"trident\",\"name_badge\",\"beginner\",\"o\",\"white_check_mark\",\"ballot_box_with_check\",\"heavy_check_mark\",\"x\",\"negative_squared_cross_mark\",\"curly_loop\",\"loop\",\"part_alternation_mark\",\"eight_spoked_asterisk\",\"eight_pointed_black_star\",\"sparkle\",\"copyright\",\"registered\",\"tm\",\"hash\",\"keycap_star\",\"zero\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\",\"keycap_ten\",\"capital_abcd\",\"abcd\",\"1234\",\"symbols\",\"abc\",\"a\",\"ab\",\"b\",\"cl\",\"cool\",\"free\",\"information_source\",\"id\",\"m\",\"new\",\"ng\",\"o2\",\"ok\",\"parking\",\"sos\",\"up\",\"vs\",\"koko\",\"sa\",\"u6708\",\"u6709\",\"u6307\",\"ideograph_advantage\",\"u5272\",\"u7121\",\"u7981\",\"accept\",\"u7533\",\"u5408\",\"u7a7a\",\"congratulations\",\"secret\",\"u55b6\",\"u6e80\",\"red_circle\",\"large_orange_circle\",\"large_yellow_circle\",\"large_green_circle\",\"large_blue_circle\",\"large_purple_circle\",\"large_brown_circle\",\"black_circle\",\"white_circle\",\"large_red_square\",\"large_orange_square\",\"large_yellow_square\",\"large_green_square\",\"large_blue_square\",\"large_purple_square\",\"large_brown_square\",\"black_large_square\",\"white_large_square\",\"black_medium_square\",\"white_medium_square\",\"black_medium_small_square\",\"white_medium_small_square\",\"black_small_square\",\"white_small_square\",\"large_orange_diamond\",\"large_blue_diamond\",\"small_orange_diamond\",\"small_blue_diamond\",\"small_red_triangle\",\"small_red_triangle_down\",\"diamond_shape_with_a_dot_inside\",\"radio_button\",\"white_square_button\",\"black_square_button\"]},{\"id\":\"flags\",\"emojis\":[\"checkered_flag\",\"cn\",\"crossed_flags\",\"de\",\"es\",\"flag-ac\",\"flag-ad\",\"flag-ae\",\"flag-af\",\"flag-ag\",\"flag-ai\",\"flag-al\",\"flag-am\",\"flag-ao\",\"flag-aq\",\"flag-ar\",\"flag-as\",\"flag-at\",\"flag-au\",\"flag-aw\",\"flag-ax\",\"flag-az\",\"flag-ba\",\"flag-bb\",\"flag-bd\",\"flag-be\",\"flag-bf\",\"flag-bg\",\"flag-bh\",\"flag-bi\",\"flag-bj\",\"flag-bl\",\"flag-bm\",\"flag-bn\",\"flag-bo\",\"flag-bq\",\"flag-br\",\"flag-bs\",\"flag-bt\",\"flag-bv\",\"flag-bw\",\"flag-by\",\"flag-bz\",\"flag-ca\",\"flag-cc\",\"flag-cd\",\"flag-cf\",\"flag-cg\",\"flag-ch\",\"flag-ci\",\"flag-ck\",\"flag-cl\",\"flag-cm\",\"flag-co\",\"flag-cp\",\"flag-cr\",\"flag-cu\",\"flag-cv\",\"flag-cw\",\"flag-cx\",\"flag-cy\",\"flag-cz\",\"flag-dg\",\"flag-dj\",\"flag-dk\",\"flag-dm\",\"flag-do\",\"flag-dz\",\"flag-ea\",\"flag-ec\",\"flag-ee\",\"flag-eg\",\"flag-eh\",\"flag-england\",\"flag-er\",\"flag-et\",\"flag-eu\",\"flag-fi\",\"flag-fj\",\"flag-fk\",\"flag-fm\",\"flag-fo\",\"flag-ga\",\"flag-gd\",\"flag-ge\",\"flag-gf\",\"flag-gg\",\"flag-gh\",\"flag-gi\",\"flag-gl\",\"flag-gm\",\"flag-gn\",\"flag-gp\",\"flag-gq\",\"flag-gr\",\"flag-gs\",\"flag-gt\",\"flag-gu\",\"flag-gw\",\"flag-gy\",\"flag-hk\",\"flag-hm\",\"flag-hn\",\"flag-hr\",\"flag-ht\",\"flag-hu\",\"flag-ic\",\"flag-id\",\"flag-ie\",\"flag-il\",\"flag-im\",\"flag-in\",\"flag-io\",\"flag-iq\",\"flag-ir\",\"flag-is\",\"flag-je\",\"flag-jm\",\"flag-jo\",\"flag-ke\",\"flag-kg\",\"flag-kh\",\"flag-ki\",\"flag-km\",\"flag-kn\",\"flag-kp\",\"flag-kw\",\"flag-ky\",\"flag-kz\",\"flag-la\",\"flag-lb\",\"flag-lc\",\"flag-li\",\"flag-lk\",\"flag-lr\",\"flag-ls\",\"flag-lt\",\"flag-lu\",\"flag-lv\",\"flag-ly\",\"flag-ma\",\"flag-mc\",\"flag-md\",\"flag-me\",\"flag-mf\",\"flag-mg\",\"flag-mh\",\"flag-mk\",\"flag-ml\",\"flag-mm\",\"flag-mn\",\"flag-mo\",\"flag-mp\",\"flag-mq\",\"flag-mr\",\"flag-ms\",\"flag-mt\",\"flag-mu\",\"flag-mv\",\"flag-mw\",\"flag-mx\",\"flag-my\",\"flag-mz\",\"flag-na\",\"flag-nc\",\"flag-ne\",\"flag-nf\",\"flag-ng\",\"flag-ni\",\"flag-nl\",\"flag-no\",\"flag-np\",\"flag-nr\",\"flag-nu\",\"flag-nz\",\"flag-om\",\"flag-pa\",\"flag-pe\",\"flag-pf\",\"flag-pg\",\"flag-ph\",\"flag-pk\",\"flag-pl\",\"flag-pm\",\"flag-pn\",\"flag-pr\",\"flag-ps\",\"flag-pt\",\"flag-pw\",\"flag-py\",\"flag-qa\",\"flag-re\",\"flag-ro\",\"flag-rs\",\"flag-rw\",\"flag-sa\",\"flag-sb\",\"flag-sc\",\"flag-scotland\",\"flag-sd\",\"flag-se\",\"flag-sg\",\"flag-sh\",\"flag-si\",\"flag-sj\",\"flag-sk\",\"flag-sl\",\"flag-sm\",\"flag-sn\",\"flag-so\",\"flag-sr\",\"flag-ss\",\"flag-st\",\"flag-sv\",\"flag-sx\",\"flag-sy\",\"flag-sz\",\"flag-ta\",\"flag-tc\",\"flag-td\",\"flag-tf\",\"flag-tg\",\"flag-th\",\"flag-tj\",\"flag-tk\",\"flag-tl\",\"flag-tm\",\"flag-tn\",\"flag-to\",\"flag-tr\",\"flag-tt\",\"flag-tv\",\"flag-tw\",\"flag-tz\",\"flag-ua\",\"flag-ug\",\"flag-um\",\"flag-un\",\"flag-uy\",\"flag-uz\",\"flag-va\",\"flag-vc\",\"flag-ve\",\"flag-vg\",\"flag-vi\",\"flag-vn\",\"flag-vu\",\"flag-wales\",\"flag-wf\",\"flag-ws\",\"flag-xk\",\"flag-ye\",\"flag-yt\",\"flag-za\",\"flag-zm\",\"flag-zw\",\"fr\",\"gb\",\"it\",\"jp\",\"kr\",\"pirate_flag\",\"rainbow-flag\",\"ru\",\"transgender_flag\",\"triangular_flag_on_post\",\"us\",\"waving_black_flag\",\"waving_white_flag\"]}],\"emojis\":{\"100\":[{\"unified\":\"1f4af\"}],\"1234\":[{\"unified\":\"1f522\"}],\"grinning\":[{\"unified\":\"1f600\"}],\"smiley\":[{\"unified\":\"1f603\"}],\"smile\":[{\"unified\":\"1f604\"}],\"grin\":[{\"unified\":\"1f601\"}],\"laughing\":[{\"unified\":\"1f606\"}],\"sweat_smile\":[{\"unified\":\"1f605\"}],\"rolling_on_the_floor_laughing\":[{\"unified\":\"1f923\"}],\"joy\":[{\"unified\":\"1f602\"}],\"slightly_smiling_face\":[{\"unified\":\"1f642\"}],\"upside_down_face\":[{\"unified\":\"1f643\"}],\"melting_face\":[{\"unified\":\"1fae0\"}],\"wink\":[{\"unified\":\"1f609\"}],\"blush\":[{\"unified\":\"1f60a\"}],\"innocent\":[{\"unified\":\"1f607\"}],\"smiling_face_with_3_hearts\":[{\"unified\":\"1f970\"}],\"heart_eyes\":[{\"unified\":\"1f60d\"}],\"star-struck\":[{\"unified\":\"1f929\"}],\"kissing_heart\":[{\"unified\":\"1f618\"}],\"kissing\":[{\"unified\":\"1f617\"}],\"relaxed\":[{\"unified\":\"263a-fe0f\"}],\"kissing_closed_eyes\":[{\"unified\":\"1f61a\"}],\"kissing_smiling_eyes\":[{\"unified\":\"1f619\"}],\"smiling_face_with_tear\":[{\"unified\":\"1f972\"}],\"yum\":[{\"unified\":\"1f60b\"}],\"stuck_out_tongue\":[{\"unified\":\"1f61b\"}],\"stuck_out_tongue_winking_eye\":[{\"unified\":\"1f61c\"}],\"zany_face\":[{\"unified\":\"1f92a\"}],\"stuck_out_tongue_closed_eyes\":[{\"unified\":\"1f61d\"}],\"money_mouth_face\":[{\"unified\":\"1f911\"}],\"hugging_face\":[{\"unified\":\"1f917\"}],\"face_with_hand_over_mouth\":[{\"unified\":\"1f92d\"}],\"face_with_open_eyes_and_hand_over_mouth\":[{\"unified\":\"1fae2\"}],\"face_with_peeking_eye\":[{\"unified\":\"1fae3\"}],\"shushing_face\":[{\"unified\":\"1f92b\"}],\"thinking_face\":[{\"unified\":\"1f914\"}],\"saluting_face\":[{\"unified\":\"1fae1\"}],\"zipper_mouth_face\":[{\"unified\":\"1f910\"}],\"face_with_raised_eyebrow\":[{\"unified\":\"1f928\"}],\"neutral_face\":[{\"unified\":\"1f610\"}],\"expressionless\":[{\"unified\":\"1f611\"}],\"no_mouth\":[{\"unified\":\"1f636\"}],\"dotted_line_face\":[{\"unified\":\"1fae5\"}],\"face_in_clouds\":[{\"unified\":\"1f636-200d-1f32b-fe0f\"}],\"smirk\":[{\"unified\":\"1f60f\"}],\"unamused\":[{\"unified\":\"1f612\"}],\"face_with_rolling_eyes\":[{\"unified\":\"1f644\"}],\"grimacing\":[{\"unified\":\"1f62c\"}],\"face_exhaling\":[{\"unified\":\"1f62e-200d-1f4a8\"}],\"lying_face\":[{\"unified\":\"1f925\"}],\"relieved\":[{\"unified\":\"1f60c\"}],\"pensive\":[{\"unified\":\"1f614\"}],\"sleepy\":[{\"unified\":\"1f62a\"}],\"drooling_face\":[{\"unified\":\"1f924\"}],\"sleeping\":[{\"unified\":\"1f634\"}],\"mask\":[{\"unified\":\"1f637\"}],\"face_with_thermometer\":[{\"unified\":\"1f912\"}],\"face_with_head_bandage\":[{\"unified\":\"1f915\"}],\"nauseated_face\":[{\"unified\":\"1f922\"}],\"face_vomiting\":[{\"unified\":\"1f92e\"}],\"sneezing_face\":[{\"unified\":\"1f927\"}],\"hot_face\":[{\"unified\":\"1f975\"}],\"cold_face\":[{\"unified\":\"1f976\"}],\"woozy_face\":[{\"unified\":\"1f974\"}],\"dizzy_face\":[{\"unified\":\"1f635\"}],\"face_with_spiral_eyes\":[{\"unified\":\"1f635-200d-1f4ab\"}],\"exploding_head\":[{\"unified\":\"1f92f\"}],\"face_with_cowboy_hat\":[{\"unified\":\"1f920\"}],\"partying_face\":[{\"unified\":\"1f973\"}],\"disguised_face\":[{\"unified\":\"1f978\"}],\"sunglasses\":[{\"unified\":\"1f60e\"}],\"nerd_face\":[{\"unified\":\"1f913\"}],\"face_with_monocle\":[{\"unified\":\"1f9d0\"}],\"confused\":[{\"unified\":\"1f615\"}],\"face_with_diagonal_mouth\":[{\"unified\":\"1fae4\"}],\"worried\":[{\"unified\":\"1f61f\"}],\"slightly_frowning_face\":[{\"unified\":\"1f641\"}],\"white_frowning_face\":[{\"unified\":\"2639-fe0f\"}],\"open_mouth\":[{\"unified\":\"1f62e\"}],\"hushed\":[{\"unified\":\"1f62f\"}],\"astonished\":[{\"unified\":\"1f632\"}],\"flushed\":[{\"unified\":\"1f633\"}],\"pleading_face\":[{\"unified\":\"1f97a\"}],\"face_holding_back_tears\":[{\"unified\":\"1f979\"}],\"frowning\":[{\"unified\":\"1f626\"}],\"anguished\":[{\"unified\":\"1f627\"}],\"fearful\":[{\"unified\":\"1f628\"}],\"cold_sweat\":[{\"unified\":\"1f630\"}],\"disappointed_relieved\":[{\"unified\":\"1f625\"}],\"cry\":[{\"unified\":\"1f622\"}],\"sob\":[{\"unified\":\"1f62d\"}],\"scream\":[{\"unified\":\"1f631\"}],\"confounded\":[{\"unified\":\"1f616\"}],\"persevere\":[{\"unified\":\"1f623\"}],\"disappointed\":[{\"unified\":\"1f61e\"}],\"sweat\":[{\"unified\":\"1f613\"}],\"weary\":[{\"unified\":\"1f629\"}],\"tired_face\":[{\"unified\":\"1f62b\"}],\"yawning_face\":[{\"unified\":\"1f971\"}],\"triumph\":[{\"unified\":\"1f624\"}],\"rage\":[{\"unified\":\"1f621\"}],\"angry\":[{\"unified\":\"1f620\"}],\"face_with_symbols_on_mouth\":[{\"unified\":\"1f92c\"}],\"smiling_imp\":[{\"unified\":\"1f608\"}],\"imp\":[{\"unified\":\"1f47f\"}],\"skull\":[{\"unified\":\"1f480\"}],\"skull_and_crossbones\":[{\"unified\":\"2620-fe0f\"}],\"hankey\":[{\"unified\":\"1f4a9\"}],\"clown_face\":[{\"unified\":\"1f921\"}],\"japanese_ogre\":[{\"unified\":\"1f479\"}],\"japanese_goblin\":[{\"unified\":\"1f47a\"}],\"ghost\":[{\"unified\":\"1f47b\"}],\"alien\":[{\"unified\":\"1f47d\"}],\"space_invader\":[{\"unified\":\"1f47e\"}],\"robot_face\":[{\"unified\":\"1f916\"}],\"smiley_cat\":[{\"unified\":\"1f63a\"}],\"smile_cat\":[{\"unified\":\"1f638\"}],\"joy_cat\":[{\"unified\":\"1f639\"}],\"heart_eyes_cat\":[{\"unified\":\"1f63b\"}],\"smirk_cat\":[{\"unified\":\"1f63c\"}],\"kissing_cat\":[{\"unified\":\"1f63d\"}],\"scream_cat\":[{\"unified\":\"1f640\"}],\"crying_cat_face\":[{\"unified\":\"1f63f\"}],\"pouting_cat\":[{\"unified\":\"1f63e\"}],\"see_no_evil\":[{\"unified\":\"1f648\"}],\"hear_no_evil\":[{\"unified\":\"1f649\"}],\"speak_no_evil\":[{\"unified\":\"1f64a\"}],\"kiss\":[{\"unified\":\"1f48b\"}],\"love_letter\":[{\"unified\":\"1f48c\"}],\"cupid\":[{\"unified\":\"1f498\"}],\"gift_heart\":[{\"unified\":\"1f49d\"}],\"sparkling_heart\":[{\"unified\":\"1f496\"}],\"heartpulse\":[{\"unified\":\"1f497\"}],\"heartbeat\":[{\"unified\":\"1f493\"}],\"revolving_hearts\":[{\"unified\":\"1f49e\"}],\"two_hearts\":[{\"unified\":\"1f495\"}],\"heart_decoration\":[{\"unified\":\"1f49f\"}],\"heavy_heart_exclamation_mark_ornament\":[{\"unified\":\"2763-fe0f\"}],\"broken_heart\":[{\"unified\":\"1f494\"}],\"heart_on_fire\":[{\"unified\":\"2764-fe0f-200d-1f525\"}],\"mending_heart\":[{\"unified\":\"2764-fe0f-200d-1fa79\"}],\"heart\":[{\"unified\":\"2764-fe0f\"}],\"orange_heart\":[{\"unified\":\"1f9e1\"}],\"yellow_heart\":[{\"unified\":\"1f49b\"}],\"green_heart\":[{\"unified\":\"1f49a\"}],\"blue_heart\":[{\"unified\":\"1f499\"}],\"purple_heart\":[{\"unified\":\"1f49c\"}],\"brown_heart\":[{\"unified\":\"1f90e\"}],\"black_heart\":[{\"unified\":\"1f5a4\"}],\"white_heart\":[{\"unified\":\"1f90d\"}],\"anger\":[{\"unified\":\"1f4a2\"}],\"boom\":[{\"unified\":\"1f4a5\"}],\"dizzy\":[{\"unified\":\"1f4ab\"}],\"sweat_drops\":[{\"unified\":\"1f4a6\"}],\"dash\":[{\"unified\":\"1f4a8\"}],\"hole\":[{\"unified\":\"1f573-fe0f\"}],\"bomb\":[{\"unified\":\"1f4a3\"}],\"speech_balloon\":[{\"unified\":\"1f4ac\"}],\"eye-in-speech-bubble\":[{\"unified\":\"1f441-fe0f-200d-1f5e8-fe0f\"}],\"left_speech_bubble\":[{\"unified\":\"1f5e8-fe0f\"}],\"right_anger_bubble\":[{\"unified\":\"1f5ef-fe0f\"}],\"thought_balloon\":[{\"unified\":\"1f4ad\"}],\"zzz\":[{\"unified\":\"1f4a4\"}],\"wave\":[{\"unified\":\"1f44b\"},{\"unified\":\"1f44b-1f3fb\"},{\"unified\":\"1f44b-1f3fc\"},{\"unified\":\"1f44b-1f3fd\"},{\"unified\":\"1f44b-1f3fe\"},{\"unified\":\"1f44b-1f3ff\"}],\"raised_back_of_hand\":[{\"unified\":\"1f91a\"},{\"unified\":\"1f91a-1f3fb\"},{\"unified\":\"1f91a-1f3fc\"},{\"unified\":\"1f91a-1f3fd\"},{\"unified\":\"1f91a-1f3fe\"},{\"unified\":\"1f91a-1f3ff\"}],\"raised_hand_with_fingers_splayed\":[{\"unified\":\"1f590-fe0f\"},{\"unified\":\"1f590-1f3fb\"},{\"unified\":\"1f590-1f3fc\"},{\"unified\":\"1f590-1f3fd\"},{\"unified\":\"1f590-1f3fe\"},{\"unified\":\"1f590-1f3ff\"}],\"hand\":[{\"unified\":\"270b\"},{\"unified\":\"270b-1f3fb\"},{\"unified\":\"270b-1f3fc\"},{\"unified\":\"270b-1f3fd\"},{\"unified\":\"270b-1f3fe\"},{\"unified\":\"270b-1f3ff\"}],\"spock-hand\":[{\"unified\":\"1f596\"},{\"unified\":\"1f596-1f3fb\"},{\"unified\":\"1f596-1f3fc\"},{\"unified\":\"1f596-1f3fd\"},{\"unified\":\"1f596-1f3fe\"},{\"unified\":\"1f596-1f3ff\"}],\"rightwards_hand\":[{\"unified\":\"1faf1\"},{\"unified\":\"1faf1-1f3fb\"},{\"unified\":\"1faf1-1f3fc\"},{\"unified\":\"1faf1-1f3fd\"},{\"unified\":\"1faf1-1f3fe\"},{\"unified\":\"1faf1-1f3ff\"}],\"leftwards_hand\":[{\"unified\":\"1faf2\"},{\"unified\":\"1faf2-1f3fb\"},{\"unified\":\"1faf2-1f3fc\"},{\"unified\":\"1faf2-1f3fd\"},{\"unified\":\"1faf2-1f3fe\"},{\"unified\":\"1faf2-1f3ff\"}],\"palm_down_hand\":[{\"unified\":\"1faf3\"},{\"unified\":\"1faf3-1f3fb\"},{\"unified\":\"1faf3-1f3fc\"},{\"unified\":\"1faf3-1f3fd\"},{\"unified\":\"1faf3-1f3fe\"},{\"unified\":\"1faf3-1f3ff\"}],\"palm_up_hand\":[{\"unified\":\"1faf4\"},{\"unified\":\"1faf4-1f3fb\"},{\"unified\":\"1faf4-1f3fc\"},{\"unified\":\"1faf4-1f3fd\"},{\"unified\":\"1faf4-1f3fe\"},{\"unified\":\"1faf4-1f3ff\"}],\"ok_hand\":[{\"unified\":\"1f44c\"},{\"unified\":\"1f44c-1f3fb\"},{\"unified\":\"1f44c-1f3fc\"},{\"unified\":\"1f44c-1f3fd\"},{\"unified\":\"1f44c-1f3fe\"},{\"unified\":\"1f44c-1f3ff\"}],\"pinched_fingers\":[{\"unified\":\"1f90c\"},{\"unified\":\"1f90c-1f3fb\"},{\"unified\":\"1f90c-1f3fc\"},{\"unified\":\"1f90c-1f3fd\"},{\"unified\":\"1f90c-1f3fe\"},{\"unified\":\"1f90c-1f3ff\"}],\"pinching_hand\":[{\"unified\":\"1f90f\"},{\"unified\":\"1f90f-1f3fb\"},{\"unified\":\"1f90f-1f3fc\"},{\"unified\":\"1f90f-1f3fd\"},{\"unified\":\"1f90f-1f3fe\"},{\"unified\":\"1f90f-1f3ff\"}],\"v\":[{\"unified\":\"270c-fe0f\"},{\"unified\":\"270c-1f3fb\"},{\"unified\":\"270c-1f3fc\"},{\"unified\":\"270c-1f3fd\"},{\"unified\":\"270c-1f3fe\"},{\"unified\":\"270c-1f3ff\"}],\"crossed_fingers\":[{\"unified\":\"1f91e\"},{\"unified\":\"1f91e-1f3fb\"},{\"unified\":\"1f91e-1f3fc\"},{\"unified\":\"1f91e-1f3fd\"},{\"unified\":\"1f91e-1f3fe\"},{\"unified\":\"1f91e-1f3ff\"}],\"hand_with_index_finger_and_thumb_crossed\":[{\"unified\":\"1faf0\"},{\"unified\":\"1faf0-1f3fb\"},{\"unified\":\"1faf0-1f3fc\"},{\"unified\":\"1faf0-1f3fd\"},{\"unified\":\"1faf0-1f3fe\"},{\"unified\":\"1faf0-1f3ff\"}],\"i_love_you_hand_sign\":[{\"unified\":\"1f91f\"},{\"unified\":\"1f91f-1f3fb\"},{\"unified\":\"1f91f-1f3fc\"},{\"unified\":\"1f91f-1f3fd\"},{\"unified\":\"1f91f-1f3fe\"},{\"unified\":\"1f91f-1f3ff\"}],\"the_horns\":[{\"unified\":\"1f918\"},{\"unified\":\"1f918-1f3fb\"},{\"unified\":\"1f918-1f3fc\"},{\"unified\":\"1f918-1f3fd\"},{\"unified\":\"1f918-1f3fe\"},{\"unified\":\"1f918-1f3ff\"}],\"call_me_hand\":[{\"unified\":\"1f919\"},{\"unified\":\"1f919-1f3fb\"},{\"unified\":\"1f919-1f3fc\"},{\"unified\":\"1f919-1f3fd\"},{\"unified\":\"1f919-1f3fe\"},{\"unified\":\"1f919-1f3ff\"}],\"point_left\":[{\"unified\":\"1f448\"},{\"unified\":\"1f448-1f3fb\"},{\"unified\":\"1f448-1f3fc\"},{\"unified\":\"1f448-1f3fd\"},{\"unified\":\"1f448-1f3fe\"},{\"unified\":\"1f448-1f3ff\"}],\"point_right\":[{\"unified\":\"1f449\"},{\"unified\":\"1f449-1f3fb\"},{\"unified\":\"1f449-1f3fc\"},{\"unified\":\"1f449-1f3fd\"},{\"unified\":\"1f449-1f3fe\"},{\"unified\":\"1f449-1f3ff\"}],\"point_up_2\":[{\"unified\":\"1f446\"},{\"unified\":\"1f446-1f3fb\"},{\"unified\":\"1f446-1f3fc\"},{\"unified\":\"1f446-1f3fd\"},{\"unified\":\"1f446-1f3fe\"},{\"unified\":\"1f446-1f3ff\"}],\"middle_finger\":[{\"unified\":\"1f595\"},{\"unified\":\"1f595-1f3fb\"},{\"unified\":\"1f595-1f3fc\"},{\"unified\":\"1f595-1f3fd\"},{\"unified\":\"1f595-1f3fe\"},{\"unified\":\"1f595-1f3ff\"}],\"point_down\":[{\"unified\":\"1f447\"},{\"unified\":\"1f447-1f3fb\"},{\"unified\":\"1f447-1f3fc\"},{\"unified\":\"1f447-1f3fd\"},{\"unified\":\"1f447-1f3fe\"},{\"unified\":\"1f447-1f3ff\"}],\"point_up\":[{\"unified\":\"261d-fe0f\"},{\"unified\":\"261d-1f3fb\"},{\"unified\":\"261d-1f3fc\"},{\"unified\":\"261d-1f3fd\"},{\"unified\":\"261d-1f3fe\"},{\"unified\":\"261d-1f3ff\"}],\"index_pointing_at_the_viewer\":[{\"unified\":\"1faf5\"},{\"unified\":\"1faf5-1f3fb\"},{\"unified\":\"1faf5-1f3fc\"},{\"unified\":\"1faf5-1f3fd\"},{\"unified\":\"1faf5-1f3fe\"},{\"unified\":\"1faf5-1f3ff\"}],\"+1\":[{\"unified\":\"1f44d\"},{\"unified\":\"1f44d-1f3fb\"},{\"unified\":\"1f44d-1f3fc\"},{\"unified\":\"1f44d-1f3fd\"},{\"unified\":\"1f44d-1f3fe\"},{\"unified\":\"1f44d-1f3ff\"}],\"-1\":[{\"unified\":\"1f44e\"},{\"unified\":\"1f44e-1f3fb\"},{\"unified\":\"1f44e-1f3fc\"},{\"unified\":\"1f44e-1f3fd\"},{\"unified\":\"1f44e-1f3fe\"},{\"unified\":\"1f44e-1f3ff\"}],\"fist\":[{\"unified\":\"270a\"},{\"unified\":\"270a-1f3fb\"},{\"unified\":\"270a-1f3fc\"},{\"unified\":\"270a-1f3fd\"},{\"unified\":\"270a-1f3fe\"},{\"unified\":\"270a-1f3ff\"}],\"facepunch\":[{\"unified\":\"1f44a\"},{\"unified\":\"1f44a-1f3fb\"},{\"unified\":\"1f44a-1f3fc\"},{\"unified\":\"1f44a-1f3fd\"},{\"unified\":\"1f44a-1f3fe\"},{\"unified\":\"1f44a-1f3ff\"}],\"left-facing_fist\":[{\"unified\":\"1f91b\"},{\"unified\":\"1f91b-1f3fb\"},{\"unified\":\"1f91b-1f3fc\"},{\"unified\":\"1f91b-1f3fd\"},{\"unified\":\"1f91b-1f3fe\"},{\"unified\":\"1f91b-1f3ff\"}],\"right-facing_fist\":[{\"unified\":\"1f91c\"},{\"unified\":\"1f91c-1f3fb\"},{\"unified\":\"1f91c-1f3fc\"},{\"unified\":\"1f91c-1f3fd\"},{\"unified\":\"1f91c-1f3fe\"},{\"unified\":\"1f91c-1f3ff\"}],\"clap\":[{\"unified\":\"1f44f\"},{\"unified\":\"1f44f-1f3fb\"},{\"unified\":\"1f44f-1f3fc\"},{\"unified\":\"1f44f-1f3fd\"},{\"unified\":\"1f44f-1f3fe\"},{\"unified\":\"1f44f-1f3ff\"}],\"raised_hands\":[{\"unified\":\"1f64c\"},{\"unified\":\"1f64c-1f3fb\"},{\"unified\":\"1f64c-1f3fc\"},{\"unified\":\"1f64c-1f3fd\"},{\"unified\":\"1f64c-1f3fe\"},{\"unified\":\"1f64c-1f3ff\"}],\"heart_hands\":[{\"unified\":\"1faf6\"},{\"unified\":\"1faf6-1f3fb\"},{\"unified\":\"1faf6-1f3fc\"},{\"unified\":\"1faf6-1f3fd\"},{\"unified\":\"1faf6-1f3fe\"},{\"unified\":\"1faf6-1f3ff\"}],\"open_hands\":[{\"unified\":\"1f450\"},{\"unified\":\"1f450-1f3fb\"},{\"unified\":\"1f450-1f3fc\"},{\"unified\":\"1f450-1f3fd\"},{\"unified\":\"1f450-1f3fe\"},{\"unified\":\"1f450-1f3ff\"}],\"palms_up_together\":[{\"unified\":\"1f932\"},{\"unified\":\"1f932-1f3fb\"},{\"unified\":\"1f932-1f3fc\"},{\"unified\":\"1f932-1f3fd\"},{\"unified\":\"1f932-1f3fe\"},{\"unified\":\"1f932-1f3ff\"}],\"handshake\":[{\"unified\":\"1f91d\"},{\"unified\":\"1f91d-1f3fb\"},{\"unified\":\"1f91d-1f3fc\"},{\"unified\":\"1f91d-1f3fd\"},{\"unified\":\"1f91d-1f3fe\"},{\"unified\":\"1f91d-1f3ff\"}],\"pray\":[{\"unified\":\"1f64f\"},{\"unified\":\"1f64f-1f3fb\"},{\"unified\":\"1f64f-1f3fc\"},{\"unified\":\"1f64f-1f3fd\"},{\"unified\":\"1f64f-1f3fe\"},{\"unified\":\"1f64f-1f3ff\"}],\"writing_hand\":[{\"unified\":\"270d-fe0f\"},{\"unified\":\"270d-1f3fb\"},{\"unified\":\"270d-1f3fc\"},{\"unified\":\"270d-1f3fd\"},{\"unified\":\"270d-1f3fe\"},{\"unified\":\"270d-1f3ff\"}],\"nail_care\":[{\"unified\":\"1f485\"},{\"unified\":\"1f485-1f3fb\"},{\"unified\":\"1f485-1f3fc\"},{\"unified\":\"1f485-1f3fd\"},{\"unified\":\"1f485-1f3fe\"},{\"unified\":\"1f485-1f3ff\"}],\"selfie\":[{\"unified\":\"1f933\"},{\"unified\":\"1f933-1f3fb\"},{\"unified\":\"1f933-1f3fc\"},{\"unified\":\"1f933-1f3fd\"},{\"unified\":\"1f933-1f3fe\"},{\"unified\":\"1f933-1f3ff\"}],\"muscle\":[{\"unified\":\"1f4aa\"},{\"unified\":\"1f4aa-1f3fb\"},{\"unified\":\"1f4aa-1f3fc\"},{\"unified\":\"1f4aa-1f3fd\"},{\"unified\":\"1f4aa-1f3fe\"},{\"unified\":\"1f4aa-1f3ff\"}],\"mechanical_arm\":[{\"unified\":\"1f9be\"}],\"mechanical_leg\":[{\"unified\":\"1f9bf\"}],\"leg\":[{\"unified\":\"1f9b5\"},{\"unified\":\"1f9b5-1f3fb\"},{\"unified\":\"1f9b5-1f3fc\"},{\"unified\":\"1f9b5-1f3fd\"},{\"unified\":\"1f9b5-1f3fe\"},{\"unified\":\"1f9b5-1f3ff\"}],\"foot\":[{\"unified\":\"1f9b6\"},{\"unified\":\"1f9b6-1f3fb\"},{\"unified\":\"1f9b6-1f3fc\"},{\"unified\":\"1f9b6-1f3fd\"},{\"unified\":\"1f9b6-1f3fe\"},{\"unified\":\"1f9b6-1f3ff\"}],\"ear\":[{\"unified\":\"1f442\"},{\"unified\":\"1f442-1f3fb\"},{\"unified\":\"1f442-1f3fc\"},{\"unified\":\"1f442-1f3fd\"},{\"unified\":\"1f442-1f3fe\"},{\"unified\":\"1f442-1f3ff\"}],\"ear_with_hearing_aid\":[{\"unified\":\"1f9bb\"},{\"unified\":\"1f9bb-1f3fb\"},{\"unified\":\"1f9bb-1f3fc\"},{\"unified\":\"1f9bb-1f3fd\"},{\"unified\":\"1f9bb-1f3fe\"},{\"unified\":\"1f9bb-1f3ff\"}],\"nose\":[{\"unified\":\"1f443\"},{\"unified\":\"1f443-1f3fb\"},{\"unified\":\"1f443-1f3fc\"},{\"unified\":\"1f443-1f3fd\"},{\"unified\":\"1f443-1f3fe\"},{\"unified\":\"1f443-1f3ff\"}],\"brain\":[{\"unified\":\"1f9e0\"}],\"anatomical_heart\":[{\"unified\":\"1fac0\"}],\"lungs\":[{\"unified\":\"1fac1\"}],\"tooth\":[{\"unified\":\"1f9b7\"}],\"bone\":[{\"unified\":\"1f9b4\"}],\"eyes\":[{\"unified\":\"1f440\"}],\"eye\":[{\"unified\":\"1f441-fe0f\"}],\"tongue\":[{\"unified\":\"1f445\"}],\"lips\":[{\"unified\":\"1f444\"}],\"biting_lip\":[{\"unified\":\"1fae6\"}],\"baby\":[{\"unified\":\"1f476\"},{\"unified\":\"1f476-1f3fb\"},{\"unified\":\"1f476-1f3fc\"},{\"unified\":\"1f476-1f3fd\"},{\"unified\":\"1f476-1f3fe\"},{\"unified\":\"1f476-1f3ff\"}],\"child\":[{\"unified\":\"1f9d2\"},{\"unified\":\"1f9d2-1f3fb\"},{\"unified\":\"1f9d2-1f3fc\"},{\"unified\":\"1f9d2-1f3fd\"},{\"unified\":\"1f9d2-1f3fe\"},{\"unified\":\"1f9d2-1f3ff\"}],\"boy\":[{\"unified\":\"1f466\"},{\"unified\":\"1f466-1f3fb\"},{\"unified\":\"1f466-1f3fc\"},{\"unified\":\"1f466-1f3fd\"},{\"unified\":\"1f466-1f3fe\"},{\"unified\":\"1f466-1f3ff\"}],\"girl\":[{\"unified\":\"1f467\"},{\"unified\":\"1f467-1f3fb\"},{\"unified\":\"1f467-1f3fc\"},{\"unified\":\"1f467-1f3fd\"},{\"unified\":\"1f467-1f3fe\"},{\"unified\":\"1f467-1f3ff\"}],\"adult\":[{\"unified\":\"1f9d1\"},{\"unified\":\"1f9d1-1f3fb\"},{\"unified\":\"1f9d1-1f3fc\"},{\"unified\":\"1f9d1-1f3fd\"},{\"unified\":\"1f9d1-1f3fe\"},{\"unified\":\"1f9d1-1f3ff\"}],\"person_with_blond_hair\":[{\"unified\":\"1f471\"},{\"unified\":\"1f471-1f3fb\"},{\"unified\":\"1f471-1f3fc\"},{\"unified\":\"1f471-1f3fd\"},{\"unified\":\"1f471-1f3fe\"},{\"unified\":\"1f471-1f3ff\"}],\"man\":[{\"unified\":\"1f468\"},{\"unified\":\"1f468-1f3fb\"},{\"unified\":\"1f468-1f3fc\"},{\"unified\":\"1f468-1f3fd\"},{\"unified\":\"1f468-1f3fe\"},{\"unified\":\"1f468-1f3ff\"}],\"bearded_person\":[{\"unified\":\"1f9d4\"},{\"unified\":\"1f9d4-1f3fb\"},{\"unified\":\"1f9d4-1f3fc\"},{\"unified\":\"1f9d4-1f3fd\"},{\"unified\":\"1f9d4-1f3fe\"},{\"unified\":\"1f9d4-1f3ff\"}],\"man_with_beard\":[{\"unified\":\"1f9d4-200d-2642-fe0f\"},{\"unified\":\"1f9d4-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9d4-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9d4-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9d4-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9d4-1f3ff-200d-2642-fe0f\"}],\"woman_with_beard\":[{\"unified\":\"1f9d4-200d-2640-fe0f\"},{\"unified\":\"1f9d4-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9d4-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9d4-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9d4-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9d4-1f3ff-200d-2640-fe0f\"}],\"red_haired_man\":[{\"unified\":\"1f468-200d-1f9b0\"},{\"unified\":\"1f468-1f3fb-200d-1f9b0\"},{\"unified\":\"1f468-1f3fc-200d-1f9b0\"},{\"unified\":\"1f468-1f3fd-200d-1f9b0\"},{\"unified\":\"1f468-1f3fe-200d-1f9b0\"},{\"unified\":\"1f468-1f3ff-200d-1f9b0\"}],\"curly_haired_man\":[{\"unified\":\"1f468-200d-1f9b1\"},{\"unified\":\"1f468-1f3fb-200d-1f9b1\"},{\"unified\":\"1f468-1f3fc-200d-1f9b1\"},{\"unified\":\"1f468-1f3fd-200d-1f9b1\"},{\"unified\":\"1f468-1f3fe-200d-1f9b1\"},{\"unified\":\"1f468-1f3ff-200d-1f9b1\"}],\"white_haired_man\":[{\"unified\":\"1f468-200d-1f9b3\"},{\"unified\":\"1f468-1f3fb-200d-1f9b3\"},{\"unified\":\"1f468-1f3fc-200d-1f9b3\"},{\"unified\":\"1f468-1f3fd-200d-1f9b3\"},{\"unified\":\"1f468-1f3fe-200d-1f9b3\"},{\"unified\":\"1f468-1f3ff-200d-1f9b3\"}],\"bald_man\":[{\"unified\":\"1f468-200d-1f9b2\"},{\"unified\":\"1f468-1f3fb-200d-1f9b2\"},{\"unified\":\"1f468-1f3fc-200d-1f9b2\"},{\"unified\":\"1f468-1f3fd-200d-1f9b2\"},{\"unified\":\"1f468-1f3fe-200d-1f9b2\"},{\"unified\":\"1f468-1f3ff-200d-1f9b2\"}],\"woman\":[{\"unified\":\"1f469\"},{\"unified\":\"1f469-1f3fb\"},{\"unified\":\"1f469-1f3fc\"},{\"unified\":\"1f469-1f3fd\"},{\"unified\":\"1f469-1f3fe\"},{\"unified\":\"1f469-1f3ff\"}],\"red_haired_woman\":[{\"unified\":\"1f469-200d-1f9b0\"},{\"unified\":\"1f469-1f3fb-200d-1f9b0\"},{\"unified\":\"1f469-1f3fc-200d-1f9b0\"},{\"unified\":\"1f469-1f3fd-200d-1f9b0\"},{\"unified\":\"1f469-1f3fe-200d-1f9b0\"},{\"unified\":\"1f469-1f3ff-200d-1f9b0\"}],\"red_haired_person\":[{\"unified\":\"1f9d1-200d-1f9b0\"},{\"unified\":\"1f9d1-1f3fb-200d-1f9b0\"},{\"unified\":\"1f9d1-1f3fc-200d-1f9b0\"},{\"unified\":\"1f9d1-1f3fd-200d-1f9b0\"},{\"unified\":\"1f9d1-1f3fe-200d-1f9b0\"},{\"unified\":\"1f9d1-1f3ff-200d-1f9b0\"}],\"curly_haired_woman\":[{\"unified\":\"1f469-200d-1f9b1\"},{\"unified\":\"1f469-1f3fb-200d-1f9b1\"},{\"unified\":\"1f469-1f3fc-200d-1f9b1\"},{\"unified\":\"1f469-1f3fd-200d-1f9b1\"},{\"unified\":\"1f469-1f3fe-200d-1f9b1\"},{\"unified\":\"1f469-1f3ff-200d-1f9b1\"}],\"curly_haired_person\":[{\"unified\":\"1f9d1-200d-1f9b1\"},{\"unified\":\"1f9d1-1f3fb-200d-1f9b1\"},{\"unified\":\"1f9d1-1f3fc-200d-1f9b1\"},{\"unified\":\"1f9d1-1f3fd-200d-1f9b1\"},{\"unified\":\"1f9d1-1f3fe-200d-1f9b1\"},{\"unified\":\"1f9d1-1f3ff-200d-1f9b1\"}],\"white_haired_woman\":[{\"unified\":\"1f469-200d-1f9b3\"},{\"unified\":\"1f469-1f3fb-200d-1f9b3\"},{\"unified\":\"1f469-1f3fc-200d-1f9b3\"},{\"unified\":\"1f469-1f3fd-200d-1f9b3\"},{\"unified\":\"1f469-1f3fe-200d-1f9b3\"},{\"unified\":\"1f469-1f3ff-200d-1f9b3\"}],\"white_haired_person\":[{\"unified\":\"1f9d1-200d-1f9b3\"},{\"unified\":\"1f9d1-1f3fb-200d-1f9b3\"},{\"unified\":\"1f9d1-1f3fc-200d-1f9b3\"},{\"unified\":\"1f9d1-1f3fd-200d-1f9b3\"},{\"unified\":\"1f9d1-1f3fe-200d-1f9b3\"},{\"unified\":\"1f9d1-1f3ff-200d-1f9b3\"}],\"bald_woman\":[{\"unified\":\"1f469-200d-1f9b2\"},{\"unified\":\"1f469-1f3fb-200d-1f9b2\"},{\"unified\":\"1f469-1f3fc-200d-1f9b2\"},{\"unified\":\"1f469-1f3fd-200d-1f9b2\"},{\"unified\":\"1f469-1f3fe-200d-1f9b2\"},{\"unified\":\"1f469-1f3ff-200d-1f9b2\"}],\"bald_person\":[{\"unified\":\"1f9d1-200d-1f9b2\"},{\"unified\":\"1f9d1-1f3fb-200d-1f9b2\"},{\"unified\":\"1f9d1-1f3fc-200d-1f9b2\"},{\"unified\":\"1f9d1-1f3fd-200d-1f9b2\"},{\"unified\":\"1f9d1-1f3fe-200d-1f9b2\"},{\"unified\":\"1f9d1-1f3ff-200d-1f9b2\"}],\"blond-haired-woman\":[{\"unified\":\"1f471-200d-2640-fe0f\"},{\"unified\":\"1f471-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f471-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f471-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f471-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f471-1f3ff-200d-2640-fe0f\"}],\"blond-haired-man\":[{\"unified\":\"1f471-200d-2642-fe0f\"},{\"unified\":\"1f471-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f471-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f471-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f471-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f471-1f3ff-200d-2642-fe0f\"}],\"older_adult\":[{\"unified\":\"1f9d3\"},{\"unified\":\"1f9d3-1f3fb\"},{\"unified\":\"1f9d3-1f3fc\"},{\"unified\":\"1f9d3-1f3fd\"},{\"unified\":\"1f9d3-1f3fe\"},{\"unified\":\"1f9d3-1f3ff\"}],\"older_man\":[{\"unified\":\"1f474\"},{\"unified\":\"1f474-1f3fb\"},{\"unified\":\"1f474-1f3fc\"},{\"unified\":\"1f474-1f3fd\"},{\"unified\":\"1f474-1f3fe\"},{\"unified\":\"1f474-1f3ff\"}],\"older_woman\":[{\"unified\":\"1f475\"},{\"unified\":\"1f475-1f3fb\"},{\"unified\":\"1f475-1f3fc\"},{\"unified\":\"1f475-1f3fd\"},{\"unified\":\"1f475-1f3fe\"},{\"unified\":\"1f475-1f3ff\"}],\"person_frowning\":[{\"unified\":\"1f64d\"},{\"unified\":\"1f64d-1f3fb\"},{\"unified\":\"1f64d-1f3fc\"},{\"unified\":\"1f64d-1f3fd\"},{\"unified\":\"1f64d-1f3fe\"},{\"unified\":\"1f64d-1f3ff\"}],\"man-frowning\":[{\"unified\":\"1f64d-200d-2642-fe0f\"},{\"unified\":\"1f64d-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f64d-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f64d-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f64d-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f64d-1f3ff-200d-2642-fe0f\"}],\"woman-frowning\":[{\"unified\":\"1f64d-200d-2640-fe0f\"},{\"unified\":\"1f64d-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f64d-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f64d-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f64d-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f64d-1f3ff-200d-2640-fe0f\"}],\"person_with_pouting_face\":[{\"unified\":\"1f64e\"},{\"unified\":\"1f64e-1f3fb\"},{\"unified\":\"1f64e-1f3fc\"},{\"unified\":\"1f64e-1f3fd\"},{\"unified\":\"1f64e-1f3fe\"},{\"unified\":\"1f64e-1f3ff\"}],\"man-pouting\":[{\"unified\":\"1f64e-200d-2642-fe0f\"},{\"unified\":\"1f64e-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f64e-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f64e-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f64e-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f64e-1f3ff-200d-2642-fe0f\"}],\"woman-pouting\":[{\"unified\":\"1f64e-200d-2640-fe0f\"},{\"unified\":\"1f64e-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f64e-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f64e-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f64e-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f64e-1f3ff-200d-2640-fe0f\"}],\"no_good\":[{\"unified\":\"1f645\"},{\"unified\":\"1f645-1f3fb\"},{\"unified\":\"1f645-1f3fc\"},{\"unified\":\"1f645-1f3fd\"},{\"unified\":\"1f645-1f3fe\"},{\"unified\":\"1f645-1f3ff\"}],\"man-gesturing-no\":[{\"unified\":\"1f645-200d-2642-fe0f\"},{\"unified\":\"1f645-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f645-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f645-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f645-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f645-1f3ff-200d-2642-fe0f\"}],\"woman-gesturing-no\":[{\"unified\":\"1f645-200d-2640-fe0f\"},{\"unified\":\"1f645-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f645-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f645-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f645-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f645-1f3ff-200d-2640-fe0f\"}],\"ok_woman\":[{\"unified\":\"1f646\"},{\"unified\":\"1f646-1f3fb\"},{\"unified\":\"1f646-1f3fc\"},{\"unified\":\"1f646-1f3fd\"},{\"unified\":\"1f646-1f3fe\"},{\"unified\":\"1f646-1f3ff\"}],\"man-gesturing-ok\":[{\"unified\":\"1f646-200d-2642-fe0f\"},{\"unified\":\"1f646-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f646-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f646-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f646-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f646-1f3ff-200d-2642-fe0f\"}],\"woman-gesturing-ok\":[{\"unified\":\"1f646-200d-2640-fe0f\"},{\"unified\":\"1f646-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f646-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f646-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f646-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f646-1f3ff-200d-2640-fe0f\"}],\"information_desk_person\":[{\"unified\":\"1f481\"},{\"unified\":\"1f481-1f3fb\"},{\"unified\":\"1f481-1f3fc\"},{\"unified\":\"1f481-1f3fd\"},{\"unified\":\"1f481-1f3fe\"},{\"unified\":\"1f481-1f3ff\"}],\"man-tipping-hand\":[{\"unified\":\"1f481-200d-2642-fe0f\"},{\"unified\":\"1f481-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f481-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f481-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f481-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f481-1f3ff-200d-2642-fe0f\"}],\"woman-tipping-hand\":[{\"unified\":\"1f481-200d-2640-fe0f\"},{\"unified\":\"1f481-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f481-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f481-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f481-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f481-1f3ff-200d-2640-fe0f\"}],\"raising_hand\":[{\"unified\":\"1f64b\"},{\"unified\":\"1f64b-1f3fb\"},{\"unified\":\"1f64b-1f3fc\"},{\"unified\":\"1f64b-1f3fd\"},{\"unified\":\"1f64b-1f3fe\"},{\"unified\":\"1f64b-1f3ff\"}],\"man-raising-hand\":[{\"unified\":\"1f64b-200d-2642-fe0f\"},{\"unified\":\"1f64b-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f64b-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f64b-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f64b-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f64b-1f3ff-200d-2642-fe0f\"}],\"woman-raising-hand\":[{\"unified\":\"1f64b-200d-2640-fe0f\"},{\"unified\":\"1f64b-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f64b-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f64b-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f64b-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f64b-1f3ff-200d-2640-fe0f\"}],\"deaf_person\":[{\"unified\":\"1f9cf\"},{\"unified\":\"1f9cf-1f3fb\"},{\"unified\":\"1f9cf-1f3fc\"},{\"unified\":\"1f9cf-1f3fd\"},{\"unified\":\"1f9cf-1f3fe\"},{\"unified\":\"1f9cf-1f3ff\"}],\"deaf_man\":[{\"unified\":\"1f9cf-200d-2642-fe0f\"},{\"unified\":\"1f9cf-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9cf-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9cf-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9cf-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9cf-1f3ff-200d-2642-fe0f\"}],\"deaf_woman\":[{\"unified\":\"1f9cf-200d-2640-fe0f\"},{\"unified\":\"1f9cf-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9cf-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9cf-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9cf-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9cf-1f3ff-200d-2640-fe0f\"}],\"bow\":[{\"unified\":\"1f647\"},{\"unified\":\"1f647-1f3fb\"},{\"unified\":\"1f647-1f3fc\"},{\"unified\":\"1f647-1f3fd\"},{\"unified\":\"1f647-1f3fe\"},{\"unified\":\"1f647-1f3ff\"}],\"man-bowing\":[{\"unified\":\"1f647-200d-2642-fe0f\"},{\"unified\":\"1f647-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f647-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f647-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f647-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f647-1f3ff-200d-2642-fe0f\"}],\"woman-bowing\":[{\"unified\":\"1f647-200d-2640-fe0f\"},{\"unified\":\"1f647-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f647-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f647-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f647-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f647-1f3ff-200d-2640-fe0f\"}],\"face_palm\":[{\"unified\":\"1f926\"},{\"unified\":\"1f926-1f3fb\"},{\"unified\":\"1f926-1f3fc\"},{\"unified\":\"1f926-1f3fd\"},{\"unified\":\"1f926-1f3fe\"},{\"unified\":\"1f926-1f3ff\"}],\"man-facepalming\":[{\"unified\":\"1f926-200d-2642-fe0f\"},{\"unified\":\"1f926-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f926-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f926-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f926-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f926-1f3ff-200d-2642-fe0f\"}],\"woman-facepalming\":[{\"unified\":\"1f926-200d-2640-fe0f\"},{\"unified\":\"1f926-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f926-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f926-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f926-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f926-1f3ff-200d-2640-fe0f\"}],\"shrug\":[{\"unified\":\"1f937\"},{\"unified\":\"1f937-1f3fb\"},{\"unified\":\"1f937-1f3fc\"},{\"unified\":\"1f937-1f3fd\"},{\"unified\":\"1f937-1f3fe\"},{\"unified\":\"1f937-1f3ff\"}],\"man-shrugging\":[{\"unified\":\"1f937-200d-2642-fe0f\"},{\"unified\":\"1f937-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f937-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f937-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f937-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f937-1f3ff-200d-2642-fe0f\"}],\"woman-shrugging\":[{\"unified\":\"1f937-200d-2640-fe0f\"},{\"unified\":\"1f937-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f937-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f937-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f937-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f937-1f3ff-200d-2640-fe0f\"}],\"health_worker\":[{\"unified\":\"1f9d1-200d-2695-fe0f\"},{\"unified\":\"1f9d1-1f3fb-200d-2695-fe0f\"},{\"unified\":\"1f9d1-1f3fc-200d-2695-fe0f\"},{\"unified\":\"1f9d1-1f3fd-200d-2695-fe0f\"},{\"unified\":\"1f9d1-1f3fe-200d-2695-fe0f\"},{\"unified\":\"1f9d1-1f3ff-200d-2695-fe0f\"}],\"male-doctor\":[{\"unified\":\"1f468-200d-2695-fe0f\"},{\"unified\":\"1f468-1f3fb-200d-2695-fe0f\"},{\"unified\":\"1f468-1f3fc-200d-2695-fe0f\"},{\"unified\":\"1f468-1f3fd-200d-2695-fe0f\"},{\"unified\":\"1f468-1f3fe-200d-2695-fe0f\"},{\"unified\":\"1f468-1f3ff-200d-2695-fe0f\"}],\"female-doctor\":[{\"unified\":\"1f469-200d-2695-fe0f\"},{\"unified\":\"1f469-1f3fb-200d-2695-fe0f\"},{\"unified\":\"1f469-1f3fc-200d-2695-fe0f\"},{\"unified\":\"1f469-1f3fd-200d-2695-fe0f\"},{\"unified\":\"1f469-1f3fe-200d-2695-fe0f\"},{\"unified\":\"1f469-1f3ff-200d-2695-fe0f\"}],\"student\":[{\"unified\":\"1f9d1-200d-1f393\"},{\"unified\":\"1f9d1-1f3fb-200d-1f393\"},{\"unified\":\"1f9d1-1f3fc-200d-1f393\"},{\"unified\":\"1f9d1-1f3fd-200d-1f393\"},{\"unified\":\"1f9d1-1f3fe-200d-1f393\"},{\"unified\":\"1f9d1-1f3ff-200d-1f393\"}],\"male-student\":[{\"unified\":\"1f468-200d-1f393\"},{\"unified\":\"1f468-1f3fb-200d-1f393\"},{\"unified\":\"1f468-1f3fc-200d-1f393\"},{\"unified\":\"1f468-1f3fd-200d-1f393\"},{\"unified\":\"1f468-1f3fe-200d-1f393\"},{\"unified\":\"1f468-1f3ff-200d-1f393\"}],\"female-student\":[{\"unified\":\"1f469-200d-1f393\"},{\"unified\":\"1f469-1f3fb-200d-1f393\"},{\"unified\":\"1f469-1f3fc-200d-1f393\"},{\"unified\":\"1f469-1f3fd-200d-1f393\"},{\"unified\":\"1f469-1f3fe-200d-1f393\"},{\"unified\":\"1f469-1f3ff-200d-1f393\"}],\"teacher\":[{\"unified\":\"1f9d1-200d-1f3eb\"},{\"unified\":\"1f9d1-1f3fb-200d-1f3eb\"},{\"unified\":\"1f9d1-1f3fc-200d-1f3eb\"},{\"unified\":\"1f9d1-1f3fd-200d-1f3eb\"},{\"unified\":\"1f9d1-1f3fe-200d-1f3eb\"},{\"unified\":\"1f9d1-1f3ff-200d-1f3eb\"}],\"male-teacher\":[{\"unified\":\"1f468-200d-1f3eb\"},{\"unified\":\"1f468-1f3fb-200d-1f3eb\"},{\"unified\":\"1f468-1f3fc-200d-1f3eb\"},{\"unified\":\"1f468-1f3fd-200d-1f3eb\"},{\"unified\":\"1f468-1f3fe-200d-1f3eb\"},{\"unified\":\"1f468-1f3ff-200d-1f3eb\"}],\"female-teacher\":[{\"unified\":\"1f469-200d-1f3eb\"},{\"unified\":\"1f469-1f3fb-200d-1f3eb\"},{\"unified\":\"1f469-1f3fc-200d-1f3eb\"},{\"unified\":\"1f469-1f3fd-200d-1f3eb\"},{\"unified\":\"1f469-1f3fe-200d-1f3eb\"},{\"unified\":\"1f469-1f3ff-200d-1f3eb\"}],\"judge\":[{\"unified\":\"1f9d1-200d-2696-fe0f\"},{\"unified\":\"1f9d1-1f3fb-200d-2696-fe0f\"},{\"unified\":\"1f9d1-1f3fc-200d-2696-fe0f\"},{\"unified\":\"1f9d1-1f3fd-200d-2696-fe0f\"},{\"unified\":\"1f9d1-1f3fe-200d-2696-fe0f\"},{\"unified\":\"1f9d1-1f3ff-200d-2696-fe0f\"}],\"male-judge\":[{\"unified\":\"1f468-200d-2696-fe0f\"},{\"unified\":\"1f468-1f3fb-200d-2696-fe0f\"},{\"unified\":\"1f468-1f3fc-200d-2696-fe0f\"},{\"unified\":\"1f468-1f3fd-200d-2696-fe0f\"},{\"unified\":\"1f468-1f3fe-200d-2696-fe0f\"},{\"unified\":\"1f468-1f3ff-200d-2696-fe0f\"}],\"female-judge\":[{\"unified\":\"1f469-200d-2696-fe0f\"},{\"unified\":\"1f469-1f3fb-200d-2696-fe0f\"},{\"unified\":\"1f469-1f3fc-200d-2696-fe0f\"},{\"unified\":\"1f469-1f3fd-200d-2696-fe0f\"},{\"unified\":\"1f469-1f3fe-200d-2696-fe0f\"},{\"unified\":\"1f469-1f3ff-200d-2696-fe0f\"}],\"farmer\":[{\"unified\":\"1f9d1-200d-1f33e\"},{\"unified\":\"1f9d1-1f3fb-200d-1f33e\"},{\"unified\":\"1f9d1-1f3fc-200d-1f33e\"},{\"unified\":\"1f9d1-1f3fd-200d-1f33e\"},{\"unified\":\"1f9d1-1f3fe-200d-1f33e\"},{\"unified\":\"1f9d1-1f3ff-200d-1f33e\"}],\"male-farmer\":[{\"unified\":\"1f468-200d-1f33e\"},{\"unified\":\"1f468-1f3fb-200d-1f33e\"},{\"unified\":\"1f468-1f3fc-200d-1f33e\"},{\"unified\":\"1f468-1f3fd-200d-1f33e\"},{\"unified\":\"1f468-1f3fe-200d-1f33e\"},{\"unified\":\"1f468-1f3ff-200d-1f33e\"}],\"female-farmer\":[{\"unified\":\"1f469-200d-1f33e\"},{\"unified\":\"1f469-1f3fb-200d-1f33e\"},{\"unified\":\"1f469-1f3fc-200d-1f33e\"},{\"unified\":\"1f469-1f3fd-200d-1f33e\"},{\"unified\":\"1f469-1f3fe-200d-1f33e\"},{\"unified\":\"1f469-1f3ff-200d-1f33e\"}],\"cook\":[{\"unified\":\"1f9d1-200d-1f373\"},{\"unified\":\"1f9d1-1f3fb-200d-1f373\"},{\"unified\":\"1f9d1-1f3fc-200d-1f373\"},{\"unified\":\"1f9d1-1f3fd-200d-1f373\"},{\"unified\":\"1f9d1-1f3fe-200d-1f373\"},{\"unified\":\"1f9d1-1f3ff-200d-1f373\"}],\"male-cook\":[{\"unified\":\"1f468-200d-1f373\"},{\"unified\":\"1f468-1f3fb-200d-1f373\"},{\"unified\":\"1f468-1f3fc-200d-1f373\"},{\"unified\":\"1f468-1f3fd-200d-1f373\"},{\"unified\":\"1f468-1f3fe-200d-1f373\"},{\"unified\":\"1f468-1f3ff-200d-1f373\"}],\"female-cook\":[{\"unified\":\"1f469-200d-1f373\"},{\"unified\":\"1f469-1f3fb-200d-1f373\"},{\"unified\":\"1f469-1f3fc-200d-1f373\"},{\"unified\":\"1f469-1f3fd-200d-1f373\"},{\"unified\":\"1f469-1f3fe-200d-1f373\"},{\"unified\":\"1f469-1f3ff-200d-1f373\"}],\"mechanic\":[{\"unified\":\"1f9d1-200d-1f527\"},{\"unified\":\"1f9d1-1f3fb-200d-1f527\"},{\"unified\":\"1f9d1-1f3fc-200d-1f527\"},{\"unified\":\"1f9d1-1f3fd-200d-1f527\"},{\"unified\":\"1f9d1-1f3fe-200d-1f527\"},{\"unified\":\"1f9d1-1f3ff-200d-1f527\"}],\"male-mechanic\":[{\"unified\":\"1f468-200d-1f527\"},{\"unified\":\"1f468-1f3fb-200d-1f527\"},{\"unified\":\"1f468-1f3fc-200d-1f527\"},{\"unified\":\"1f468-1f3fd-200d-1f527\"},{\"unified\":\"1f468-1f3fe-200d-1f527\"},{\"unified\":\"1f468-1f3ff-200d-1f527\"}],\"female-mechanic\":[{\"unified\":\"1f469-200d-1f527\"},{\"unified\":\"1f469-1f3fb-200d-1f527\"},{\"unified\":\"1f469-1f3fc-200d-1f527\"},{\"unified\":\"1f469-1f3fd-200d-1f527\"},{\"unified\":\"1f469-1f3fe-200d-1f527\"},{\"unified\":\"1f469-1f3ff-200d-1f527\"}],\"factory_worker\":[{\"unified\":\"1f9d1-200d-1f3ed\"},{\"unified\":\"1f9d1-1f3fb-200d-1f3ed\"},{\"unified\":\"1f9d1-1f3fc-200d-1f3ed\"},{\"unified\":\"1f9d1-1f3fd-200d-1f3ed\"},{\"unified\":\"1f9d1-1f3fe-200d-1f3ed\"},{\"unified\":\"1f9d1-1f3ff-200d-1f3ed\"}],\"male-factory-worker\":[{\"unified\":\"1f468-200d-1f3ed\"},{\"unified\":\"1f468-1f3fb-200d-1f3ed\"},{\"unified\":\"1f468-1f3fc-200d-1f3ed\"},{\"unified\":\"1f468-1f3fd-200d-1f3ed\"},{\"unified\":\"1f468-1f3fe-200d-1f3ed\"},{\"unified\":\"1f468-1f3ff-200d-1f3ed\"}],\"female-factory-worker\":[{\"unified\":\"1f469-200d-1f3ed\"},{\"unified\":\"1f469-1f3fb-200d-1f3ed\"},{\"unified\":\"1f469-1f3fc-200d-1f3ed\"},{\"unified\":\"1f469-1f3fd-200d-1f3ed\"},{\"unified\":\"1f469-1f3fe-200d-1f3ed\"},{\"unified\":\"1f469-1f3ff-200d-1f3ed\"}],\"office_worker\":[{\"unified\":\"1f9d1-200d-1f4bc\"},{\"unified\":\"1f9d1-1f3fb-200d-1f4bc\"},{\"unified\":\"1f9d1-1f3fc-200d-1f4bc\"},{\"unified\":\"1f9d1-1f3fd-200d-1f4bc\"},{\"unified\":\"1f9d1-1f3fe-200d-1f4bc\"},{\"unified\":\"1f9d1-1f3ff-200d-1f4bc\"}],\"male-office-worker\":[{\"unified\":\"1f468-200d-1f4bc\"},{\"unified\":\"1f468-1f3fb-200d-1f4bc\"},{\"unified\":\"1f468-1f3fc-200d-1f4bc\"},{\"unified\":\"1f468-1f3fd-200d-1f4bc\"},{\"unified\":\"1f468-1f3fe-200d-1f4bc\"},{\"unified\":\"1f468-1f3ff-200d-1f4bc\"}],\"female-office-worker\":[{\"unified\":\"1f469-200d-1f4bc\"},{\"unified\":\"1f469-1f3fb-200d-1f4bc\"},{\"unified\":\"1f469-1f3fc-200d-1f4bc\"},{\"unified\":\"1f469-1f3fd-200d-1f4bc\"},{\"unified\":\"1f469-1f3fe-200d-1f4bc\"},{\"unified\":\"1f469-1f3ff-200d-1f4bc\"}],\"scientist\":[{\"unified\":\"1f9d1-200d-1f52c\"},{\"unified\":\"1f9d1-1f3fb-200d-1f52c\"},{\"unified\":\"1f9d1-1f3fc-200d-1f52c\"},{\"unified\":\"1f9d1-1f3fd-200d-1f52c\"},{\"unified\":\"1f9d1-1f3fe-200d-1f52c\"},{\"unified\":\"1f9d1-1f3ff-200d-1f52c\"}],\"male-scientist\":[{\"unified\":\"1f468-200d-1f52c\"},{\"unified\":\"1f468-1f3fb-200d-1f52c\"},{\"unified\":\"1f468-1f3fc-200d-1f52c\"},{\"unified\":\"1f468-1f3fd-200d-1f52c\"},{\"unified\":\"1f468-1f3fe-200d-1f52c\"},{\"unified\":\"1f468-1f3ff-200d-1f52c\"}],\"female-scientist\":[{\"unified\":\"1f469-200d-1f52c\"},{\"unified\":\"1f469-1f3fb-200d-1f52c\"},{\"unified\":\"1f469-1f3fc-200d-1f52c\"},{\"unified\":\"1f469-1f3fd-200d-1f52c\"},{\"unified\":\"1f469-1f3fe-200d-1f52c\"},{\"unified\":\"1f469-1f3ff-200d-1f52c\"}],\"technologist\":[{\"unified\":\"1f9d1-200d-1f4bb\"},{\"unified\":\"1f9d1-1f3fb-200d-1f4bb\"},{\"unified\":\"1f9d1-1f3fc-200d-1f4bb\"},{\"unified\":\"1f9d1-1f3fd-200d-1f4bb\"},{\"unified\":\"1f9d1-1f3fe-200d-1f4bb\"},{\"unified\":\"1f9d1-1f3ff-200d-1f4bb\"}],\"male-technologist\":[{\"unified\":\"1f468-200d-1f4bb\"},{\"unified\":\"1f468-1f3fb-200d-1f4bb\"},{\"unified\":\"1f468-1f3fc-200d-1f4bb\"},{\"unified\":\"1f468-1f3fd-200d-1f4bb\"},{\"unified\":\"1f468-1f3fe-200d-1f4bb\"},{\"unified\":\"1f468-1f3ff-200d-1f4bb\"}],\"female-technologist\":[{\"unified\":\"1f469-200d-1f4bb\"},{\"unified\":\"1f469-1f3fb-200d-1f4bb\"},{\"unified\":\"1f469-1f3fc-200d-1f4bb\"},{\"unified\":\"1f469-1f3fd-200d-1f4bb\"},{\"unified\":\"1f469-1f3fe-200d-1f4bb\"},{\"unified\":\"1f469-1f3ff-200d-1f4bb\"}],\"singer\":[{\"unified\":\"1f9d1-200d-1f3a4\"},{\"unified\":\"1f9d1-1f3fb-200d-1f3a4\"},{\"unified\":\"1f9d1-1f3fc-200d-1f3a4\"},{\"unified\":\"1f9d1-1f3fd-200d-1f3a4\"},{\"unified\":\"1f9d1-1f3fe-200d-1f3a4\"},{\"unified\":\"1f9d1-1f3ff-200d-1f3a4\"}],\"male-singer\":[{\"unified\":\"1f468-200d-1f3a4\"},{\"unified\":\"1f468-1f3fb-200d-1f3a4\"},{\"unified\":\"1f468-1f3fc-200d-1f3a4\"},{\"unified\":\"1f468-1f3fd-200d-1f3a4\"},{\"unified\":\"1f468-1f3fe-200d-1f3a4\"},{\"unified\":\"1f468-1f3ff-200d-1f3a4\"}],\"female-singer\":[{\"unified\":\"1f469-200d-1f3a4\"},{\"unified\":\"1f469-1f3fb-200d-1f3a4\"},{\"unified\":\"1f469-1f3fc-200d-1f3a4\"},{\"unified\":\"1f469-1f3fd-200d-1f3a4\"},{\"unified\":\"1f469-1f3fe-200d-1f3a4\"},{\"unified\":\"1f469-1f3ff-200d-1f3a4\"}],\"artist\":[{\"unified\":\"1f9d1-200d-1f3a8\"},{\"unified\":\"1f9d1-1f3fb-200d-1f3a8\"},{\"unified\":\"1f9d1-1f3fc-200d-1f3a8\"},{\"unified\":\"1f9d1-1f3fd-200d-1f3a8\"},{\"unified\":\"1f9d1-1f3fe-200d-1f3a8\"},{\"unified\":\"1f9d1-1f3ff-200d-1f3a8\"}],\"male-artist\":[{\"unified\":\"1f468-200d-1f3a8\"},{\"unified\":\"1f468-1f3fb-200d-1f3a8\"},{\"unified\":\"1f468-1f3fc-200d-1f3a8\"},{\"unified\":\"1f468-1f3fd-200d-1f3a8\"},{\"unified\":\"1f468-1f3fe-200d-1f3a8\"},{\"unified\":\"1f468-1f3ff-200d-1f3a8\"}],\"female-artist\":[{\"unified\":\"1f469-200d-1f3a8\"},{\"unified\":\"1f469-1f3fb-200d-1f3a8\"},{\"unified\":\"1f469-1f3fc-200d-1f3a8\"},{\"unified\":\"1f469-1f3fd-200d-1f3a8\"},{\"unified\":\"1f469-1f3fe-200d-1f3a8\"},{\"unified\":\"1f469-1f3ff-200d-1f3a8\"}],\"pilot\":[{\"unified\":\"1f9d1-200d-2708-fe0f\"},{\"unified\":\"1f9d1-1f3fb-200d-2708-fe0f\"},{\"unified\":\"1f9d1-1f3fc-200d-2708-fe0f\"},{\"unified\":\"1f9d1-1f3fd-200d-2708-fe0f\"},{\"unified\":\"1f9d1-1f3fe-200d-2708-fe0f\"},{\"unified\":\"1f9d1-1f3ff-200d-2708-fe0f\"}],\"male-pilot\":[{\"unified\":\"1f468-200d-2708-fe0f\"},{\"unified\":\"1f468-1f3fb-200d-2708-fe0f\"},{\"unified\":\"1f468-1f3fc-200d-2708-fe0f\"},{\"unified\":\"1f468-1f3fd-200d-2708-fe0f\"},{\"unified\":\"1f468-1f3fe-200d-2708-fe0f\"},{\"unified\":\"1f468-1f3ff-200d-2708-fe0f\"}],\"female-pilot\":[{\"unified\":\"1f469-200d-2708-fe0f\"},{\"unified\":\"1f469-1f3fb-200d-2708-fe0f\"},{\"unified\":\"1f469-1f3fc-200d-2708-fe0f\"},{\"unified\":\"1f469-1f3fd-200d-2708-fe0f\"},{\"unified\":\"1f469-1f3fe-200d-2708-fe0f\"},{\"unified\":\"1f469-1f3ff-200d-2708-fe0f\"}],\"astronaut\":[{\"unified\":\"1f9d1-200d-1f680\"},{\"unified\":\"1f9d1-1f3fb-200d-1f680\"},{\"unified\":\"1f9d1-1f3fc-200d-1f680\"},{\"unified\":\"1f9d1-1f3fd-200d-1f680\"},{\"unified\":\"1f9d1-1f3fe-200d-1f680\"},{\"unified\":\"1f9d1-1f3ff-200d-1f680\"}],\"male-astronaut\":[{\"unified\":\"1f468-200d-1f680\"},{\"unified\":\"1f468-1f3fb-200d-1f680\"},{\"unified\":\"1f468-1f3fc-200d-1f680\"},{\"unified\":\"1f468-1f3fd-200d-1f680\"},{\"unified\":\"1f468-1f3fe-200d-1f680\"},{\"unified\":\"1f468-1f3ff-200d-1f680\"}],\"female-astronaut\":[{\"unified\":\"1f469-200d-1f680\"},{\"unified\":\"1f469-1f3fb-200d-1f680\"},{\"unified\":\"1f469-1f3fc-200d-1f680\"},{\"unified\":\"1f469-1f3fd-200d-1f680\"},{\"unified\":\"1f469-1f3fe-200d-1f680\"},{\"unified\":\"1f469-1f3ff-200d-1f680\"}],\"firefighter\":[{\"unified\":\"1f9d1-200d-1f692\"},{\"unified\":\"1f9d1-1f3fb-200d-1f692\"},{\"unified\":\"1f9d1-1f3fc-200d-1f692\"},{\"unified\":\"1f9d1-1f3fd-200d-1f692\"},{\"unified\":\"1f9d1-1f3fe-200d-1f692\"},{\"unified\":\"1f9d1-1f3ff-200d-1f692\"}],\"male-firefighter\":[{\"unified\":\"1f468-200d-1f692\"},{\"unified\":\"1f468-1f3fb-200d-1f692\"},{\"unified\":\"1f468-1f3fc-200d-1f692\"},{\"unified\":\"1f468-1f3fd-200d-1f692\"},{\"unified\":\"1f468-1f3fe-200d-1f692\"},{\"unified\":\"1f468-1f3ff-200d-1f692\"}],\"female-firefighter\":[{\"unified\":\"1f469-200d-1f692\"},{\"unified\":\"1f469-1f3fb-200d-1f692\"},{\"unified\":\"1f469-1f3fc-200d-1f692\"},{\"unified\":\"1f469-1f3fd-200d-1f692\"},{\"unified\":\"1f469-1f3fe-200d-1f692\"},{\"unified\":\"1f469-1f3ff-200d-1f692\"}],\"cop\":[{\"unified\":\"1f46e\"},{\"unified\":\"1f46e-1f3fb\"},{\"unified\":\"1f46e-1f3fc\"},{\"unified\":\"1f46e-1f3fd\"},{\"unified\":\"1f46e-1f3fe\"},{\"unified\":\"1f46e-1f3ff\"}],\"male-police-officer\":[{\"unified\":\"1f46e-200d-2642-fe0f\"},{\"unified\":\"1f46e-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f46e-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f46e-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f46e-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f46e-1f3ff-200d-2642-fe0f\"}],\"female-police-officer\":[{\"unified\":\"1f46e-200d-2640-fe0f\"},{\"unified\":\"1f46e-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f46e-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f46e-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f46e-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f46e-1f3ff-200d-2640-fe0f\"}],\"sleuth_or_spy\":[{\"unified\":\"1f575-fe0f\"},{\"unified\":\"1f575-1f3fb\"},{\"unified\":\"1f575-1f3fc\"},{\"unified\":\"1f575-1f3fd\"},{\"unified\":\"1f575-1f3fe\"},{\"unified\":\"1f575-1f3ff\"}],\"male-detective\":[{\"unified\":\"1f575-fe0f-200d-2642-fe0f\"},{\"unified\":\"1f575-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f575-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f575-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f575-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f575-1f3ff-200d-2642-fe0f\"}],\"female-detective\":[{\"unified\":\"1f575-fe0f-200d-2640-fe0f\"},{\"unified\":\"1f575-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f575-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f575-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f575-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f575-1f3ff-200d-2640-fe0f\"}],\"guardsman\":[{\"unified\":\"1f482\"},{\"unified\":\"1f482-1f3fb\"},{\"unified\":\"1f482-1f3fc\"},{\"unified\":\"1f482-1f3fd\"},{\"unified\":\"1f482-1f3fe\"},{\"unified\":\"1f482-1f3ff\"}],\"male-guard\":[{\"unified\":\"1f482-200d-2642-fe0f\"},{\"unified\":\"1f482-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f482-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f482-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f482-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f482-1f3ff-200d-2642-fe0f\"}],\"female-guard\":[{\"unified\":\"1f482-200d-2640-fe0f\"},{\"unified\":\"1f482-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f482-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f482-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f482-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f482-1f3ff-200d-2640-fe0f\"}],\"ninja\":[{\"unified\":\"1f977\"},{\"unified\":\"1f977-1f3fb\"},{\"unified\":\"1f977-1f3fc\"},{\"unified\":\"1f977-1f3fd\"},{\"unified\":\"1f977-1f3fe\"},{\"unified\":\"1f977-1f3ff\"}],\"construction_worker\":[{\"unified\":\"1f477\"},{\"unified\":\"1f477-1f3fb\"},{\"unified\":\"1f477-1f3fc\"},{\"unified\":\"1f477-1f3fd\"},{\"unified\":\"1f477-1f3fe\"},{\"unified\":\"1f477-1f3ff\"}],\"male-construction-worker\":[{\"unified\":\"1f477-200d-2642-fe0f\"},{\"unified\":\"1f477-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f477-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f477-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f477-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f477-1f3ff-200d-2642-fe0f\"}],\"female-construction-worker\":[{\"unified\":\"1f477-200d-2640-fe0f\"},{\"unified\":\"1f477-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f477-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f477-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f477-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f477-1f3ff-200d-2640-fe0f\"}],\"person_with_crown\":[{\"unified\":\"1fac5\"},{\"unified\":\"1fac5-1f3fb\"},{\"unified\":\"1fac5-1f3fc\"},{\"unified\":\"1fac5-1f3fd\"},{\"unified\":\"1fac5-1f3fe\"},{\"unified\":\"1fac5-1f3ff\"}],\"prince\":[{\"unified\":\"1f934\"},{\"unified\":\"1f934-1f3fb\"},{\"unified\":\"1f934-1f3fc\"},{\"unified\":\"1f934-1f3fd\"},{\"unified\":\"1f934-1f3fe\"},{\"unified\":\"1f934-1f3ff\"}],\"princess\":[{\"unified\":\"1f478\"},{\"unified\":\"1f478-1f3fb\"},{\"unified\":\"1f478-1f3fc\"},{\"unified\":\"1f478-1f3fd\"},{\"unified\":\"1f478-1f3fe\"},{\"unified\":\"1f478-1f3ff\"}],\"man_with_turban\":[{\"unified\":\"1f473\"},{\"unified\":\"1f473-1f3fb\"},{\"unified\":\"1f473-1f3fc\"},{\"unified\":\"1f473-1f3fd\"},{\"unified\":\"1f473-1f3fe\"},{\"unified\":\"1f473-1f3ff\"}],\"man-wearing-turban\":[{\"unified\":\"1f473-200d-2642-fe0f\"},{\"unified\":\"1f473-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f473-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f473-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f473-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f473-1f3ff-200d-2642-fe0f\"}],\"woman-wearing-turban\":[{\"unified\":\"1f473-200d-2640-fe0f\"},{\"unified\":\"1f473-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f473-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f473-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f473-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f473-1f3ff-200d-2640-fe0f\"}],\"man_with_gua_pi_mao\":[{\"unified\":\"1f472\"},{\"unified\":\"1f472-1f3fb\"},{\"unified\":\"1f472-1f3fc\"},{\"unified\":\"1f472-1f3fd\"},{\"unified\":\"1f472-1f3fe\"},{\"unified\":\"1f472-1f3ff\"}],\"person_with_headscarf\":[{\"unified\":\"1f9d5\"},{\"unified\":\"1f9d5-1f3fb\"},{\"unified\":\"1f9d5-1f3fc\"},{\"unified\":\"1f9d5-1f3fd\"},{\"unified\":\"1f9d5-1f3fe\"},{\"unified\":\"1f9d5-1f3ff\"}],\"person_in_tuxedo\":[{\"unified\":\"1f935\"},{\"unified\":\"1f935-1f3fb\"},{\"unified\":\"1f935-1f3fc\"},{\"unified\":\"1f935-1f3fd\"},{\"unified\":\"1f935-1f3fe\"},{\"unified\":\"1f935-1f3ff\"}],\"man_in_tuxedo\":[{\"unified\":\"1f935-200d-2642-fe0f\"},{\"unified\":\"1f935-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f935-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f935-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f935-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f935-1f3ff-200d-2642-fe0f\"}],\"woman_in_tuxedo\":[{\"unified\":\"1f935-200d-2640-fe0f\"},{\"unified\":\"1f935-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f935-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f935-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f935-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f935-1f3ff-200d-2640-fe0f\"}],\"bride_with_veil\":[{\"unified\":\"1f470\"},{\"unified\":\"1f470-1f3fb\"},{\"unified\":\"1f470-1f3fc\"},{\"unified\":\"1f470-1f3fd\"},{\"unified\":\"1f470-1f3fe\"},{\"unified\":\"1f470-1f3ff\"}],\"man_with_veil\":[{\"unified\":\"1f470-200d-2642-fe0f\"},{\"unified\":\"1f470-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f470-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f470-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f470-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f470-1f3ff-200d-2642-fe0f\"}],\"woman_with_veil\":[{\"unified\":\"1f470-200d-2640-fe0f\"},{\"unified\":\"1f470-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f470-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f470-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f470-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f470-1f3ff-200d-2640-fe0f\"}],\"pregnant_woman\":[{\"unified\":\"1f930\"},{\"unified\":\"1f930-1f3fb\"},{\"unified\":\"1f930-1f3fc\"},{\"unified\":\"1f930-1f3fd\"},{\"unified\":\"1f930-1f3fe\"},{\"unified\":\"1f930-1f3ff\"}],\"pregnant_man\":[{\"unified\":\"1fac3\"},{\"unified\":\"1fac3-1f3fb\"},{\"unified\":\"1fac3-1f3fc\"},{\"unified\":\"1fac3-1f3fd\"},{\"unified\":\"1fac3-1f3fe\"},{\"unified\":\"1fac3-1f3ff\"}],\"pregnant_person\":[{\"unified\":\"1fac4\"},{\"unified\":\"1fac4-1f3fb\"},{\"unified\":\"1fac4-1f3fc\"},{\"unified\":\"1fac4-1f3fd\"},{\"unified\":\"1fac4-1f3fe\"},{\"unified\":\"1fac4-1f3ff\"}],\"breast-feeding\":[{\"unified\":\"1f931\"},{\"unified\":\"1f931-1f3fb\"},{\"unified\":\"1f931-1f3fc\"},{\"unified\":\"1f931-1f3fd\"},{\"unified\":\"1f931-1f3fe\"},{\"unified\":\"1f931-1f3ff\"}],\"woman_feeding_baby\":[{\"unified\":\"1f469-200d-1f37c\"},{\"unified\":\"1f469-1f3fb-200d-1f37c\"},{\"unified\":\"1f469-1f3fc-200d-1f37c\"},{\"unified\":\"1f469-1f3fd-200d-1f37c\"},{\"unified\":\"1f469-1f3fe-200d-1f37c\"},{\"unified\":\"1f469-1f3ff-200d-1f37c\"}],\"man_feeding_baby\":[{\"unified\":\"1f468-200d-1f37c\"},{\"unified\":\"1f468-1f3fb-200d-1f37c\"},{\"unified\":\"1f468-1f3fc-200d-1f37c\"},{\"unified\":\"1f468-1f3fd-200d-1f37c\"},{\"unified\":\"1f468-1f3fe-200d-1f37c\"},{\"unified\":\"1f468-1f3ff-200d-1f37c\"}],\"person_feeding_baby\":[{\"unified\":\"1f9d1-200d-1f37c\"},{\"unified\":\"1f9d1-1f3fb-200d-1f37c\"},{\"unified\":\"1f9d1-1f3fc-200d-1f37c\"},{\"unified\":\"1f9d1-1f3fd-200d-1f37c\"},{\"unified\":\"1f9d1-1f3fe-200d-1f37c\"},{\"unified\":\"1f9d1-1f3ff-200d-1f37c\"}],\"angel\":[{\"unified\":\"1f47c\"},{\"unified\":\"1f47c-1f3fb\"},{\"unified\":\"1f47c-1f3fc\"},{\"unified\":\"1f47c-1f3fd\"},{\"unified\":\"1f47c-1f3fe\"},{\"unified\":\"1f47c-1f3ff\"}],\"santa\":[{\"unified\":\"1f385\"},{\"unified\":\"1f385-1f3fb\"},{\"unified\":\"1f385-1f3fc\"},{\"unified\":\"1f385-1f3fd\"},{\"unified\":\"1f385-1f3fe\"},{\"unified\":\"1f385-1f3ff\"}],\"mrs_claus\":[{\"unified\":\"1f936\"},{\"unified\":\"1f936-1f3fb\"},{\"unified\":\"1f936-1f3fc\"},{\"unified\":\"1f936-1f3fd\"},{\"unified\":\"1f936-1f3fe\"},{\"unified\":\"1f936-1f3ff\"}],\"mx_claus\":[{\"unified\":\"1f9d1-200d-1f384\"},{\"unified\":\"1f9d1-1f3fb-200d-1f384\"},{\"unified\":\"1f9d1-1f3fc-200d-1f384\"},{\"unified\":\"1f9d1-1f3fd-200d-1f384\"},{\"unified\":\"1f9d1-1f3fe-200d-1f384\"},{\"unified\":\"1f9d1-1f3ff-200d-1f384\"}],\"superhero\":[{\"unified\":\"1f9b8\"},{\"unified\":\"1f9b8-1f3fb\"},{\"unified\":\"1f9b8-1f3fc\"},{\"unified\":\"1f9b8-1f3fd\"},{\"unified\":\"1f9b8-1f3fe\"},{\"unified\":\"1f9b8-1f3ff\"}],\"male_superhero\":[{\"unified\":\"1f9b8-200d-2642-fe0f\"},{\"unified\":\"1f9b8-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9b8-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9b8-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9b8-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9b8-1f3ff-200d-2642-fe0f\"}],\"female_superhero\":[{\"unified\":\"1f9b8-200d-2640-fe0f\"},{\"unified\":\"1f9b8-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9b8-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9b8-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9b8-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9b8-1f3ff-200d-2640-fe0f\"}],\"supervillain\":[{\"unified\":\"1f9b9\"},{\"unified\":\"1f9b9-1f3fb\"},{\"unified\":\"1f9b9-1f3fc\"},{\"unified\":\"1f9b9-1f3fd\"},{\"unified\":\"1f9b9-1f3fe\"},{\"unified\":\"1f9b9-1f3ff\"}],\"male_supervillain\":[{\"unified\":\"1f9b9-200d-2642-fe0f\"},{\"unified\":\"1f9b9-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9b9-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9b9-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9b9-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9b9-1f3ff-200d-2642-fe0f\"}],\"female_supervillain\":[{\"unified\":\"1f9b9-200d-2640-fe0f\"},{\"unified\":\"1f9b9-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9b9-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9b9-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9b9-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9b9-1f3ff-200d-2640-fe0f\"}],\"mage\":[{\"unified\":\"1f9d9\"},{\"unified\":\"1f9d9-1f3fb\"},{\"unified\":\"1f9d9-1f3fc\"},{\"unified\":\"1f9d9-1f3fd\"},{\"unified\":\"1f9d9-1f3fe\"},{\"unified\":\"1f9d9-1f3ff\"}],\"male_mage\":[{\"unified\":\"1f9d9-200d-2642-fe0f\"},{\"unified\":\"1f9d9-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9d9-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9d9-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9d9-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9d9-1f3ff-200d-2642-fe0f\"}],\"female_mage\":[{\"unified\":\"1f9d9-200d-2640-fe0f\"},{\"unified\":\"1f9d9-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9d9-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9d9-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9d9-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9d9-1f3ff-200d-2640-fe0f\"}],\"fairy\":[{\"unified\":\"1f9da\"},{\"unified\":\"1f9da-1f3fb\"},{\"unified\":\"1f9da-1f3fc\"},{\"unified\":\"1f9da-1f3fd\"},{\"unified\":\"1f9da-1f3fe\"},{\"unified\":\"1f9da-1f3ff\"}],\"male_fairy\":[{\"unified\":\"1f9da-200d-2642-fe0f\"},{\"unified\":\"1f9da-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9da-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9da-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9da-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9da-1f3ff-200d-2642-fe0f\"}],\"female_fairy\":[{\"unified\":\"1f9da-200d-2640-fe0f\"},{\"unified\":\"1f9da-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9da-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9da-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9da-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9da-1f3ff-200d-2640-fe0f\"}],\"vampire\":[{\"unified\":\"1f9db\"},{\"unified\":\"1f9db-1f3fb\"},{\"unified\":\"1f9db-1f3fc\"},{\"unified\":\"1f9db-1f3fd\"},{\"unified\":\"1f9db-1f3fe\"},{\"unified\":\"1f9db-1f3ff\"}],\"male_vampire\":[{\"unified\":\"1f9db-200d-2642-fe0f\"},{\"unified\":\"1f9db-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9db-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9db-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9db-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9db-1f3ff-200d-2642-fe0f\"}],\"female_vampire\":[{\"unified\":\"1f9db-200d-2640-fe0f\"},{\"unified\":\"1f9db-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9db-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9db-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9db-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9db-1f3ff-200d-2640-fe0f\"}],\"merperson\":[{\"unified\":\"1f9dc\"},{\"unified\":\"1f9dc-1f3fb\"},{\"unified\":\"1f9dc-1f3fc\"},{\"unified\":\"1f9dc-1f3fd\"},{\"unified\":\"1f9dc-1f3fe\"},{\"unified\":\"1f9dc-1f3ff\"}],\"merman\":[{\"unified\":\"1f9dc-200d-2642-fe0f\"},{\"unified\":\"1f9dc-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9dc-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9dc-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9dc-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9dc-1f3ff-200d-2642-fe0f\"}],\"mermaid\":[{\"unified\":\"1f9dc-200d-2640-fe0f\"},{\"unified\":\"1f9dc-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9dc-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9dc-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9dc-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9dc-1f3ff-200d-2640-fe0f\"}],\"elf\":[{\"unified\":\"1f9dd\"},{\"unified\":\"1f9dd-1f3fb\"},{\"unified\":\"1f9dd-1f3fc\"},{\"unified\":\"1f9dd-1f3fd\"},{\"unified\":\"1f9dd-1f3fe\"},{\"unified\":\"1f9dd-1f3ff\"}],\"male_elf\":[{\"unified\":\"1f9dd-200d-2642-fe0f\"},{\"unified\":\"1f9dd-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9dd-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9dd-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9dd-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9dd-1f3ff-200d-2642-fe0f\"}],\"female_elf\":[{\"unified\":\"1f9dd-200d-2640-fe0f\"},{\"unified\":\"1f9dd-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9dd-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9dd-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9dd-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9dd-1f3ff-200d-2640-fe0f\"}],\"genie\":[{\"unified\":\"1f9de\"}],\"male_genie\":[{\"unified\":\"1f9de-200d-2642-fe0f\"}],\"female_genie\":[{\"unified\":\"1f9de-200d-2640-fe0f\"}],\"zombie\":[{\"unified\":\"1f9df\"}],\"male_zombie\":[{\"unified\":\"1f9df-200d-2642-fe0f\"}],\"female_zombie\":[{\"unified\":\"1f9df-200d-2640-fe0f\"}],\"troll\":[{\"unified\":\"1f9cc\"}],\"massage\":[{\"unified\":\"1f486\"},{\"unified\":\"1f486-1f3fb\"},{\"unified\":\"1f486-1f3fc\"},{\"unified\":\"1f486-1f3fd\"},{\"unified\":\"1f486-1f3fe\"},{\"unified\":\"1f486-1f3ff\"}],\"man-getting-massage\":[{\"unified\":\"1f486-200d-2642-fe0f\"},{\"unified\":\"1f486-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f486-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f486-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f486-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f486-1f3ff-200d-2642-fe0f\"}],\"woman-getting-massage\":[{\"unified\":\"1f486-200d-2640-fe0f\"},{\"unified\":\"1f486-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f486-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f486-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f486-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f486-1f3ff-200d-2640-fe0f\"}],\"haircut\":[{\"unified\":\"1f487\"},{\"unified\":\"1f487-1f3fb\"},{\"unified\":\"1f487-1f3fc\"},{\"unified\":\"1f487-1f3fd\"},{\"unified\":\"1f487-1f3fe\"},{\"unified\":\"1f487-1f3ff\"}],\"man-getting-haircut\":[{\"unified\":\"1f487-200d-2642-fe0f\"},{\"unified\":\"1f487-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f487-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f487-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f487-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f487-1f3ff-200d-2642-fe0f\"}],\"woman-getting-haircut\":[{\"unified\":\"1f487-200d-2640-fe0f\"},{\"unified\":\"1f487-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f487-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f487-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f487-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f487-1f3ff-200d-2640-fe0f\"}],\"walking\":[{\"unified\":\"1f6b6\"},{\"unified\":\"1f6b6-1f3fb\"},{\"unified\":\"1f6b6-1f3fc\"},{\"unified\":\"1f6b6-1f3fd\"},{\"unified\":\"1f6b6-1f3fe\"},{\"unified\":\"1f6b6-1f3ff\"}],\"man-walking\":[{\"unified\":\"1f6b6-200d-2642-fe0f\"},{\"unified\":\"1f6b6-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f6b6-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f6b6-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f6b6-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f6b6-1f3ff-200d-2642-fe0f\"}],\"woman-walking\":[{\"unified\":\"1f6b6-200d-2640-fe0f\"},{\"unified\":\"1f6b6-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f6b6-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f6b6-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f6b6-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f6b6-1f3ff-200d-2640-fe0f\"}],\"standing_person\":[{\"unified\":\"1f9cd\"},{\"unified\":\"1f9cd-1f3fb\"},{\"unified\":\"1f9cd-1f3fc\"},{\"unified\":\"1f9cd-1f3fd\"},{\"unified\":\"1f9cd-1f3fe\"},{\"unified\":\"1f9cd-1f3ff\"}],\"man_standing\":[{\"unified\":\"1f9cd-200d-2642-fe0f\"},{\"unified\":\"1f9cd-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9cd-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9cd-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9cd-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9cd-1f3ff-200d-2642-fe0f\"}],\"woman_standing\":[{\"unified\":\"1f9cd-200d-2640-fe0f\"},{\"unified\":\"1f9cd-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9cd-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9cd-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9cd-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9cd-1f3ff-200d-2640-fe0f\"}],\"kneeling_person\":[{\"unified\":\"1f9ce\"},{\"unified\":\"1f9ce-1f3fb\"},{\"unified\":\"1f9ce-1f3fc\"},{\"unified\":\"1f9ce-1f3fd\"},{\"unified\":\"1f9ce-1f3fe\"},{\"unified\":\"1f9ce-1f3ff\"}],\"man_kneeling\":[{\"unified\":\"1f9ce-200d-2642-fe0f\"},{\"unified\":\"1f9ce-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9ce-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9ce-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9ce-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9ce-1f3ff-200d-2642-fe0f\"}],\"woman_kneeling\":[{\"unified\":\"1f9ce-200d-2640-fe0f\"},{\"unified\":\"1f9ce-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9ce-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9ce-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9ce-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9ce-1f3ff-200d-2640-fe0f\"}],\"person_with_probing_cane\":[{\"unified\":\"1f9d1-200d-1f9af\"},{\"unified\":\"1f9d1-1f3fb-200d-1f9af\"},{\"unified\":\"1f9d1-1f3fc-200d-1f9af\"},{\"unified\":\"1f9d1-1f3fd-200d-1f9af\"},{\"unified\":\"1f9d1-1f3fe-200d-1f9af\"},{\"unified\":\"1f9d1-1f3ff-200d-1f9af\"}],\"man_with_probing_cane\":[{\"unified\":\"1f468-200d-1f9af\"},{\"unified\":\"1f468-1f3fb-200d-1f9af\"},{\"unified\":\"1f468-1f3fc-200d-1f9af\"},{\"unified\":\"1f468-1f3fd-200d-1f9af\"},{\"unified\":\"1f468-1f3fe-200d-1f9af\"},{\"unified\":\"1f468-1f3ff-200d-1f9af\"}],\"woman_with_probing_cane\":[{\"unified\":\"1f469-200d-1f9af\"},{\"unified\":\"1f469-1f3fb-200d-1f9af\"},{\"unified\":\"1f469-1f3fc-200d-1f9af\"},{\"unified\":\"1f469-1f3fd-200d-1f9af\"},{\"unified\":\"1f469-1f3fe-200d-1f9af\"},{\"unified\":\"1f469-1f3ff-200d-1f9af\"}],\"person_in_motorized_wheelchair\":[{\"unified\":\"1f9d1-200d-1f9bc\"},{\"unified\":\"1f9d1-1f3fb-200d-1f9bc\"},{\"unified\":\"1f9d1-1f3fc-200d-1f9bc\"},{\"unified\":\"1f9d1-1f3fd-200d-1f9bc\"},{\"unified\":\"1f9d1-1f3fe-200d-1f9bc\"},{\"unified\":\"1f9d1-1f3ff-200d-1f9bc\"}],\"man_in_motorized_wheelchair\":[{\"unified\":\"1f468-200d-1f9bc\"},{\"unified\":\"1f468-1f3fb-200d-1f9bc\"},{\"unified\":\"1f468-1f3fc-200d-1f9bc\"},{\"unified\":\"1f468-1f3fd-200d-1f9bc\"},{\"unified\":\"1f468-1f3fe-200d-1f9bc\"},{\"unified\":\"1f468-1f3ff-200d-1f9bc\"}],\"woman_in_motorized_wheelchair\":[{\"unified\":\"1f469-200d-1f9bc\"},{\"unified\":\"1f469-1f3fb-200d-1f9bc\"},{\"unified\":\"1f469-1f3fc-200d-1f9bc\"},{\"unified\":\"1f469-1f3fd-200d-1f9bc\"},{\"unified\":\"1f469-1f3fe-200d-1f9bc\"},{\"unified\":\"1f469-1f3ff-200d-1f9bc\"}],\"person_in_manual_wheelchair\":[{\"unified\":\"1f9d1-200d-1f9bd\"},{\"unified\":\"1f9d1-1f3fb-200d-1f9bd\"},{\"unified\":\"1f9d1-1f3fc-200d-1f9bd\"},{\"unified\":\"1f9d1-1f3fd-200d-1f9bd\"},{\"unified\":\"1f9d1-1f3fe-200d-1f9bd\"},{\"unified\":\"1f9d1-1f3ff-200d-1f9bd\"}],\"man_in_manual_wheelchair\":[{\"unified\":\"1f468-200d-1f9bd\"},{\"unified\":\"1f468-1f3fb-200d-1f9bd\"},{\"unified\":\"1f468-1f3fc-200d-1f9bd\"},{\"unified\":\"1f468-1f3fd-200d-1f9bd\"},{\"unified\":\"1f468-1f3fe-200d-1f9bd\"},{\"unified\":\"1f468-1f3ff-200d-1f9bd\"}],\"woman_in_manual_wheelchair\":[{\"unified\":\"1f469-200d-1f9bd\"},{\"unified\":\"1f469-1f3fb-200d-1f9bd\"},{\"unified\":\"1f469-1f3fc-200d-1f9bd\"},{\"unified\":\"1f469-1f3fd-200d-1f9bd\"},{\"unified\":\"1f469-1f3fe-200d-1f9bd\"},{\"unified\":\"1f469-1f3ff-200d-1f9bd\"}],\"runner\":[{\"unified\":\"1f3c3\"},{\"unified\":\"1f3c3-1f3fb\"},{\"unified\":\"1f3c3-1f3fc\"},{\"unified\":\"1f3c3-1f3fd\"},{\"unified\":\"1f3c3-1f3fe\"},{\"unified\":\"1f3c3-1f3ff\"}],\"man-running\":[{\"unified\":\"1f3c3-200d-2642-fe0f\"},{\"unified\":\"1f3c3-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f3c3-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f3c3-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f3c3-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f3c3-1f3ff-200d-2642-fe0f\"}],\"woman-running\":[{\"unified\":\"1f3c3-200d-2640-fe0f\"},{\"unified\":\"1f3c3-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f3c3-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f3c3-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f3c3-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f3c3-1f3ff-200d-2640-fe0f\"}],\"dancer\":[{\"unified\":\"1f483\"},{\"unified\":\"1f483-1f3fb\"},{\"unified\":\"1f483-1f3fc\"},{\"unified\":\"1f483-1f3fd\"},{\"unified\":\"1f483-1f3fe\"},{\"unified\":\"1f483-1f3ff\"}],\"man_dancing\":[{\"unified\":\"1f57a\"},{\"unified\":\"1f57a-1f3fb\"},{\"unified\":\"1f57a-1f3fc\"},{\"unified\":\"1f57a-1f3fd\"},{\"unified\":\"1f57a-1f3fe\"},{\"unified\":\"1f57a-1f3ff\"}],\"man_in_business_suit_levitating\":[{\"unified\":\"1f574-fe0f\"},{\"unified\":\"1f574-1f3fb\"},{\"unified\":\"1f574-1f3fc\"},{\"unified\":\"1f574-1f3fd\"},{\"unified\":\"1f574-1f3fe\"},{\"unified\":\"1f574-1f3ff\"}],\"dancers\":[{\"unified\":\"1f46f\"}],\"men-with-bunny-ears-partying\":[{\"unified\":\"1f46f-200d-2642-fe0f\"}],\"women-with-bunny-ears-partying\":[{\"unified\":\"1f46f-200d-2640-fe0f\"}],\"person_in_steamy_room\":[{\"unified\":\"1f9d6\"},{\"unified\":\"1f9d6-1f3fb\"},{\"unified\":\"1f9d6-1f3fc\"},{\"unified\":\"1f9d6-1f3fd\"},{\"unified\":\"1f9d6-1f3fe\"},{\"unified\":\"1f9d6-1f3ff\"}],\"man_in_steamy_room\":[{\"unified\":\"1f9d6-200d-2642-fe0f\"},{\"unified\":\"1f9d6-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9d6-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9d6-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9d6-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9d6-1f3ff-200d-2642-fe0f\"}],\"woman_in_steamy_room\":[{\"unified\":\"1f9d6-200d-2640-fe0f\"},{\"unified\":\"1f9d6-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9d6-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9d6-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9d6-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9d6-1f3ff-200d-2640-fe0f\"}],\"person_climbing\":[{\"unified\":\"1f9d7\"},{\"unified\":\"1f9d7-1f3fb\"},{\"unified\":\"1f9d7-1f3fc\"},{\"unified\":\"1f9d7-1f3fd\"},{\"unified\":\"1f9d7-1f3fe\"},{\"unified\":\"1f9d7-1f3ff\"}],\"man_climbing\":[{\"unified\":\"1f9d7-200d-2642-fe0f\"},{\"unified\":\"1f9d7-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9d7-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9d7-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9d7-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9d7-1f3ff-200d-2642-fe0f\"}],\"woman_climbing\":[{\"unified\":\"1f9d7-200d-2640-fe0f\"},{\"unified\":\"1f9d7-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9d7-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9d7-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9d7-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9d7-1f3ff-200d-2640-fe0f\"}],\"fencer\":[{\"unified\":\"1f93a\"}],\"horse_racing\":[{\"unified\":\"1f3c7\"},{\"unified\":\"1f3c7-1f3fb\"},{\"unified\":\"1f3c7-1f3fc\"},{\"unified\":\"1f3c7-1f3fd\"},{\"unified\":\"1f3c7-1f3fe\"},{\"unified\":\"1f3c7-1f3ff\"}],\"skier\":[{\"unified\":\"26f7-fe0f\"}],\"snowboarder\":[{\"unified\":\"1f3c2\"},{\"unified\":\"1f3c2-1f3fb\"},{\"unified\":\"1f3c2-1f3fc\"},{\"unified\":\"1f3c2-1f3fd\"},{\"unified\":\"1f3c2-1f3fe\"},{\"unified\":\"1f3c2-1f3ff\"}],\"golfer\":[{\"unified\":\"1f3cc-fe0f\"},{\"unified\":\"1f3cc-1f3fb\"},{\"unified\":\"1f3cc-1f3fc\"},{\"unified\":\"1f3cc-1f3fd\"},{\"unified\":\"1f3cc-1f3fe\"},{\"unified\":\"1f3cc-1f3ff\"}],\"man-golfing\":[{\"unified\":\"1f3cc-fe0f-200d-2642-fe0f\"},{\"unified\":\"1f3cc-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f3cc-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f3cc-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f3cc-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f3cc-1f3ff-200d-2642-fe0f\"}],\"woman-golfing\":[{\"unified\":\"1f3cc-fe0f-200d-2640-fe0f\"},{\"unified\":\"1f3cc-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f3cc-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f3cc-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f3cc-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f3cc-1f3ff-200d-2640-fe0f\"}],\"surfer\":[{\"unified\":\"1f3c4\"},{\"unified\":\"1f3c4-1f3fb\"},{\"unified\":\"1f3c4-1f3fc\"},{\"unified\":\"1f3c4-1f3fd\"},{\"unified\":\"1f3c4-1f3fe\"},{\"unified\":\"1f3c4-1f3ff\"}],\"man-surfing\":[{\"unified\":\"1f3c4-200d-2642-fe0f\"},{\"unified\":\"1f3c4-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f3c4-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f3c4-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f3c4-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f3c4-1f3ff-200d-2642-fe0f\"}],\"woman-surfing\":[{\"unified\":\"1f3c4-200d-2640-fe0f\"},{\"unified\":\"1f3c4-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f3c4-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f3c4-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f3c4-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f3c4-1f3ff-200d-2640-fe0f\"}],\"rowboat\":[{\"unified\":\"1f6a3\"},{\"unified\":\"1f6a3-1f3fb\"},{\"unified\":\"1f6a3-1f3fc\"},{\"unified\":\"1f6a3-1f3fd\"},{\"unified\":\"1f6a3-1f3fe\"},{\"unified\":\"1f6a3-1f3ff\"}],\"man-rowing-boat\":[{\"unified\":\"1f6a3-200d-2642-fe0f\"},{\"unified\":\"1f6a3-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f6a3-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f6a3-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f6a3-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f6a3-1f3ff-200d-2642-fe0f\"}],\"woman-rowing-boat\":[{\"unified\":\"1f6a3-200d-2640-fe0f\"},{\"unified\":\"1f6a3-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f6a3-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f6a3-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f6a3-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f6a3-1f3ff-200d-2640-fe0f\"}],\"swimmer\":[{\"unified\":\"1f3ca\"},{\"unified\":\"1f3ca-1f3fb\"},{\"unified\":\"1f3ca-1f3fc\"},{\"unified\":\"1f3ca-1f3fd\"},{\"unified\":\"1f3ca-1f3fe\"},{\"unified\":\"1f3ca-1f3ff\"}],\"man-swimming\":[{\"unified\":\"1f3ca-200d-2642-fe0f\"},{\"unified\":\"1f3ca-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f3ca-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f3ca-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f3ca-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f3ca-1f3ff-200d-2642-fe0f\"}],\"woman-swimming\":[{\"unified\":\"1f3ca-200d-2640-fe0f\"},{\"unified\":\"1f3ca-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f3ca-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f3ca-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f3ca-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f3ca-1f3ff-200d-2640-fe0f\"}],\"person_with_ball\":[{\"unified\":\"26f9-fe0f\"},{\"unified\":\"26f9-1f3fb\"},{\"unified\":\"26f9-1f3fc\"},{\"unified\":\"26f9-1f3fd\"},{\"unified\":\"26f9-1f3fe\"},{\"unified\":\"26f9-1f3ff\"}],\"man-bouncing-ball\":[{\"unified\":\"26f9-fe0f-200d-2642-fe0f\"},{\"unified\":\"26f9-1f3fb-200d-2642-fe0f\"},{\"unified\":\"26f9-1f3fc-200d-2642-fe0f\"},{\"unified\":\"26f9-1f3fd-200d-2642-fe0f\"},{\"unified\":\"26f9-1f3fe-200d-2642-fe0f\"},{\"unified\":\"26f9-1f3ff-200d-2642-fe0f\"}],\"woman-bouncing-ball\":[{\"unified\":\"26f9-fe0f-200d-2640-fe0f\"},{\"unified\":\"26f9-1f3fb-200d-2640-fe0f\"},{\"unified\":\"26f9-1f3fc-200d-2640-fe0f\"},{\"unified\":\"26f9-1f3fd-200d-2640-fe0f\"},{\"unified\":\"26f9-1f3fe-200d-2640-fe0f\"},{\"unified\":\"26f9-1f3ff-200d-2640-fe0f\"}],\"weight_lifter\":[{\"unified\":\"1f3cb-fe0f\"},{\"unified\":\"1f3cb-1f3fb\"},{\"unified\":\"1f3cb-1f3fc\"},{\"unified\":\"1f3cb-1f3fd\"},{\"unified\":\"1f3cb-1f3fe\"},{\"unified\":\"1f3cb-1f3ff\"}],\"man-lifting-weights\":[{\"unified\":\"1f3cb-fe0f-200d-2642-fe0f\"},{\"unified\":\"1f3cb-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f3cb-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f3cb-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f3cb-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f3cb-1f3ff-200d-2642-fe0f\"}],\"woman-lifting-weights\":[{\"unified\":\"1f3cb-fe0f-200d-2640-fe0f\"},{\"unified\":\"1f3cb-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f3cb-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f3cb-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f3cb-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f3cb-1f3ff-200d-2640-fe0f\"}],\"bicyclist\":[{\"unified\":\"1f6b4\"},{\"unified\":\"1f6b4-1f3fb\"},{\"unified\":\"1f6b4-1f3fc\"},{\"unified\":\"1f6b4-1f3fd\"},{\"unified\":\"1f6b4-1f3fe\"},{\"unified\":\"1f6b4-1f3ff\"}],\"man-biking\":[{\"unified\":\"1f6b4-200d-2642-fe0f\"},{\"unified\":\"1f6b4-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f6b4-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f6b4-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f6b4-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f6b4-1f3ff-200d-2642-fe0f\"}],\"woman-biking\":[{\"unified\":\"1f6b4-200d-2640-fe0f\"},{\"unified\":\"1f6b4-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f6b4-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f6b4-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f6b4-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f6b4-1f3ff-200d-2640-fe0f\"}],\"mountain_bicyclist\":[{\"unified\":\"1f6b5\"},{\"unified\":\"1f6b5-1f3fb\"},{\"unified\":\"1f6b5-1f3fc\"},{\"unified\":\"1f6b5-1f3fd\"},{\"unified\":\"1f6b5-1f3fe\"},{\"unified\":\"1f6b5-1f3ff\"}],\"man-mountain-biking\":[{\"unified\":\"1f6b5-200d-2642-fe0f\"},{\"unified\":\"1f6b5-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f6b5-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f6b5-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f6b5-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f6b5-1f3ff-200d-2642-fe0f\"}],\"woman-mountain-biking\":[{\"unified\":\"1f6b5-200d-2640-fe0f\"},{\"unified\":\"1f6b5-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f6b5-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f6b5-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f6b5-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f6b5-1f3ff-200d-2640-fe0f\"}],\"person_doing_cartwheel\":[{\"unified\":\"1f938\"},{\"unified\":\"1f938-1f3fb\"},{\"unified\":\"1f938-1f3fc\"},{\"unified\":\"1f938-1f3fd\"},{\"unified\":\"1f938-1f3fe\"},{\"unified\":\"1f938-1f3ff\"}],\"man-cartwheeling\":[{\"unified\":\"1f938-200d-2642-fe0f\"},{\"unified\":\"1f938-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f938-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f938-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f938-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f938-1f3ff-200d-2642-fe0f\"}],\"woman-cartwheeling\":[{\"unified\":\"1f938-200d-2640-fe0f\"},{\"unified\":\"1f938-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f938-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f938-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f938-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f938-1f3ff-200d-2640-fe0f\"}],\"wrestlers\":[{\"unified\":\"1f93c\"}],\"man-wrestling\":[{\"unified\":\"1f93c-200d-2642-fe0f\"}],\"woman-wrestling\":[{\"unified\":\"1f93c-200d-2640-fe0f\"}],\"water_polo\":[{\"unified\":\"1f93d\"},{\"unified\":\"1f93d-1f3fb\"},{\"unified\":\"1f93d-1f3fc\"},{\"unified\":\"1f93d-1f3fd\"},{\"unified\":\"1f93d-1f3fe\"},{\"unified\":\"1f93d-1f3ff\"}],\"man-playing-water-polo\":[{\"unified\":\"1f93d-200d-2642-fe0f\"},{\"unified\":\"1f93d-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f93d-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f93d-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f93d-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f93d-1f3ff-200d-2642-fe0f\"}],\"woman-playing-water-polo\":[{\"unified\":\"1f93d-200d-2640-fe0f\"},{\"unified\":\"1f93d-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f93d-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f93d-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f93d-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f93d-1f3ff-200d-2640-fe0f\"}],\"handball\":[{\"unified\":\"1f93e\"},{\"unified\":\"1f93e-1f3fb\"},{\"unified\":\"1f93e-1f3fc\"},{\"unified\":\"1f93e-1f3fd\"},{\"unified\":\"1f93e-1f3fe\"},{\"unified\":\"1f93e-1f3ff\"}],\"man-playing-handball\":[{\"unified\":\"1f93e-200d-2642-fe0f\"},{\"unified\":\"1f93e-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f93e-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f93e-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f93e-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f93e-1f3ff-200d-2642-fe0f\"}],\"woman-playing-handball\":[{\"unified\":\"1f93e-200d-2640-fe0f\"},{\"unified\":\"1f93e-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f93e-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f93e-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f93e-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f93e-1f3ff-200d-2640-fe0f\"}],\"juggling\":[{\"unified\":\"1f939\"},{\"unified\":\"1f939-1f3fb\"},{\"unified\":\"1f939-1f3fc\"},{\"unified\":\"1f939-1f3fd\"},{\"unified\":\"1f939-1f3fe\"},{\"unified\":\"1f939-1f3ff\"}],\"man-juggling\":[{\"unified\":\"1f939-200d-2642-fe0f\"},{\"unified\":\"1f939-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f939-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f939-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f939-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f939-1f3ff-200d-2642-fe0f\"}],\"woman-juggling\":[{\"unified\":\"1f939-200d-2640-fe0f\"},{\"unified\":\"1f939-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f939-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f939-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f939-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f939-1f3ff-200d-2640-fe0f\"}],\"person_in_lotus_position\":[{\"unified\":\"1f9d8\"},{\"unified\":\"1f9d8-1f3fb\"},{\"unified\":\"1f9d8-1f3fc\"},{\"unified\":\"1f9d8-1f3fd\"},{\"unified\":\"1f9d8-1f3fe\"},{\"unified\":\"1f9d8-1f3ff\"}],\"man_in_lotus_position\":[{\"unified\":\"1f9d8-200d-2642-fe0f\"},{\"unified\":\"1f9d8-1f3fb-200d-2642-fe0f\"},{\"unified\":\"1f9d8-1f3fc-200d-2642-fe0f\"},{\"unified\":\"1f9d8-1f3fd-200d-2642-fe0f\"},{\"unified\":\"1f9d8-1f3fe-200d-2642-fe0f\"},{\"unified\":\"1f9d8-1f3ff-200d-2642-fe0f\"}],\"woman_in_lotus_position\":[{\"unified\":\"1f9d8-200d-2640-fe0f\"},{\"unified\":\"1f9d8-1f3fb-200d-2640-fe0f\"},{\"unified\":\"1f9d8-1f3fc-200d-2640-fe0f\"},{\"unified\":\"1f9d8-1f3fd-200d-2640-fe0f\"},{\"unified\":\"1f9d8-1f3fe-200d-2640-fe0f\"},{\"unified\":\"1f9d8-1f3ff-200d-2640-fe0f\"}],\"bath\":[{\"unified\":\"1f6c0\"},{\"unified\":\"1f6c0-1f3fb\"},{\"unified\":\"1f6c0-1f3fc\"},{\"unified\":\"1f6c0-1f3fd\"},{\"unified\":\"1f6c0-1f3fe\"},{\"unified\":\"1f6c0-1f3ff\"}],\"sleeping_accommodation\":[{\"unified\":\"1f6cc\"},{\"unified\":\"1f6cc-1f3fb\"},{\"unified\":\"1f6cc-1f3fc\"},{\"unified\":\"1f6cc-1f3fd\"},{\"unified\":\"1f6cc-1f3fe\"},{\"unified\":\"1f6cc-1f3ff\"}],\"people_holding_hands\":[{\"unified\":\"1f9d1-200d-1f91d-200d-1f9d1\"},{\"unified\":\"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb\"},{\"unified\":\"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc\"},{\"unified\":\"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd\"},{\"unified\":\"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe\"},{\"unified\":\"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff\"}],\"two_women_holding_hands\":[{\"unified\":\"1f46d\"},{\"unified\":\"1f46d-1f3fb\"},{\"unified\":\"1f46d-1f3fc\"},{\"unified\":\"1f46d-1f3fd\"},{\"unified\":\"1f46d-1f3fe\"},{\"unified\":\"1f46d-1f3ff\"}],\"man_and_woman_holding_hands\":[{\"unified\":\"1f46b\"},{\"unified\":\"1f46b-1f3fb\"},{\"unified\":\"1f46b-1f3fc\"},{\"unified\":\"1f46b-1f3fd\"},{\"unified\":\"1f46b-1f3fe\"},{\"unified\":\"1f46b-1f3ff\"}],\"two_men_holding_hands\":[{\"unified\":\"1f46c\"},{\"unified\":\"1f46c-1f3fb\"},{\"unified\":\"1f46c-1f3fc\"},{\"unified\":\"1f46c-1f3fd\"},{\"unified\":\"1f46c-1f3fe\"},{\"unified\":\"1f46c-1f3ff\"}],\"couplekiss\":[{\"unified\":\"1f48f\"},{\"unified\":\"1f48f-1f3fb\"},{\"unified\":\"1f48f-1f3fc\"},{\"unified\":\"1f48f-1f3fd\"},{\"unified\":\"1f48f-1f3fe\"},{\"unified\":\"1f48f-1f3ff\"}],\"woman-kiss-man\":[{\"unified\":\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468\"},{\"unified\":\"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb\"},{\"unified\":\"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc\"},{\"unified\":\"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd\"},{\"unified\":\"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe\"},{\"unified\":\"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff\"}],\"man-kiss-man\":[{\"unified\":\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\"},{\"unified\":\"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb\"},{\"unified\":\"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc\"},{\"unified\":\"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd\"},{\"unified\":\"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe\"},{\"unified\":\"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff\"}],\"woman-kiss-woman\":[{\"unified\":\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\"},{\"unified\":\"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb\"},{\"unified\":\"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc\"},{\"unified\":\"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd\"},{\"unified\":\"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe\"},{\"unified\":\"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff\"}],\"couple_with_heart\":[{\"unified\":\"1f491\"},{\"unified\":\"1f491-1f3fb\"},{\"unified\":\"1f491-1f3fc\"},{\"unified\":\"1f491-1f3fd\"},{\"unified\":\"1f491-1f3fe\"},{\"unified\":\"1f491-1f3ff\"}],\"woman-heart-man\":[{\"unified\":\"1f469-200d-2764-fe0f-200d-1f468\"},{\"unified\":\"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb\"},{\"unified\":\"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc\"},{\"unified\":\"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd\"},{\"unified\":\"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe\"},{\"unified\":\"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff\"}],\"man-heart-man\":[{\"unified\":\"1f468-200d-2764-fe0f-200d-1f468\"},{\"unified\":\"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb\"},{\"unified\":\"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc\"},{\"unified\":\"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd\"},{\"unified\":\"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe\"},{\"unified\":\"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff\"}],\"woman-heart-woman\":[{\"unified\":\"1f469-200d-2764-fe0f-200d-1f469\"},{\"unified\":\"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb\"},{\"unified\":\"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc\"},{\"unified\":\"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd\"},{\"unified\":\"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe\"},{\"unified\":\"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff\"}],\"family\":[{\"unified\":\"1f46a\"}],\"man-woman-boy\":[{\"unified\":\"1f468-200d-1f469-200d-1f466\"}],\"man-woman-girl\":[{\"unified\":\"1f468-200d-1f469-200d-1f467\"}],\"man-woman-girl-boy\":[{\"unified\":\"1f468-200d-1f469-200d-1f467-200d-1f466\"}],\"man-woman-boy-boy\":[{\"unified\":\"1f468-200d-1f469-200d-1f466-200d-1f466\"}],\"man-woman-girl-girl\":[{\"unified\":\"1f468-200d-1f469-200d-1f467-200d-1f467\"}],\"man-man-boy\":[{\"unified\":\"1f468-200d-1f468-200d-1f466\"}],\"man-man-girl\":[{\"unified\":\"1f468-200d-1f468-200d-1f467\"}],\"man-man-girl-boy\":[{\"unified\":\"1f468-200d-1f468-200d-1f467-200d-1f466\"}],\"man-man-boy-boy\":[{\"unified\":\"1f468-200d-1f468-200d-1f466-200d-1f466\"}],\"man-man-girl-girl\":[{\"unified\":\"1f468-200d-1f468-200d-1f467-200d-1f467\"}],\"woman-woman-boy\":[{\"unified\":\"1f469-200d-1f469-200d-1f466\"}],\"woman-woman-girl\":[{\"unified\":\"1f469-200d-1f469-200d-1f467\"}],\"woman-woman-girl-boy\":[{\"unified\":\"1f469-200d-1f469-200d-1f467-200d-1f466\"}],\"woman-woman-boy-boy\":[{\"unified\":\"1f469-200d-1f469-200d-1f466-200d-1f466\"}],\"woman-woman-girl-girl\":[{\"unified\":\"1f469-200d-1f469-200d-1f467-200d-1f467\"}],\"man-boy\":[{\"unified\":\"1f468-200d-1f466\"}],\"man-boy-boy\":[{\"unified\":\"1f468-200d-1f466-200d-1f466\"}],\"man-girl\":[{\"unified\":\"1f468-200d-1f467\"}],\"man-girl-boy\":[{\"unified\":\"1f468-200d-1f467-200d-1f466\"}],\"man-girl-girl\":[{\"unified\":\"1f468-200d-1f467-200d-1f467\"}],\"woman-boy\":[{\"unified\":\"1f469-200d-1f466\"}],\"woman-boy-boy\":[{\"unified\":\"1f469-200d-1f466-200d-1f466\"}],\"woman-girl\":[{\"unified\":\"1f469-200d-1f467\"}],\"woman-girl-boy\":[{\"unified\":\"1f469-200d-1f467-200d-1f466\"}],\"woman-girl-girl\":[{\"unified\":\"1f469-200d-1f467-200d-1f467\"}],\"speaking_head_in_silhouette\":[{\"unified\":\"1f5e3-fe0f\"}],\"bust_in_silhouette\":[{\"unified\":\"1f464\"}],\"busts_in_silhouette\":[{\"unified\":\"1f465\"}],\"people_hugging\":[{\"unified\":\"1fac2\"}],\"footprints\":[{\"unified\":\"1f463\"}],\"monkey_face\":[{\"unified\":\"1f435\"}],\"monkey\":[{\"unified\":\"1f412\"}],\"gorilla\":[{\"unified\":\"1f98d\"}],\"orangutan\":[{\"unified\":\"1f9a7\"}],\"dog\":[{\"unified\":\"1f436\"}],\"dog2\":[{\"unified\":\"1f415\"}],\"guide_dog\":[{\"unified\":\"1f9ae\"}],\"service_dog\":[{\"unified\":\"1f415-200d-1f9ba\"}],\"poodle\":[{\"unified\":\"1f429\"}],\"wolf\":[{\"unified\":\"1f43a\"}],\"fox_face\":[{\"unified\":\"1f98a\"}],\"raccoon\":[{\"unified\":\"1f99d\"}],\"cat\":[{\"unified\":\"1f431\"}],\"cat2\":[{\"unified\":\"1f408\"}],\"black_cat\":[{\"unified\":\"1f408-200d-2b1b\"}],\"lion_face\":[{\"unified\":\"1f981\"}],\"tiger\":[{\"unified\":\"1f42f\"}],\"tiger2\":[{\"unified\":\"1f405\"}],\"leopard\":[{\"unified\":\"1f406\"}],\"horse\":[{\"unified\":\"1f434\"}],\"racehorse\":[{\"unified\":\"1f40e\"}],\"unicorn_face\":[{\"unified\":\"1f984\"}],\"zebra_face\":[{\"unified\":\"1f993\"}],\"deer\":[{\"unified\":\"1f98c\"}],\"bison\":[{\"unified\":\"1f9ac\"}],\"cow\":[{\"unified\":\"1f42e\"}],\"ox\":[{\"unified\":\"1f402\"}],\"water_buffalo\":[{\"unified\":\"1f403\"}],\"cow2\":[{\"unified\":\"1f404\"}],\"pig\":[{\"unified\":\"1f437\"}],\"pig2\":[{\"unified\":\"1f416\"}],\"boar\":[{\"unified\":\"1f417\"}],\"pig_nose\":[{\"unified\":\"1f43d\"}],\"ram\":[{\"unified\":\"1f40f\"}],\"sheep\":[{\"unified\":\"1f411\"}],\"goat\":[{\"unified\":\"1f410\"}],\"dromedary_camel\":[{\"unified\":\"1f42a\"}],\"camel\":[{\"unified\":\"1f42b\"}],\"llama\":[{\"unified\":\"1f999\"}],\"giraffe_face\":[{\"unified\":\"1f992\"}],\"elephant\":[{\"unified\":\"1f418\"}],\"mammoth\":[{\"unified\":\"1f9a3\"}],\"rhinoceros\":[{\"unified\":\"1f98f\"}],\"hippopotamus\":[{\"unified\":\"1f99b\"}],\"mouse\":[{\"unified\":\"1f42d\"}],\"mouse2\":[{\"unified\":\"1f401\"}],\"rat\":[{\"unified\":\"1f400\"}],\"hamster\":[{\"unified\":\"1f439\"}],\"rabbit\":[{\"unified\":\"1f430\"}],\"rabbit2\":[{\"unified\":\"1f407\"}],\"chipmunk\":[{\"unified\":\"1f43f-fe0f\"}],\"beaver\":[{\"unified\":\"1f9ab\"}],\"hedgehog\":[{\"unified\":\"1f994\"}],\"bat\":[{\"unified\":\"1f987\"}],\"bear\":[{\"unified\":\"1f43b\"}],\"polar_bear\":[{\"unified\":\"1f43b-200d-2744-fe0f\"}],\"koala\":[{\"unified\":\"1f428\"}],\"panda_face\":[{\"unified\":\"1f43c\"}],\"sloth\":[{\"unified\":\"1f9a5\"}],\"otter\":[{\"unified\":\"1f9a6\"}],\"skunk\":[{\"unified\":\"1f9a8\"}],\"kangaroo\":[{\"unified\":\"1f998\"}],\"badger\":[{\"unified\":\"1f9a1\"}],\"feet\":[{\"unified\":\"1f43e\"}],\"turkey\":[{\"unified\":\"1f983\"}],\"chicken\":[{\"unified\":\"1f414\"}],\"rooster\":[{\"unified\":\"1f413\"}],\"hatching_chick\":[{\"unified\":\"1f423\"}],\"baby_chick\":[{\"unified\":\"1f424\"}],\"hatched_chick\":[{\"unified\":\"1f425\"}],\"bird\":[{\"unified\":\"1f426\"}],\"penguin\":[{\"unified\":\"1f427\"}],\"dove_of_peace\":[{\"unified\":\"1f54a-fe0f\"}],\"eagle\":[{\"unified\":\"1f985\"}],\"duck\":[{\"unified\":\"1f986\"}],\"swan\":[{\"unified\":\"1f9a2\"}],\"owl\":[{\"unified\":\"1f989\"}],\"dodo\":[{\"unified\":\"1f9a4\"}],\"feather\":[{\"unified\":\"1fab6\"}],\"flamingo\":[{\"unified\":\"1f9a9\"}],\"peacock\":[{\"unified\":\"1f99a\"}],\"parrot\":[{\"unified\":\"1f99c\"}],\"frog\":[{\"unified\":\"1f438\"}],\"crocodile\":[{\"unified\":\"1f40a\"}],\"turtle\":[{\"unified\":\"1f422\"}],\"lizard\":[{\"unified\":\"1f98e\"}],\"snake\":[{\"unified\":\"1f40d\"}],\"dragon_face\":[{\"unified\":\"1f432\"}],\"dragon\":[{\"unified\":\"1f409\"}],\"sauropod\":[{\"unified\":\"1f995\"}],\"t-rex\":[{\"unified\":\"1f996\"}],\"whale\":[{\"unified\":\"1f433\"}],\"whale2\":[{\"unified\":\"1f40b\"}],\"dolphin\":[{\"unified\":\"1f42c\"}],\"seal\":[{\"unified\":\"1f9ad\"}],\"fish\":[{\"unified\":\"1f41f\"}],\"tropical_fish\":[{\"unified\":\"1f420\"}],\"blowfish\":[{\"unified\":\"1f421\"}],\"shark\":[{\"unified\":\"1f988\"}],\"octopus\":[{\"unified\":\"1f419\"}],\"shell\":[{\"unified\":\"1f41a\"}],\"coral\":[{\"unified\":\"1fab8\"}],\"snail\":[{\"unified\":\"1f40c\"}],\"butterfly\":[{\"unified\":\"1f98b\"}],\"bug\":[{\"unified\":\"1f41b\"}],\"ant\":[{\"unified\":\"1f41c\"}],\"bee\":[{\"unified\":\"1f41d\"}],\"beetle\":[{\"unified\":\"1fab2\"}],\"ladybug\":[{\"unified\":\"1f41e\"}],\"cricket\":[{\"unified\":\"1f997\"}],\"cockroach\":[{\"unified\":\"1fab3\"}],\"spider\":[{\"unified\":\"1f577-fe0f\"}],\"spider_web\":[{\"unified\":\"1f578-fe0f\"}],\"scorpion\":[{\"unified\":\"1f982\"}],\"mosquito\":[{\"unified\":\"1f99f\"}],\"fly\":[{\"unified\":\"1fab0\"}],\"worm\":[{\"unified\":\"1fab1\"}],\"microbe\":[{\"unified\":\"1f9a0\"}],\"bouquet\":[{\"unified\":\"1f490\"}],\"cherry_blossom\":[{\"unified\":\"1f338\"}],\"white_flower\":[{\"unified\":\"1f4ae\"}],\"lotus\":[{\"unified\":\"1fab7\"}],\"rosette\":[{\"unified\":\"1f3f5-fe0f\"}],\"rose\":[{\"unified\":\"1f339\"}],\"wilted_flower\":[{\"unified\":\"1f940\"}],\"hibiscus\":[{\"unified\":\"1f33a\"}],\"sunflower\":[{\"unified\":\"1f33b\"}],\"blossom\":[{\"unified\":\"1f33c\"}],\"tulip\":[{\"unified\":\"1f337\"}],\"seedling\":[{\"unified\":\"1f331\"}],\"potted_plant\":[{\"unified\":\"1fab4\"}],\"evergreen_tree\":[{\"unified\":\"1f332\"}],\"deciduous_tree\":[{\"unified\":\"1f333\"}],\"palm_tree\":[{\"unified\":\"1f334\"}],\"cactus\":[{\"unified\":\"1f335\"}],\"ear_of_rice\":[{\"unified\":\"1f33e\"}],\"herb\":[{\"unified\":\"1f33f\"}],\"shamrock\":[{\"unified\":\"2618-fe0f\"}],\"four_leaf_clover\":[{\"unified\":\"1f340\"}],\"maple_leaf\":[{\"unified\":\"1f341\"}],\"fallen_leaf\":[{\"unified\":\"1f342\"}],\"leaves\":[{\"unified\":\"1f343\"}],\"empty_nest\":[{\"unified\":\"1fab9\"}],\"nest_with_eggs\":[{\"unified\":\"1faba\"}],\"grapes\":[{\"unified\":\"1f347\"}],\"melon\":[{\"unified\":\"1f348\"}],\"watermelon\":[{\"unified\":\"1f349\"}],\"tangerine\":[{\"unified\":\"1f34a\"}],\"lemon\":[{\"unified\":\"1f34b\"}],\"banana\":[{\"unified\":\"1f34c\"}],\"pineapple\":[{\"unified\":\"1f34d\"}],\"mango\":[{\"unified\":\"1f96d\"}],\"apple\":[{\"unified\":\"1f34e\"}],\"green_apple\":[{\"unified\":\"1f34f\"}],\"pear\":[{\"unified\":\"1f350\"}],\"peach\":[{\"unified\":\"1f351\"}],\"cherries\":[{\"unified\":\"1f352\"}],\"strawberry\":[{\"unified\":\"1f353\"}],\"blueberries\":[{\"unified\":\"1fad0\"}],\"kiwifruit\":[{\"unified\":\"1f95d\"}],\"tomato\":[{\"unified\":\"1f345\"}],\"olive\":[{\"unified\":\"1fad2\"}],\"coconut\":[{\"unified\":\"1f965\"}],\"avocado\":[{\"unified\":\"1f951\"}],\"eggplant\":[{\"unified\":\"1f346\"}],\"potato\":[{\"unified\":\"1f954\"}],\"carrot\":[{\"unified\":\"1f955\"}],\"corn\":[{\"unified\":\"1f33d\"}],\"hot_pepper\":[{\"unified\":\"1f336-fe0f\"}],\"bell_pepper\":[{\"unified\":\"1fad1\"}],\"cucumber\":[{\"unified\":\"1f952\"}],\"leafy_green\":[{\"unified\":\"1f96c\"}],\"broccoli\":[{\"unified\":\"1f966\"}],\"garlic\":[{\"unified\":\"1f9c4\"}],\"onion\":[{\"unified\":\"1f9c5\"}],\"mushroom\":[{\"unified\":\"1f344\"}],\"peanuts\":[{\"unified\":\"1f95c\"}],\"beans\":[{\"unified\":\"1fad8\"}],\"chestnut\":[{\"unified\":\"1f330\"}],\"bread\":[{\"unified\":\"1f35e\"}],\"croissant\":[{\"unified\":\"1f950\"}],\"baguette_bread\":[{\"unified\":\"1f956\"}],\"flatbread\":[{\"unified\":\"1fad3\"}],\"pretzel\":[{\"unified\":\"1f968\"}],\"bagel\":[{\"unified\":\"1f96f\"}],\"pancakes\":[{\"unified\":\"1f95e\"}],\"waffle\":[{\"unified\":\"1f9c7\"}],\"cheese_wedge\":[{\"unified\":\"1f9c0\"}],\"meat_on_bone\":[{\"unified\":\"1f356\"}],\"poultry_leg\":[{\"unified\":\"1f357\"}],\"cut_of_meat\":[{\"unified\":\"1f969\"}],\"bacon\":[{\"unified\":\"1f953\"}],\"hamburger\":[{\"unified\":\"1f354\"}],\"fries\":[{\"unified\":\"1f35f\"}],\"pizza\":[{\"unified\":\"1f355\"}],\"hotdog\":[{\"unified\":\"1f32d\"}],\"sandwich\":[{\"unified\":\"1f96a\"}],\"taco\":[{\"unified\":\"1f32e\"}],\"burrito\":[{\"unified\":\"1f32f\"}],\"tamale\":[{\"unified\":\"1fad4\"}],\"stuffed_flatbread\":[{\"unified\":\"1f959\"}],\"falafel\":[{\"unified\":\"1f9c6\"}],\"egg\":[{\"unified\":\"1f95a\"}],\"fried_egg\":[{\"unified\":\"1f373\"}],\"shallow_pan_of_food\":[{\"unified\":\"1f958\"}],\"stew\":[{\"unified\":\"1f372\"}],\"fondue\":[{\"unified\":\"1fad5\"}],\"bowl_with_spoon\":[{\"unified\":\"1f963\"}],\"green_salad\":[{\"unified\":\"1f957\"}],\"popcorn\":[{\"unified\":\"1f37f\"}],\"butter\":[{\"unified\":\"1f9c8\"}],\"salt\":[{\"unified\":\"1f9c2\"}],\"canned_food\":[{\"unified\":\"1f96b\"}],\"bento\":[{\"unified\":\"1f371\"}],\"rice_cracker\":[{\"unified\":\"1f358\"}],\"rice_ball\":[{\"unified\":\"1f359\"}],\"rice\":[{\"unified\":\"1f35a\"}],\"curry\":[{\"unified\":\"1f35b\"}],\"ramen\":[{\"unified\":\"1f35c\"}],\"spaghetti\":[{\"unified\":\"1f35d\"}],\"sweet_potato\":[{\"unified\":\"1f360\"}],\"oden\":[{\"unified\":\"1f362\"}],\"sushi\":[{\"unified\":\"1f363\"}],\"fried_shrimp\":[{\"unified\":\"1f364\"}],\"fish_cake\":[{\"unified\":\"1f365\"}],\"moon_cake\":[{\"unified\":\"1f96e\"}],\"dango\":[{\"unified\":\"1f361\"}],\"dumpling\":[{\"unified\":\"1f95f\"}],\"fortune_cookie\":[{\"unified\":\"1f960\"}],\"takeout_box\":[{\"unified\":\"1f961\"}],\"crab\":[{\"unified\":\"1f980\"}],\"lobster\":[{\"unified\":\"1f99e\"}],\"shrimp\":[{\"unified\":\"1f990\"}],\"squid\":[{\"unified\":\"1f991\"}],\"oyster\":[{\"unified\":\"1f9aa\"}],\"icecream\":[{\"unified\":\"1f366\"}],\"shaved_ice\":[{\"unified\":\"1f367\"}],\"ice_cream\":[{\"unified\":\"1f368\"}],\"doughnut\":[{\"unified\":\"1f369\"}],\"cookie\":[{\"unified\":\"1f36a\"}],\"birthday\":[{\"unified\":\"1f382\"}],\"cake\":[{\"unified\":\"1f370\"}],\"cupcake\":[{\"unified\":\"1f9c1\"}],\"pie\":[{\"unified\":\"1f967\"}],\"chocolate_bar\":[{\"unified\":\"1f36b\"}],\"candy\":[{\"unified\":\"1f36c\"}],\"lollipop\":[{\"unified\":\"1f36d\"}],\"custard\":[{\"unified\":\"1f36e\"}],\"honey_pot\":[{\"unified\":\"1f36f\"}],\"baby_bottle\":[{\"unified\":\"1f37c\"}],\"glass_of_milk\":[{\"unified\":\"1f95b\"}],\"coffee\":[{\"unified\":\"2615\"}],\"teapot\":[{\"unified\":\"1fad6\"}],\"tea\":[{\"unified\":\"1f375\"}],\"sake\":[{\"unified\":\"1f376\"}],\"champagne\":[{\"unified\":\"1f37e\"}],\"wine_glass\":[{\"unified\":\"1f377\"}],\"cocktail\":[{\"unified\":\"1f378\"}],\"tropical_drink\":[{\"unified\":\"1f379\"}],\"beer\":[{\"unified\":\"1f37a\"}],\"beers\":[{\"unified\":\"1f37b\"}],\"clinking_glasses\":[{\"unified\":\"1f942\"}],\"tumbler_glass\":[{\"unified\":\"1f943\"}],\"pouring_liquid\":[{\"unified\":\"1fad7\"}],\"cup_with_straw\":[{\"unified\":\"1f964\"}],\"bubble_tea\":[{\"unified\":\"1f9cb\"}],\"beverage_box\":[{\"unified\":\"1f9c3\"}],\"mate_drink\":[{\"unified\":\"1f9c9\"}],\"ice_cube\":[{\"unified\":\"1f9ca\"}],\"chopsticks\":[{\"unified\":\"1f962\"}],\"knife_fork_plate\":[{\"unified\":\"1f37d-fe0f\"}],\"fork_and_knife\":[{\"unified\":\"1f374\"}],\"spoon\":[{\"unified\":\"1f944\"}],\"hocho\":[{\"unified\":\"1f52a\"}],\"jar\":[{\"unified\":\"1fad9\"}],\"amphora\":[{\"unified\":\"1f3fa\"}],\"earth_africa\":[{\"unified\":\"1f30d\"}],\"earth_americas\":[{\"unified\":\"1f30e\"}],\"earth_asia\":[{\"unified\":\"1f30f\"}],\"globe_with_meridians\":[{\"unified\":\"1f310\"}],\"world_map\":[{\"unified\":\"1f5fa-fe0f\"}],\"japan\":[{\"unified\":\"1f5fe\"}],\"compass\":[{\"unified\":\"1f9ed\"}],\"snow_capped_mountain\":[{\"unified\":\"1f3d4-fe0f\"}],\"mountain\":[{\"unified\":\"26f0-fe0f\"}],\"volcano\":[{\"unified\":\"1f30b\"}],\"mount_fuji\":[{\"unified\":\"1f5fb\"}],\"camping\":[{\"unified\":\"1f3d5-fe0f\"}],\"beach_with_umbrella\":[{\"unified\":\"1f3d6-fe0f\"}],\"desert\":[{\"unified\":\"1f3dc-fe0f\"}],\"desert_island\":[{\"unified\":\"1f3dd-fe0f\"}],\"national_park\":[{\"unified\":\"1f3de-fe0f\"}],\"stadium\":[{\"unified\":\"1f3df-fe0f\"}],\"classical_building\":[{\"unified\":\"1f3db-fe0f\"}],\"building_construction\":[{\"unified\":\"1f3d7-fe0f\"}],\"bricks\":[{\"unified\":\"1f9f1\"}],\"rock\":[{\"unified\":\"1faa8\"}],\"wood\":[{\"unified\":\"1fab5\"}],\"hut\":[{\"unified\":\"1f6d6\"}],\"house_buildings\":[{\"unified\":\"1f3d8-fe0f\"}],\"derelict_house_building\":[{\"unified\":\"1f3da-fe0f\"}],\"house\":[{\"unified\":\"1f3e0\"}],\"house_with_garden\":[{\"unified\":\"1f3e1\"}],\"office\":[{\"unified\":\"1f3e2\"}],\"post_office\":[{\"unified\":\"1f3e3\"}],\"european_post_office\":[{\"unified\":\"1f3e4\"}],\"hospital\":[{\"unified\":\"1f3e5\"}],\"bank\":[{\"unified\":\"1f3e6\"}],\"hotel\":[{\"unified\":\"1f3e8\"}],\"love_hotel\":[{\"unified\":\"1f3e9\"}],\"convenience_store\":[{\"unified\":\"1f3ea\"}],\"school\":[{\"unified\":\"1f3eb\"}],\"department_store\":[{\"unified\":\"1f3ec\"}],\"factory\":[{\"unified\":\"1f3ed\"}],\"japanese_castle\":[{\"unified\":\"1f3ef\"}],\"european_castle\":[{\"unified\":\"1f3f0\"}],\"wedding\":[{\"unified\":\"1f492\"}],\"tokyo_tower\":[{\"unified\":\"1f5fc\"}],\"statue_of_liberty\":[{\"unified\":\"1f5fd\"}],\"church\":[{\"unified\":\"26ea\"}],\"mosque\":[{\"unified\":\"1f54c\"}],\"hindu_temple\":[{\"unified\":\"1f6d5\"}],\"synagogue\":[{\"unified\":\"1f54d\"}],\"shinto_shrine\":[{\"unified\":\"26e9-fe0f\"}],\"kaaba\":[{\"unified\":\"1f54b\"}],\"fountain\":[{\"unified\":\"26f2\"}],\"tent\":[{\"unified\":\"26fa\"}],\"foggy\":[{\"unified\":\"1f301\"}],\"night_with_stars\":[{\"unified\":\"1f303\"}],\"cityscape\":[{\"unified\":\"1f3d9-fe0f\"}],\"sunrise_over_mountains\":[{\"unified\":\"1f304\"}],\"sunrise\":[{\"unified\":\"1f305\"}],\"city_sunset\":[{\"unified\":\"1f306\"}],\"city_sunrise\":[{\"unified\":\"1f307\"}],\"bridge_at_night\":[{\"unified\":\"1f309\"}],\"hotsprings\":[{\"unified\":\"2668-fe0f\"}],\"carousel_horse\":[{\"unified\":\"1f3a0\"}],\"playground_slide\":[{\"unified\":\"1f6dd\"}],\"ferris_wheel\":[{\"unified\":\"1f3a1\"}],\"roller_coaster\":[{\"unified\":\"1f3a2\"}],\"barber\":[{\"unified\":\"1f488\"}],\"circus_tent\":[{\"unified\":\"1f3aa\"}],\"steam_locomotive\":[{\"unified\":\"1f682\"}],\"railway_car\":[{\"unified\":\"1f683\"}],\"bullettrain_side\":[{\"unified\":\"1f684\"}],\"bullettrain_front\":[{\"unified\":\"1f685\"}],\"train2\":[{\"unified\":\"1f686\"}],\"metro\":[{\"unified\":\"1f687\"}],\"light_rail\":[{\"unified\":\"1f688\"}],\"station\":[{\"unified\":\"1f689\"}],\"tram\":[{\"unified\":\"1f68a\"}],\"monorail\":[{\"unified\":\"1f69d\"}],\"mountain_railway\":[{\"unified\":\"1f69e\"}],\"train\":[{\"unified\":\"1f68b\"}],\"bus\":[{\"unified\":\"1f68c\"}],\"oncoming_bus\":[{\"unified\":\"1f68d\"}],\"trolleybus\":[{\"unified\":\"1f68e\"}],\"minibus\":[{\"unified\":\"1f690\"}],\"ambulance\":[{\"unified\":\"1f691\"}],\"fire_engine\":[{\"unified\":\"1f692\"}],\"police_car\":[{\"unified\":\"1f693\"}],\"oncoming_police_car\":[{\"unified\":\"1f694\"}],\"taxi\":[{\"unified\":\"1f695\"}],\"oncoming_taxi\":[{\"unified\":\"1f696\"}],\"car\":[{\"unified\":\"1f697\"}],\"oncoming_automobile\":[{\"unified\":\"1f698\"}],\"blue_car\":[{\"unified\":\"1f699\"}],\"pickup_truck\":[{\"unified\":\"1f6fb\"}],\"truck\":[{\"unified\":\"1f69a\"}],\"articulated_lorry\":[{\"unified\":\"1f69b\"}],\"tractor\":[{\"unified\":\"1f69c\"}],\"racing_car\":[{\"unified\":\"1f3ce-fe0f\"}],\"racing_motorcycle\":[{\"unified\":\"1f3cd-fe0f\"}],\"motor_scooter\":[{\"unified\":\"1f6f5\"}],\"manual_wheelchair\":[{\"unified\":\"1f9bd\"}],\"motorized_wheelchair\":[{\"unified\":\"1f9bc\"}],\"auto_rickshaw\":[{\"unified\":\"1f6fa\"}],\"bike\":[{\"unified\":\"1f6b2\"}],\"scooter\":[{\"unified\":\"1f6f4\"}],\"skateboard\":[{\"unified\":\"1f6f9\"}],\"roller_skate\":[{\"unified\":\"1f6fc\"}],\"busstop\":[{\"unified\":\"1f68f\"}],\"motorway\":[{\"unified\":\"1f6e3-fe0f\"}],\"railway_track\":[{\"unified\":\"1f6e4-fe0f\"}],\"oil_drum\":[{\"unified\":\"1f6e2-fe0f\"}],\"fuelpump\":[{\"unified\":\"26fd\"}],\"wheel\":[{\"unified\":\"1f6de\"}],\"rotating_light\":[{\"unified\":\"1f6a8\"}],\"traffic_light\":[{\"unified\":\"1f6a5\"}],\"vertical_traffic_light\":[{\"unified\":\"1f6a6\"}],\"octagonal_sign\":[{\"unified\":\"1f6d1\"}],\"construction\":[{\"unified\":\"1f6a7\"}],\"anchor\":[{\"unified\":\"2693\"}],\"ring_buoy\":[{\"unified\":\"1f6df\"}],\"boat\":[{\"unified\":\"26f5\"}],\"canoe\":[{\"unified\":\"1f6f6\"}],\"speedboat\":[{\"unified\":\"1f6a4\"}],\"passenger_ship\":[{\"unified\":\"1f6f3-fe0f\"}],\"ferry\":[{\"unified\":\"26f4-fe0f\"}],\"motor_boat\":[{\"unified\":\"1f6e5-fe0f\"}],\"ship\":[{\"unified\":\"1f6a2\"}],\"airplane\":[{\"unified\":\"2708-fe0f\"}],\"small_airplane\":[{\"unified\":\"1f6e9-fe0f\"}],\"airplane_departure\":[{\"unified\":\"1f6eb\"}],\"airplane_arriving\":[{\"unified\":\"1f6ec\"}],\"parachute\":[{\"unified\":\"1fa82\"}],\"seat\":[{\"unified\":\"1f4ba\"}],\"helicopter\":[{\"unified\":\"1f681\"}],\"suspension_railway\":[{\"unified\":\"1f69f\"}],\"mountain_cableway\":[{\"unified\":\"1f6a0\"}],\"aerial_tramway\":[{\"unified\":\"1f6a1\"}],\"satellite\":[{\"unified\":\"1f6f0-fe0f\"}],\"rocket\":[{\"unified\":\"1f680\"}],\"flying_saucer\":[{\"unified\":\"1f6f8\"}],\"bellhop_bell\":[{\"unified\":\"1f6ce-fe0f\"}],\"luggage\":[{\"unified\":\"1f9f3\"}],\"hourglass\":[{\"unified\":\"231b\"}],\"hourglass_flowing_sand\":[{\"unified\":\"23f3\"}],\"watch\":[{\"unified\":\"231a\"}],\"alarm_clock\":[{\"unified\":\"23f0\"}],\"stopwatch\":[{\"unified\":\"23f1-fe0f\"}],\"timer_clock\":[{\"unified\":\"23f2-fe0f\"}],\"mantelpiece_clock\":[{\"unified\":\"1f570-fe0f\"}],\"clock12\":[{\"unified\":\"1f55b\"}],\"clock1230\":[{\"unified\":\"1f567\"}],\"clock1\":[{\"unified\":\"1f550\"}],\"clock130\":[{\"unified\":\"1f55c\"}],\"clock2\":[{\"unified\":\"1f551\"}],\"clock230\":[{\"unified\":\"1f55d\"}],\"clock3\":[{\"unified\":\"1f552\"}],\"clock330\":[{\"unified\":\"1f55e\"}],\"clock4\":[{\"unified\":\"1f553\"}],\"clock430\":[{\"unified\":\"1f55f\"}],\"clock5\":[{\"unified\":\"1f554\"}],\"clock530\":[{\"unified\":\"1f560\"}],\"clock6\":[{\"unified\":\"1f555\"}],\"clock630\":[{\"unified\":\"1f561\"}],\"clock7\":[{\"unified\":\"1f556\"}],\"clock730\":[{\"unified\":\"1f562\"}],\"clock8\":[{\"unified\":\"1f557\"}],\"clock830\":[{\"unified\":\"1f563\"}],\"clock9\":[{\"unified\":\"1f558\"}],\"clock930\":[{\"unified\":\"1f564\"}],\"clock10\":[{\"unified\":\"1f559\"}],\"clock1030\":[{\"unified\":\"1f565\"}],\"clock11\":[{\"unified\":\"1f55a\"}],\"clock1130\":[{\"unified\":\"1f566\"}],\"new_moon\":[{\"unified\":\"1f311\"}],\"waxing_crescent_moon\":[{\"unified\":\"1f312\"}],\"first_quarter_moon\":[{\"unified\":\"1f313\"}],\"moon\":[{\"unified\":\"1f314\"}],\"full_moon\":[{\"unified\":\"1f315\"}],\"waning_gibbous_moon\":[{\"unified\":\"1f316\"}],\"last_quarter_moon\":[{\"unified\":\"1f317\"}],\"waning_crescent_moon\":[{\"unified\":\"1f318\"}],\"crescent_moon\":[{\"unified\":\"1f319\"}],\"new_moon_with_face\":[{\"unified\":\"1f31a\"}],\"first_quarter_moon_with_face\":[{\"unified\":\"1f31b\"}],\"last_quarter_moon_with_face\":[{\"unified\":\"1f31c\"}],\"thermometer\":[{\"unified\":\"1f321-fe0f\"}],\"sunny\":[{\"unified\":\"2600-fe0f\"}],\"full_moon_with_face\":[{\"unified\":\"1f31d\"}],\"sun_with_face\":[{\"unified\":\"1f31e\"}],\"ringed_planet\":[{\"unified\":\"1fa90\"}],\"star\":[{\"unified\":\"2b50\"}],\"star2\":[{\"unified\":\"1f31f\"}],\"stars\":[{\"unified\":\"1f320\"}],\"milky_way\":[{\"unified\":\"1f30c\"}],\"cloud\":[{\"unified\":\"2601-fe0f\"}],\"partly_sunny\":[{\"unified\":\"26c5\"}],\"thunder_cloud_and_rain\":[{\"unified\":\"26c8-fe0f\"}],\"mostly_sunny\":[{\"unified\":\"1f324-fe0f\"}],\"barely_sunny\":[{\"unified\":\"1f325-fe0f\"}],\"partly_sunny_rain\":[{\"unified\":\"1f326-fe0f\"}],\"rain_cloud\":[{\"unified\":\"1f327-fe0f\"}],\"snow_cloud\":[{\"unified\":\"1f328-fe0f\"}],\"lightning\":[{\"unified\":\"1f329-fe0f\"}],\"tornado\":[{\"unified\":\"1f32a-fe0f\"}],\"fog\":[{\"unified\":\"1f32b-fe0f\"}],\"wind_blowing_face\":[{\"unified\":\"1f32c-fe0f\"}],\"cyclone\":[{\"unified\":\"1f300\"}],\"rainbow\":[{\"unified\":\"1f308\"}],\"closed_umbrella\":[{\"unified\":\"1f302\"}],\"umbrella\":[{\"unified\":\"2602-fe0f\"}],\"umbrella_with_rain_drops\":[{\"unified\":\"2614\"}],\"umbrella_on_ground\":[{\"unified\":\"26f1-fe0f\"}],\"zap\":[{\"unified\":\"26a1\"}],\"snowflake\":[{\"unified\":\"2744-fe0f\"}],\"snowman\":[{\"unified\":\"2603-fe0f\"}],\"snowman_without_snow\":[{\"unified\":\"26c4\"}],\"comet\":[{\"unified\":\"2604-fe0f\"}],\"fire\":[{\"unified\":\"1f525\"}],\"droplet\":[{\"unified\":\"1f4a7\"}],\"ocean\":[{\"unified\":\"1f30a\"}],\"jack_o_lantern\":[{\"unified\":\"1f383\"}],\"christmas_tree\":[{\"unified\":\"1f384\"}],\"fireworks\":[{\"unified\":\"1f386\"}],\"sparkler\":[{\"unified\":\"1f387\"}],\"firecracker\":[{\"unified\":\"1f9e8\"}],\"sparkles\":[{\"unified\":\"2728\"}],\"balloon\":[{\"unified\":\"1f388\"}],\"tada\":[{\"unified\":\"1f389\"}],\"confetti_ball\":[{\"unified\":\"1f38a\"}],\"tanabata_tree\":[{\"unified\":\"1f38b\"}],\"bamboo\":[{\"unified\":\"1f38d\"}],\"dolls\":[{\"unified\":\"1f38e\"}],\"flags\":[{\"unified\":\"1f38f\"}],\"wind_chime\":[{\"unified\":\"1f390\"}],\"rice_scene\":[{\"unified\":\"1f391\"}],\"red_envelope\":[{\"unified\":\"1f9e7\"}],\"ribbon\":[{\"unified\":\"1f380\"}],\"gift\":[{\"unified\":\"1f381\"}],\"reminder_ribbon\":[{\"unified\":\"1f397-fe0f\"}],\"admission_tickets\":[{\"unified\":\"1f39f-fe0f\"}],\"ticket\":[{\"unified\":\"1f3ab\"}],\"medal\":[{\"unified\":\"1f396-fe0f\"}],\"trophy\":[{\"unified\":\"1f3c6\"}],\"sports_medal\":[{\"unified\":\"1f3c5\"}],\"first_place_medal\":[{\"unified\":\"1f947\"}],\"second_place_medal\":[{\"unified\":\"1f948\"}],\"third_place_medal\":[{\"unified\":\"1f949\"}],\"soccer\":[{\"unified\":\"26bd\"}],\"baseball\":[{\"unified\":\"26be\"}],\"softball\":[{\"unified\":\"1f94e\"}],\"basketball\":[{\"unified\":\"1f3c0\"}],\"volleyball\":[{\"unified\":\"1f3d0\"}],\"football\":[{\"unified\":\"1f3c8\"}],\"rugby_football\":[{\"unified\":\"1f3c9\"}],\"tennis\":[{\"unified\":\"1f3be\"}],\"flying_disc\":[{\"unified\":\"1f94f\"}],\"bowling\":[{\"unified\":\"1f3b3\"}],\"cricket_bat_and_ball\":[{\"unified\":\"1f3cf\"}],\"field_hockey_stick_and_ball\":[{\"unified\":\"1f3d1\"}],\"ice_hockey_stick_and_puck\":[{\"unified\":\"1f3d2\"}],\"lacrosse\":[{\"unified\":\"1f94d\"}],\"table_tennis_paddle_and_ball\":[{\"unified\":\"1f3d3\"}],\"badminton_racquet_and_shuttlecock\":[{\"unified\":\"1f3f8\"}],\"boxing_glove\":[{\"unified\":\"1f94a\"}],\"martial_arts_uniform\":[{\"unified\":\"1f94b\"}],\"goal_net\":[{\"unified\":\"1f945\"}],\"golf\":[{\"unified\":\"26f3\"}],\"ice_skate\":[{\"unified\":\"26f8-fe0f\"}],\"fishing_pole_and_fish\":[{\"unified\":\"1f3a3\"}],\"diving_mask\":[{\"unified\":\"1f93f\"}],\"running_shirt_with_sash\":[{\"unified\":\"1f3bd\"}],\"ski\":[{\"unified\":\"1f3bf\"}],\"sled\":[{\"unified\":\"1f6f7\"}],\"curling_stone\":[{\"unified\":\"1f94c\"}],\"dart\":[{\"unified\":\"1f3af\"}],\"yo-yo\":[{\"unified\":\"1fa80\"}],\"kite\":[{\"unified\":\"1fa81\"}],\"8ball\":[{\"unified\":\"1f3b1\"}],\"crystal_ball\":[{\"unified\":\"1f52e\"}],\"magic_wand\":[{\"unified\":\"1fa84\"}],\"nazar_amulet\":[{\"unified\":\"1f9ff\"}],\"hamsa\":[{\"unified\":\"1faac\"}],\"video_game\":[{\"unified\":\"1f3ae\"}],\"joystick\":[{\"unified\":\"1f579-fe0f\"}],\"slot_machine\":[{\"unified\":\"1f3b0\"}],\"game_die\":[{\"unified\":\"1f3b2\"}],\"jigsaw\":[{\"unified\":\"1f9e9\"}],\"teddy_bear\":[{\"unified\":\"1f9f8\"}],\"pinata\":[{\"unified\":\"1fa85\"}],\"mirror_ball\":[{\"unified\":\"1faa9\"}],\"nesting_dolls\":[{\"unified\":\"1fa86\"}],\"spades\":[{\"unified\":\"2660-fe0f\"}],\"hearts\":[{\"unified\":\"2665-fe0f\"}],\"diamonds\":[{\"unified\":\"2666-fe0f\"}],\"clubs\":[{\"unified\":\"2663-fe0f\"}],\"chess_pawn\":[{\"unified\":\"265f-fe0f\"}],\"black_joker\":[{\"unified\":\"1f0cf\"}],\"mahjong\":[{\"unified\":\"1f004\"}],\"flower_playing_cards\":[{\"unified\":\"1f3b4\"}],\"performing_arts\":[{\"unified\":\"1f3ad\"}],\"frame_with_picture\":[{\"unified\":\"1f5bc-fe0f\"}],\"art\":[{\"unified\":\"1f3a8\"}],\"thread\":[{\"unified\":\"1f9f5\"}],\"sewing_needle\":[{\"unified\":\"1faa1\"}],\"yarn\":[{\"unified\":\"1f9f6\"}],\"knot\":[{\"unified\":\"1faa2\"}],\"eyeglasses\":[{\"unified\":\"1f453\"}],\"dark_sunglasses\":[{\"unified\":\"1f576-fe0f\"}],\"goggles\":[{\"unified\":\"1f97d\"}],\"lab_coat\":[{\"unified\":\"1f97c\"}],\"safety_vest\":[{\"unified\":\"1f9ba\"}],\"necktie\":[{\"unified\":\"1f454\"}],\"shirt\":[{\"unified\":\"1f455\"}],\"jeans\":[{\"unified\":\"1f456\"}],\"scarf\":[{\"unified\":\"1f9e3\"}],\"gloves\":[{\"unified\":\"1f9e4\"}],\"coat\":[{\"unified\":\"1f9e5\"}],\"socks\":[{\"unified\":\"1f9e6\"}],\"dress\":[{\"unified\":\"1f457\"}],\"kimono\":[{\"unified\":\"1f458\"}],\"sari\":[{\"unified\":\"1f97b\"}],\"one-piece_swimsuit\":[{\"unified\":\"1fa71\"}],\"briefs\":[{\"unified\":\"1fa72\"}],\"shorts\":[{\"unified\":\"1fa73\"}],\"bikini\":[{\"unified\":\"1f459\"}],\"womans_clothes\":[{\"unified\":\"1f45a\"}],\"purse\":[{\"unified\":\"1f45b\"}],\"handbag\":[{\"unified\":\"1f45c\"}],\"pouch\":[{\"unified\":\"1f45d\"}],\"shopping_bags\":[{\"unified\":\"1f6cd-fe0f\"}],\"school_satchel\":[{\"unified\":\"1f392\"}],\"thong_sandal\":[{\"unified\":\"1fa74\"}],\"mans_shoe\":[{\"unified\":\"1f45e\"}],\"athletic_shoe\":[{\"unified\":\"1f45f\"}],\"hiking_boot\":[{\"unified\":\"1f97e\"}],\"womans_flat_shoe\":[{\"unified\":\"1f97f\"}],\"high_heel\":[{\"unified\":\"1f460\"}],\"sandal\":[{\"unified\":\"1f461\"}],\"ballet_shoes\":[{\"unified\":\"1fa70\"}],\"boot\":[{\"unified\":\"1f462\"}],\"crown\":[{\"unified\":\"1f451\"}],\"womans_hat\":[{\"unified\":\"1f452\"}],\"tophat\":[{\"unified\":\"1f3a9\"}],\"mortar_board\":[{\"unified\":\"1f393\"}],\"billed_cap\":[{\"unified\":\"1f9e2\"}],\"military_helmet\":[{\"unified\":\"1fa96\"}],\"helmet_with_white_cross\":[{\"unified\":\"26d1-fe0f\"}],\"prayer_beads\":[{\"unified\":\"1f4ff\"}],\"lipstick\":[{\"unified\":\"1f484\"}],\"ring\":[{\"unified\":\"1f48d\"}],\"gem\":[{\"unified\":\"1f48e\"}],\"mute\":[{\"unified\":\"1f507\"}],\"speaker\":[{\"unified\":\"1f508\"}],\"sound\":[{\"unified\":\"1f509\"}],\"loud_sound\":[{\"unified\":\"1f50a\"}],\"loudspeaker\":[{\"unified\":\"1f4e2\"}],\"mega\":[{\"unified\":\"1f4e3\"}],\"postal_horn\":[{\"unified\":\"1f4ef\"}],\"bell\":[{\"unified\":\"1f514\"}],\"no_bell\":[{\"unified\":\"1f515\"}],\"musical_score\":[{\"unified\":\"1f3bc\"}],\"musical_note\":[{\"unified\":\"1f3b5\"}],\"notes\":[{\"unified\":\"1f3b6\"}],\"studio_microphone\":[{\"unified\":\"1f399-fe0f\"}],\"level_slider\":[{\"unified\":\"1f39a-fe0f\"}],\"control_knobs\":[{\"unified\":\"1f39b-fe0f\"}],\"microphone\":[{\"unified\":\"1f3a4\"}],\"headphones\":[{\"unified\":\"1f3a7\"}],\"radio\":[{\"unified\":\"1f4fb\"}],\"saxophone\":[{\"unified\":\"1f3b7\"}],\"accordion\":[{\"unified\":\"1fa97\"}],\"guitar\":[{\"unified\":\"1f3b8\"}],\"musical_keyboard\":[{\"unified\":\"1f3b9\"}],\"trumpet\":[{\"unified\":\"1f3ba\"}],\"violin\":[{\"unified\":\"1f3bb\"}],\"banjo\":[{\"unified\":\"1fa95\"}],\"drum_with_drumsticks\":[{\"unified\":\"1f941\"}],\"long_drum\":[{\"unified\":\"1fa98\"}],\"iphone\":[{\"unified\":\"1f4f1\"}],\"calling\":[{\"unified\":\"1f4f2\"}],\"phone\":[{\"unified\":\"260e-fe0f\"}],\"telephone_receiver\":[{\"unified\":\"1f4de\"}],\"pager\":[{\"unified\":\"1f4df\"}],\"fax\":[{\"unified\":\"1f4e0\"}],\"battery\":[{\"unified\":\"1f50b\"}],\"low_battery\":[{\"unified\":\"1faab\"}],\"electric_plug\":[{\"unified\":\"1f50c\"}],\"computer\":[{\"unified\":\"1f4bb\"}],\"desktop_computer\":[{\"unified\":\"1f5a5-fe0f\"}],\"printer\":[{\"unified\":\"1f5a8-fe0f\"}],\"keyboard\":[{\"unified\":\"2328-fe0f\"}],\"three_button_mouse\":[{\"unified\":\"1f5b1-fe0f\"}],\"trackball\":[{\"unified\":\"1f5b2-fe0f\"}],\"minidisc\":[{\"unified\":\"1f4bd\"}],\"floppy_disk\":[{\"unified\":\"1f4be\"}],\"cd\":[{\"unified\":\"1f4bf\"}],\"dvd\":[{\"unified\":\"1f4c0\"}],\"abacus\":[{\"unified\":\"1f9ee\"}],\"movie_camera\":[{\"unified\":\"1f3a5\"}],\"film_frames\":[{\"unified\":\"1f39e-fe0f\"}],\"film_projector\":[{\"unified\":\"1f4fd-fe0f\"}],\"clapper\":[{\"unified\":\"1f3ac\"}],\"tv\":[{\"unified\":\"1f4fa\"}],\"camera\":[{\"unified\":\"1f4f7\"}],\"camera_with_flash\":[{\"unified\":\"1f4f8\"}],\"video_camera\":[{\"unified\":\"1f4f9\"}],\"vhs\":[{\"unified\":\"1f4fc\"}],\"mag\":[{\"unified\":\"1f50d\"}],\"mag_right\":[{\"unified\":\"1f50e\"}],\"candle\":[{\"unified\":\"1f56f-fe0f\"}],\"bulb\":[{\"unified\":\"1f4a1\"}],\"flashlight\":[{\"unified\":\"1f526\"}],\"izakaya_lantern\":[{\"unified\":\"1f3ee\"}],\"diya_lamp\":[{\"unified\":\"1fa94\"}],\"notebook_with_decorative_cover\":[{\"unified\":\"1f4d4\"}],\"closed_book\":[{\"unified\":\"1f4d5\"}],\"book\":[{\"unified\":\"1f4d6\"}],\"green_book\":[{\"unified\":\"1f4d7\"}],\"blue_book\":[{\"unified\":\"1f4d8\"}],\"orange_book\":[{\"unified\":\"1f4d9\"}],\"books\":[{\"unified\":\"1f4da\"}],\"notebook\":[{\"unified\":\"1f4d3\"}],\"ledger\":[{\"unified\":\"1f4d2\"}],\"page_with_curl\":[{\"unified\":\"1f4c3\"}],\"scroll\":[{\"unified\":\"1f4dc\"}],\"page_facing_up\":[{\"unified\":\"1f4c4\"}],\"newspaper\":[{\"unified\":\"1f4f0\"}],\"rolled_up_newspaper\":[{\"unified\":\"1f5de-fe0f\"}],\"bookmark_tabs\":[{\"unified\":\"1f4d1\"}],\"bookmark\":[{\"unified\":\"1f516\"}],\"label\":[{\"unified\":\"1f3f7-fe0f\"}],\"moneybag\":[{\"unified\":\"1f4b0\"}],\"coin\":[{\"unified\":\"1fa99\"}],\"yen\":[{\"unified\":\"1f4b4\"}],\"dollar\":[{\"unified\":\"1f4b5\"}],\"euro\":[{\"unified\":\"1f4b6\"}],\"pound\":[{\"unified\":\"1f4b7\"}],\"money_with_wings\":[{\"unified\":\"1f4b8\"}],\"credit_card\":[{\"unified\":\"1f4b3\"}],\"receipt\":[{\"unified\":\"1f9fe\"}],\"chart\":[{\"unified\":\"1f4b9\"}],\"email\":[{\"unified\":\"2709-fe0f\"}],\"e-mail\":[{\"unified\":\"1f4e7\"}],\"incoming_envelope\":[{\"unified\":\"1f4e8\"}],\"envelope_with_arrow\":[{\"unified\":\"1f4e9\"}],\"outbox_tray\":[{\"unified\":\"1f4e4\"}],\"inbox_tray\":[{\"unified\":\"1f4e5\"}],\"package\":[{\"unified\":\"1f4e6\"}],\"mailbox\":[{\"unified\":\"1f4eb\"}],\"mailbox_closed\":[{\"unified\":\"1f4ea\"}],\"mailbox_with_mail\":[{\"unified\":\"1f4ec\"}],\"mailbox_with_no_mail\":[{\"unified\":\"1f4ed\"}],\"postbox\":[{\"unified\":\"1f4ee\"}],\"ballot_box_with_ballot\":[{\"unified\":\"1f5f3-fe0f\"}],\"pencil2\":[{\"unified\":\"270f-fe0f\"}],\"black_nib\":[{\"unified\":\"2712-fe0f\"}],\"lower_left_fountain_pen\":[{\"unified\":\"1f58b-fe0f\"}],\"lower_left_ballpoint_pen\":[{\"unified\":\"1f58a-fe0f\"}],\"lower_left_paintbrush\":[{\"unified\":\"1f58c-fe0f\"}],\"lower_left_crayon\":[{\"unified\":\"1f58d-fe0f\"}],\"memo\":[{\"unified\":\"1f4dd\"}],\"briefcase\":[{\"unified\":\"1f4bc\"}],\"file_folder\":[{\"unified\":\"1f4c1\"}],\"open_file_folder\":[{\"unified\":\"1f4c2\"}],\"card_index_dividers\":[{\"unified\":\"1f5c2-fe0f\"}],\"date\":[{\"unified\":\"1f4c5\"}],\"calendar\":[{\"unified\":\"1f4c6\"}],\"spiral_note_pad\":[{\"unified\":\"1f5d2-fe0f\"}],\"spiral_calendar_pad\":[{\"unified\":\"1f5d3-fe0f\"}],\"card_index\":[{\"unified\":\"1f4c7\"}],\"chart_with_upwards_trend\":[{\"unified\":\"1f4c8\"}],\"chart_with_downwards_trend\":[{\"unified\":\"1f4c9\"}],\"bar_chart\":[{\"unified\":\"1f4ca\"}],\"clipboard\":[{\"unified\":\"1f4cb\"}],\"pushpin\":[{\"unified\":\"1f4cc\"}],\"round_pushpin\":[{\"unified\":\"1f4cd\"}],\"paperclip\":[{\"unified\":\"1f4ce\"}],\"linked_paperclips\":[{\"unified\":\"1f587-fe0f\"}],\"straight_ruler\":[{\"unified\":\"1f4cf\"}],\"triangular_ruler\":[{\"unified\":\"1f4d0\"}],\"scissors\":[{\"unified\":\"2702-fe0f\"}],\"card_file_box\":[{\"unified\":\"1f5c3-fe0f\"}],\"file_cabinet\":[{\"unified\":\"1f5c4-fe0f\"}],\"wastebasket\":[{\"unified\":\"1f5d1-fe0f\"}],\"lock\":[{\"unified\":\"1f512\"}],\"unlock\":[{\"unified\":\"1f513\"}],\"lock_with_ink_pen\":[{\"unified\":\"1f50f\"}],\"closed_lock_with_key\":[{\"unified\":\"1f510\"}],\"key\":[{\"unified\":\"1f511\"}],\"old_key\":[{\"unified\":\"1f5dd-fe0f\"}],\"hammer\":[{\"unified\":\"1f528\"}],\"axe\":[{\"unified\":\"1fa93\"}],\"pick\":[{\"unified\":\"26cf-fe0f\"}],\"hammer_and_pick\":[{\"unified\":\"2692-fe0f\"}],\"hammer_and_wrench\":[{\"unified\":\"1f6e0-fe0f\"}],\"dagger_knife\":[{\"unified\":\"1f5e1-fe0f\"}],\"crossed_swords\":[{\"unified\":\"2694-fe0f\"}],\"gun\":[{\"unified\":\"1f52b\"}],\"boomerang\":[{\"unified\":\"1fa83\"}],\"bow_and_arrow\":[{\"unified\":\"1f3f9\"}],\"shield\":[{\"unified\":\"1f6e1-fe0f\"}],\"carpentry_saw\":[{\"unified\":\"1fa9a\"}],\"wrench\":[{\"unified\":\"1f527\"}],\"screwdriver\":[{\"unified\":\"1fa9b\"}],\"nut_and_bolt\":[{\"unified\":\"1f529\"}],\"gear\":[{\"unified\":\"2699-fe0f\"}],\"compression\":[{\"unified\":\"1f5dc-fe0f\"}],\"scales\":[{\"unified\":\"2696-fe0f\"}],\"probing_cane\":[{\"unified\":\"1f9af\"}],\"link\":[{\"unified\":\"1f517\"}],\"chains\":[{\"unified\":\"26d3-fe0f\"}],\"hook\":[{\"unified\":\"1fa9d\"}],\"toolbox\":[{\"unified\":\"1f9f0\"}],\"magnet\":[{\"unified\":\"1f9f2\"}],\"ladder\":[{\"unified\":\"1fa9c\"}],\"alembic\":[{\"unified\":\"2697-fe0f\"}],\"test_tube\":[{\"unified\":\"1f9ea\"}],\"petri_dish\":[{\"unified\":\"1f9eb\"}],\"dna\":[{\"unified\":\"1f9ec\"}],\"microscope\":[{\"unified\":\"1f52c\"}],\"telescope\":[{\"unified\":\"1f52d\"}],\"satellite_antenna\":[{\"unified\":\"1f4e1\"}],\"syringe\":[{\"unified\":\"1f489\"}],\"drop_of_blood\":[{\"unified\":\"1fa78\"}],\"pill\":[{\"unified\":\"1f48a\"}],\"adhesive_bandage\":[{\"unified\":\"1fa79\"}],\"crutch\":[{\"unified\":\"1fa7c\"}],\"stethoscope\":[{\"unified\":\"1fa7a\"}],\"x-ray\":[{\"unified\":\"1fa7b\"}],\"door\":[{\"unified\":\"1f6aa\"}],\"elevator\":[{\"unified\":\"1f6d7\"}],\"mirror\":[{\"unified\":\"1fa9e\"}],\"window\":[{\"unified\":\"1fa9f\"}],\"bed\":[{\"unified\":\"1f6cf-fe0f\"}],\"couch_and_lamp\":[{\"unified\":\"1f6cb-fe0f\"}],\"chair\":[{\"unified\":\"1fa91\"}],\"toilet\":[{\"unified\":\"1f6bd\"}],\"plunger\":[{\"unified\":\"1faa0\"}],\"shower\":[{\"unified\":\"1f6bf\"}],\"bathtub\":[{\"unified\":\"1f6c1\"}],\"mouse_trap\":[{\"unified\":\"1faa4\"}],\"razor\":[{\"unified\":\"1fa92\"}],\"lotion_bottle\":[{\"unified\":\"1f9f4\"}],\"safety_pin\":[{\"unified\":\"1f9f7\"}],\"broom\":[{\"unified\":\"1f9f9\"}],\"basket\":[{\"unified\":\"1f9fa\"}],\"roll_of_paper\":[{\"unified\":\"1f9fb\"}],\"bucket\":[{\"unified\":\"1faa3\"}],\"soap\":[{\"unified\":\"1f9fc\"}],\"bubbles\":[{\"unified\":\"1fae7\"}],\"toothbrush\":[{\"unified\":\"1faa5\"}],\"sponge\":[{\"unified\":\"1f9fd\"}],\"fire_extinguisher\":[{\"unified\":\"1f9ef\"}],\"shopping_trolley\":[{\"unified\":\"1f6d2\"}],\"smoking\":[{\"unified\":\"1f6ac\"}],\"coffin\":[{\"unified\":\"26b0-fe0f\"}],\"headstone\":[{\"unified\":\"1faa6\"}],\"funeral_urn\":[{\"unified\":\"26b1-fe0f\"}],\"moyai\":[{\"unified\":\"1f5ff\"}],\"placard\":[{\"unified\":\"1faa7\"}],\"identification_card\":[{\"unified\":\"1faaa\"}],\"atm\":[{\"unified\":\"1f3e7\"}],\"put_litter_in_its_place\":[{\"unified\":\"1f6ae\"}],\"potable_water\":[{\"unified\":\"1f6b0\"}],\"wheelchair\":[{\"unified\":\"267f\"}],\"mens\":[{\"unified\":\"1f6b9\"}],\"womens\":[{\"unified\":\"1f6ba\"}],\"restroom\":[{\"unified\":\"1f6bb\"}],\"baby_symbol\":[{\"unified\":\"1f6bc\"}],\"wc\":[{\"unified\":\"1f6be\"}],\"passport_control\":[{\"unified\":\"1f6c2\"}],\"customs\":[{\"unified\":\"1f6c3\"}],\"baggage_claim\":[{\"unified\":\"1f6c4\"}],\"left_luggage\":[{\"unified\":\"1f6c5\"}],\"warning\":[{\"unified\":\"26a0-fe0f\"}],\"children_crossing\":[{\"unified\":\"1f6b8\"}],\"no_entry\":[{\"unified\":\"26d4\"}],\"no_entry_sign\":[{\"unified\":\"1f6ab\"}],\"no_bicycles\":[{\"unified\":\"1f6b3\"}],\"no_smoking\":[{\"unified\":\"1f6ad\"}],\"do_not_litter\":[{\"unified\":\"1f6af\"}],\"non-potable_water\":[{\"unified\":\"1f6b1\"}],\"no_pedestrians\":[{\"unified\":\"1f6b7\"}],\"no_mobile_phones\":[{\"unified\":\"1f4f5\"}],\"underage\":[{\"unified\":\"1f51e\"}],\"radioactive_sign\":[{\"unified\":\"2622-fe0f\"}],\"biohazard_sign\":[{\"unified\":\"2623-fe0f\"}],\"arrow_up\":[{\"unified\":\"2b06-fe0f\"}],\"arrow_upper_right\":[{\"unified\":\"2197-fe0f\"}],\"arrow_right\":[{\"unified\":\"27a1-fe0f\"}],\"arrow_lower_right\":[{\"unified\":\"2198-fe0f\"}],\"arrow_down\":[{\"unified\":\"2b07-fe0f\"}],\"arrow_lower_left\":[{\"unified\":\"2199-fe0f\"}],\"arrow_left\":[{\"unified\":\"2b05-fe0f\"}],\"arrow_upper_left\":[{\"unified\":\"2196-fe0f\"}],\"arrow_up_down\":[{\"unified\":\"2195-fe0f\"}],\"left_right_arrow\":[{\"unified\":\"2194-fe0f\"}],\"leftwards_arrow_with_hook\":[{\"unified\":\"21a9-fe0f\"}],\"arrow_right_hook\":[{\"unified\":\"21aa-fe0f\"}],\"arrow_heading_up\":[{\"unified\":\"2934-fe0f\"}],\"arrow_heading_down\":[{\"unified\":\"2935-fe0f\"}],\"arrows_clockwise\":[{\"unified\":\"1f503\"}],\"arrows_counterclockwise\":[{\"unified\":\"1f504\"}],\"back\":[{\"unified\":\"1f519\"}],\"end\":[{\"unified\":\"1f51a\"}],\"on\":[{\"unified\":\"1f51b\"}],\"soon\":[{\"unified\":\"1f51c\"}],\"top\":[{\"unified\":\"1f51d\"}],\"place_of_worship\":[{\"unified\":\"1f6d0\"}],\"atom_symbol\":[{\"unified\":\"269b-fe0f\"}],\"om_symbol\":[{\"unified\":\"1f549-fe0f\"}],\"star_of_david\":[{\"unified\":\"2721-fe0f\"}],\"wheel_of_dharma\":[{\"unified\":\"2638-fe0f\"}],\"yin_yang\":[{\"unified\":\"262f-fe0f\"}],\"latin_cross\":[{\"unified\":\"271d-fe0f\"}],\"orthodox_cross\":[{\"unified\":\"2626-fe0f\"}],\"star_and_crescent\":[{\"unified\":\"262a-fe0f\"}],\"peace_symbol\":[{\"unified\":\"262e-fe0f\"}],\"menorah_with_nine_branches\":[{\"unified\":\"1f54e\"}],\"six_pointed_star\":[{\"unified\":\"1f52f\"}],\"aries\":[{\"unified\":\"2648\"}],\"taurus\":[{\"unified\":\"2649\"}],\"gemini\":[{\"unified\":\"264a\"}],\"cancer\":[{\"unified\":\"264b\"}],\"leo\":[{\"unified\":\"264c\"}],\"virgo\":[{\"unified\":\"264d\"}],\"libra\":[{\"unified\":\"264e\"}],\"scorpius\":[{\"unified\":\"264f\"}],\"sagittarius\":[{\"unified\":\"2650\"}],\"capricorn\":[{\"unified\":\"2651\"}],\"aquarius\":[{\"unified\":\"2652\"}],\"pisces\":[{\"unified\":\"2653\"}],\"ophiuchus\":[{\"unified\":\"26ce\"}],\"twisted_rightwards_arrows\":[{\"unified\":\"1f500\"}],\"repeat\":[{\"unified\":\"1f501\"}],\"repeat_one\":[{\"unified\":\"1f502\"}],\"arrow_forward\":[{\"unified\":\"25b6-fe0f\"}],\"fast_forward\":[{\"unified\":\"23e9\"}],\"black_right_pointing_double_triangle_with_vertical_bar\":[{\"unified\":\"23ed-fe0f\"}],\"black_right_pointing_triangle_with_double_vertical_bar\":[{\"unified\":\"23ef-fe0f\"}],\"arrow_backward\":[{\"unified\":\"25c0-fe0f\"}],\"rewind\":[{\"unified\":\"23ea\"}],\"black_left_pointing_double_triangle_with_vertical_bar\":[{\"unified\":\"23ee-fe0f\"}],\"arrow_up_small\":[{\"unified\":\"1f53c\"}],\"arrow_double_up\":[{\"unified\":\"23eb\"}],\"arrow_down_small\":[{\"unified\":\"1f53d\"}],\"arrow_double_down\":[{\"unified\":\"23ec\"}],\"double_vertical_bar\":[{\"unified\":\"23f8-fe0f\"}],\"black_square_for_stop\":[{\"unified\":\"23f9-fe0f\"}],\"black_circle_for_record\":[{\"unified\":\"23fa-fe0f\"}],\"eject\":[{\"unified\":\"23cf-fe0f\"}],\"cinema\":[{\"unified\":\"1f3a6\"}],\"low_brightness\":[{\"unified\":\"1f505\"}],\"high_brightness\":[{\"unified\":\"1f506\"}],\"signal_strength\":[{\"unified\":\"1f4f6\"}],\"vibration_mode\":[{\"unified\":\"1f4f3\"}],\"mobile_phone_off\":[{\"unified\":\"1f4f4\"}],\"female_sign\":[{\"unified\":\"2640-fe0f\"}],\"male_sign\":[{\"unified\":\"2642-fe0f\"}],\"transgender_symbol\":[{\"unified\":\"26a7-fe0f\"}],\"heavy_multiplication_x\":[{\"unified\":\"2716-fe0f\"}],\"heavy_plus_sign\":[{\"unified\":\"2795\"}],\"heavy_minus_sign\":[{\"unified\":\"2796\"}],\"heavy_division_sign\":[{\"unified\":\"2797\"}],\"heavy_equals_sign\":[{\"unified\":\"1f7f0\"}],\"infinity\":[{\"unified\":\"267e-fe0f\"}],\"bangbang\":[{\"unified\":\"203c-fe0f\"}],\"interrobang\":[{\"unified\":\"2049-fe0f\"}],\"question\":[{\"unified\":\"2753\"}],\"grey_question\":[{\"unified\":\"2754\"}],\"grey_exclamation\":[{\"unified\":\"2755\"}],\"exclamation\":[{\"unified\":\"2757\"}],\"wavy_dash\":[{\"unified\":\"3030-fe0f\"}],\"currency_exchange\":[{\"unified\":\"1f4b1\"}],\"heavy_dollar_sign\":[{\"unified\":\"1f4b2\"}],\"medical_symbol\":[{\"unified\":\"2695-fe0f\"}],\"recycle\":[{\"unified\":\"267b-fe0f\"}],\"fleur_de_lis\":[{\"unified\":\"269c-fe0f\"}],\"trident\":[{\"unified\":\"1f531\"}],\"name_badge\":[{\"unified\":\"1f4db\"}],\"beginner\":[{\"unified\":\"1f530\"}],\"o\":[{\"unified\":\"2b55\"}],\"white_check_mark\":[{\"unified\":\"2705\"}],\"ballot_box_with_check\":[{\"unified\":\"2611-fe0f\"}],\"heavy_check_mark\":[{\"unified\":\"2714-fe0f\"}],\"x\":[{\"unified\":\"274c\"}],\"negative_squared_cross_mark\":[{\"unified\":\"274e\"}],\"curly_loop\":[{\"unified\":\"27b0\"}],\"loop\":[{\"unified\":\"27bf\"}],\"part_alternation_mark\":[{\"unified\":\"303d-fe0f\"}],\"eight_spoked_asterisk\":[{\"unified\":\"2733-fe0f\"}],\"eight_pointed_black_star\":[{\"unified\":\"2734-fe0f\"}],\"sparkle\":[{\"unified\":\"2747-fe0f\"}],\"copyright\":[{\"unified\":\"00a9-fe0f\"}],\"registered\":[{\"unified\":\"00ae-fe0f\"}],\"tm\":[{\"unified\":\"2122-fe0f\"}],\"hash\":[{\"unified\":\"0023-fe0f-20e3\"}],\"keycap_star\":[{\"unified\":\"002a-fe0f-20e3\"}],\"zero\":[{\"unified\":\"0030-fe0f-20e3\"}],\"one\":[{\"unified\":\"0031-fe0f-20e3\"}],\"two\":[{\"unified\":\"0032-fe0f-20e3\"}],\"three\":[{\"unified\":\"0033-fe0f-20e3\"}],\"four\":[{\"unified\":\"0034-fe0f-20e3\"}],\"five\":[{\"unified\":\"0035-fe0f-20e3\"}],\"six\":[{\"unified\":\"0036-fe0f-20e3\"}],\"seven\":[{\"unified\":\"0037-fe0f-20e3\"}],\"eight\":[{\"unified\":\"0038-fe0f-20e3\"}],\"nine\":[{\"unified\":\"0039-fe0f-20e3\"}],\"keycap_ten\":[{\"unified\":\"1f51f\"}],\"capital_abcd\":[{\"unified\":\"1f520\"}],\"abcd\":[{\"unified\":\"1f521\"}],\"symbols\":[{\"unified\":\"1f523\"}],\"abc\":[{\"unified\":\"1f524\"}],\"a\":[{\"unified\":\"1f170-fe0f\"}],\"ab\":[{\"unified\":\"1f18e\"}],\"b\":[{\"unified\":\"1f171-fe0f\"}],\"cl\":[{\"unified\":\"1f191\"}],\"cool\":[{\"unified\":\"1f192\"}],\"free\":[{\"unified\":\"1f193\"}],\"information_source\":[{\"unified\":\"2139-fe0f\"}],\"id\":[{\"unified\":\"1f194\"}],\"m\":[{\"unified\":\"24c2-fe0f\"}],\"new\":[{\"unified\":\"1f195\"}],\"ng\":[{\"unified\":\"1f196\"}],\"o2\":[{\"unified\":\"1f17e-fe0f\"}],\"ok\":[{\"unified\":\"1f197\"}],\"parking\":[{\"unified\":\"1f17f-fe0f\"}],\"sos\":[{\"unified\":\"1f198\"}],\"up\":[{\"unified\":\"1f199\"}],\"vs\":[{\"unified\":\"1f19a\"}],\"koko\":[{\"unified\":\"1f201\"}],\"sa\":[{\"unified\":\"1f202-fe0f\"}],\"u6708\":[{\"unified\":\"1f237-fe0f\"}],\"u6709\":[{\"unified\":\"1f236\"}],\"u6307\":[{\"unified\":\"1f22f\"}],\"ideograph_advantage\":[{\"unified\":\"1f250\"}],\"u5272\":[{\"unified\":\"1f239\"}],\"u7121\":[{\"unified\":\"1f21a\"}],\"u7981\":[{\"unified\":\"1f232\"}],\"accept\":[{\"unified\":\"1f251\"}],\"u7533\":[{\"unified\":\"1f238\"}],\"u5408\":[{\"unified\":\"1f234\"}],\"u7a7a\":[{\"unified\":\"1f233\"}],\"congratulations\":[{\"unified\":\"3297-fe0f\"}],\"secret\":[{\"unified\":\"3299-fe0f\"}],\"u55b6\":[{\"unified\":\"1f23a\"}],\"u6e80\":[{\"unified\":\"1f235\"}],\"red_circle\":[{\"unified\":\"1f534\"}],\"large_orange_circle\":[{\"unified\":\"1f7e0\"}],\"large_yellow_circle\":[{\"unified\":\"1f7e1\"}],\"large_green_circle\":[{\"unified\":\"1f7e2\"}],\"large_blue_circle\":[{\"unified\":\"1f535\"}],\"large_purple_circle\":[{\"unified\":\"1f7e3\"}],\"large_brown_circle\":[{\"unified\":\"1f7e4\"}],\"black_circle\":[{\"unified\":\"26ab\"}],\"white_circle\":[{\"unified\":\"26aa\"}],\"large_red_square\":[{\"unified\":\"1f7e5\"}],\"large_orange_square\":[{\"unified\":\"1f7e7\"}],\"large_yellow_square\":[{\"unified\":\"1f7e8\"}],\"large_green_square\":[{\"unified\":\"1f7e9\"}],\"large_blue_square\":[{\"unified\":\"1f7e6\"}],\"large_purple_square\":[{\"unified\":\"1f7ea\"}],\"large_brown_square\":[{\"unified\":\"1f7eb\"}],\"black_large_square\":[{\"unified\":\"2b1b\"}],\"white_large_square\":[{\"unified\":\"2b1c\"}],\"black_medium_square\":[{\"unified\":\"25fc-fe0f\"}],\"white_medium_square\":[{\"unified\":\"25fb-fe0f\"}],\"black_medium_small_square\":[{\"unified\":\"25fe\"}],\"white_medium_small_square\":[{\"unified\":\"25fd\"}],\"black_small_square\":[{\"unified\":\"25aa-fe0f\"}],\"white_small_square\":[{\"unified\":\"25ab-fe0f\"}],\"large_orange_diamond\":[{\"unified\":\"1f536\"}],\"large_blue_diamond\":[{\"unified\":\"1f537\"}],\"small_orange_diamond\":[{\"unified\":\"1f538\"}],\"small_blue_diamond\":[{\"unified\":\"1f539\"}],\"small_red_triangle\":[{\"unified\":\"1f53a\"}],\"small_red_triangle_down\":[{\"unified\":\"1f53b\"}],\"diamond_shape_with_a_dot_inside\":[{\"unified\":\"1f4a0\"}],\"radio_button\":[{\"unified\":\"1f518\"}],\"white_square_button\":[{\"unified\":\"1f533\"}],\"black_square_button\":[{\"unified\":\"1f532\"}],\"checkered_flag\":[{\"unified\":\"1f3c1\"}],\"triangular_flag_on_post\":[{\"unified\":\"1f6a9\"}],\"crossed_flags\":[{\"unified\":\"1f38c\"}],\"waving_black_flag\":[{\"unified\":\"1f3f4\"}],\"waving_white_flag\":[{\"unified\":\"1f3f3-fe0f\"}],\"rainbow-flag\":[{\"unified\":\"1f3f3-fe0f-200d-1f308\"}],\"transgender_flag\":[{\"unified\":\"1f3f3-fe0f-200d-26a7-fe0f\"}],\"pirate_flag\":[{\"unified\":\"1f3f4-200d-2620-fe0f\"}],\"flag-ac\":[{\"unified\":\"1f1e6-1f1e8\"}],\"flag-ad\":[{\"unified\":\"1f1e6-1f1e9\"}],\"flag-ae\":[{\"unified\":\"1f1e6-1f1ea\"}],\"flag-af\":[{\"unified\":\"1f1e6-1f1eb\"}],\"flag-ag\":[{\"unified\":\"1f1e6-1f1ec\"}],\"flag-ai\":[{\"unified\":\"1f1e6-1f1ee\"}],\"flag-al\":[{\"unified\":\"1f1e6-1f1f1\"}],\"flag-am\":[{\"unified\":\"1f1e6-1f1f2\"}],\"flag-ao\":[{\"unified\":\"1f1e6-1f1f4\"}],\"flag-aq\":[{\"unified\":\"1f1e6-1f1f6\"}],\"flag-ar\":[{\"unified\":\"1f1e6-1f1f7\"}],\"flag-as\":[{\"unified\":\"1f1e6-1f1f8\"}],\"flag-at\":[{\"unified\":\"1f1e6-1f1f9\"}],\"flag-au\":[{\"unified\":\"1f1e6-1f1fa\"}],\"flag-aw\":[{\"unified\":\"1f1e6-1f1fc\"}],\"flag-ax\":[{\"unified\":\"1f1e6-1f1fd\"}],\"flag-az\":[{\"unified\":\"1f1e6-1f1ff\"}],\"flag-ba\":[{\"unified\":\"1f1e7-1f1e6\"}],\"flag-bb\":[{\"unified\":\"1f1e7-1f1e7\"}],\"flag-bd\":[{\"unified\":\"1f1e7-1f1e9\"}],\"flag-be\":[{\"unified\":\"1f1e7-1f1ea\"}],\"flag-bf\":[{\"unified\":\"1f1e7-1f1eb\"}],\"flag-bg\":[{\"unified\":\"1f1e7-1f1ec\"}],\"flag-bh\":[{\"unified\":\"1f1e7-1f1ed\"}],\"flag-bi\":[{\"unified\":\"1f1e7-1f1ee\"}],\"flag-bj\":[{\"unified\":\"1f1e7-1f1ef\"}],\"flag-bl\":[{\"unified\":\"1f1e7-1f1f1\"}],\"flag-bm\":[{\"unified\":\"1f1e7-1f1f2\"}],\"flag-bn\":[{\"unified\":\"1f1e7-1f1f3\"}],\"flag-bo\":[{\"unified\":\"1f1e7-1f1f4\"}],\"flag-bq\":[{\"unified\":\"1f1e7-1f1f6\"}],\"flag-br\":[{\"unified\":\"1f1e7-1f1f7\"}],\"flag-bs\":[{\"unified\":\"1f1e7-1f1f8\"}],\"flag-bt\":[{\"unified\":\"1f1e7-1f1f9\"}],\"flag-bv\":[{\"unified\":\"1f1e7-1f1fb\"}],\"flag-bw\":[{\"unified\":\"1f1e7-1f1fc\"}],\"flag-by\":[{\"unified\":\"1f1e7-1f1fe\"}],\"flag-bz\":[{\"unified\":\"1f1e7-1f1ff\"}],\"flag-ca\":[{\"unified\":\"1f1e8-1f1e6\"}],\"flag-cc\":[{\"unified\":\"1f1e8-1f1e8\"}],\"flag-cd\":[{\"unified\":\"1f1e8-1f1e9\"}],\"flag-cf\":[{\"unified\":\"1f1e8-1f1eb\"}],\"flag-cg\":[{\"unified\":\"1f1e8-1f1ec\"}],\"flag-ch\":[{\"unified\":\"1f1e8-1f1ed\"}],\"flag-ci\":[{\"unified\":\"1f1e8-1f1ee\"}],\"flag-ck\":[{\"unified\":\"1f1e8-1f1f0\"}],\"flag-cl\":[{\"unified\":\"1f1e8-1f1f1\"}],\"flag-cm\":[{\"unified\":\"1f1e8-1f1f2\"}],\"cn\":[{\"unified\":\"1f1e8-1f1f3\"}],\"flag-co\":[{\"unified\":\"1f1e8-1f1f4\"}],\"flag-cp\":[{\"unified\":\"1f1e8-1f1f5\"}],\"flag-cr\":[{\"unified\":\"1f1e8-1f1f7\"}],\"flag-cu\":[{\"unified\":\"1f1e8-1f1fa\"}],\"flag-cv\":[{\"unified\":\"1f1e8-1f1fb\"}],\"flag-cw\":[{\"unified\":\"1f1e8-1f1fc\"}],\"flag-cx\":[{\"unified\":\"1f1e8-1f1fd\"}],\"flag-cy\":[{\"unified\":\"1f1e8-1f1fe\"}],\"flag-cz\":[{\"unified\":\"1f1e8-1f1ff\"}],\"de\":[{\"unified\":\"1f1e9-1f1ea\"}],\"flag-dg\":[{\"unified\":\"1f1e9-1f1ec\"}],\"flag-dj\":[{\"unified\":\"1f1e9-1f1ef\"}],\"flag-dk\":[{\"unified\":\"1f1e9-1f1f0\"}],\"flag-dm\":[{\"unified\":\"1f1e9-1f1f2\"}],\"flag-do\":[{\"unified\":\"1f1e9-1f1f4\"}],\"flag-dz\":[{\"unified\":\"1f1e9-1f1ff\"}],\"flag-ea\":[{\"unified\":\"1f1ea-1f1e6\"}],\"flag-ec\":[{\"unified\":\"1f1ea-1f1e8\"}],\"flag-ee\":[{\"unified\":\"1f1ea-1f1ea\"}],\"flag-eg\":[{\"unified\":\"1f1ea-1f1ec\"}],\"flag-eh\":[{\"unified\":\"1f1ea-1f1ed\"}],\"flag-er\":[{\"unified\":\"1f1ea-1f1f7\"}],\"es\":[{\"unified\":\"1f1ea-1f1f8\"}],\"flag-et\":[{\"unified\":\"1f1ea-1f1f9\"}],\"flag-eu\":[{\"unified\":\"1f1ea-1f1fa\"}],\"flag-fi\":[{\"unified\":\"1f1eb-1f1ee\"}],\"flag-fj\":[{\"unified\":\"1f1eb-1f1ef\"}],\"flag-fk\":[{\"unified\":\"1f1eb-1f1f0\"}],\"flag-fm\":[{\"unified\":\"1f1eb-1f1f2\"}],\"flag-fo\":[{\"unified\":\"1f1eb-1f1f4\"}],\"fr\":[{\"unified\":\"1f1eb-1f1f7\"}],\"flag-ga\":[{\"unified\":\"1f1ec-1f1e6\"}],\"gb\":[{\"unified\":\"1f1ec-1f1e7\"}],\"flag-gd\":[{\"unified\":\"1f1ec-1f1e9\"}],\"flag-ge\":[{\"unified\":\"1f1ec-1f1ea\"}],\"flag-gf\":[{\"unified\":\"1f1ec-1f1eb\"}],\"flag-gg\":[{\"unified\":\"1f1ec-1f1ec\"}],\"flag-gh\":[{\"unified\":\"1f1ec-1f1ed\"}],\"flag-gi\":[{\"unified\":\"1f1ec-1f1ee\"}],\"flag-gl\":[{\"unified\":\"1f1ec-1f1f1\"}],\"flag-gm\":[{\"unified\":\"1f1ec-1f1f2\"}],\"flag-gn\":[{\"unified\":\"1f1ec-1f1f3\"}],\"flag-gp\":[{\"unified\":\"1f1ec-1f1f5\"}],\"flag-gq\":[{\"unified\":\"1f1ec-1f1f6\"}],\"flag-gr\":[{\"unified\":\"1f1ec-1f1f7\"}],\"flag-gs\":[{\"unified\":\"1f1ec-1f1f8\"}],\"flag-gt\":[{\"unified\":\"1f1ec-1f1f9\"}],\"flag-gu\":[{\"unified\":\"1f1ec-1f1fa\"}],\"flag-gw\":[{\"unified\":\"1f1ec-1f1fc\"}],\"flag-gy\":[{\"unified\":\"1f1ec-1f1fe\"}],\"flag-hk\":[{\"unified\":\"1f1ed-1f1f0\"}],\"flag-hm\":[{\"unified\":\"1f1ed-1f1f2\"}],\"flag-hn\":[{\"unified\":\"1f1ed-1f1f3\"}],\"flag-hr\":[{\"unified\":\"1f1ed-1f1f7\"}],\"flag-ht\":[{\"unified\":\"1f1ed-1f1f9\"}],\"flag-hu\":[{\"unified\":\"1f1ed-1f1fa\"}],\"flag-ic\":[{\"unified\":\"1f1ee-1f1e8\"}],\"flag-id\":[{\"unified\":\"1f1ee-1f1e9\"}],\"flag-ie\":[{\"unified\":\"1f1ee-1f1ea\"}],\"flag-il\":[{\"unified\":\"1f1ee-1f1f1\"}],\"flag-im\":[{\"unified\":\"1f1ee-1f1f2\"}],\"flag-in\":[{\"unified\":\"1f1ee-1f1f3\"}],\"flag-io\":[{\"unified\":\"1f1ee-1f1f4\"}],\"flag-iq\":[{\"unified\":\"1f1ee-1f1f6\"}],\"flag-ir\":[{\"unified\":\"1f1ee-1f1f7\"}],\"flag-is\":[{\"unified\":\"1f1ee-1f1f8\"}],\"it\":[{\"unified\":\"1f1ee-1f1f9\"}],\"flag-je\":[{\"unified\":\"1f1ef-1f1ea\"}],\"flag-jm\":[{\"unified\":\"1f1ef-1f1f2\"}],\"flag-jo\":[{\"unified\":\"1f1ef-1f1f4\"}],\"jp\":[{\"unified\":\"1f1ef-1f1f5\"}],\"flag-ke\":[{\"unified\":\"1f1f0-1f1ea\"}],\"flag-kg\":[{\"unified\":\"1f1f0-1f1ec\"}],\"flag-kh\":[{\"unified\":\"1f1f0-1f1ed\"}],\"flag-ki\":[{\"unified\":\"1f1f0-1f1ee\"}],\"flag-km\":[{\"unified\":\"1f1f0-1f1f2\"}],\"flag-kn\":[{\"unified\":\"1f1f0-1f1f3\"}],\"flag-kp\":[{\"unified\":\"1f1f0-1f1f5\"}],\"kr\":[{\"unified\":\"1f1f0-1f1f7\"}],\"flag-kw\":[{\"unified\":\"1f1f0-1f1fc\"}],\"flag-ky\":[{\"unified\":\"1f1f0-1f1fe\"}],\"flag-kz\":[{\"unified\":\"1f1f0-1f1ff\"}],\"flag-la\":[{\"unified\":\"1f1f1-1f1e6\"}],\"flag-lb\":[{\"unified\":\"1f1f1-1f1e7\"}],\"flag-lc\":[{\"unified\":\"1f1f1-1f1e8\"}],\"flag-li\":[{\"unified\":\"1f1f1-1f1ee\"}],\"flag-lk\":[{\"unified\":\"1f1f1-1f1f0\"}],\"flag-lr\":[{\"unified\":\"1f1f1-1f1f7\"}],\"flag-ls\":[{\"unified\":\"1f1f1-1f1f8\"}],\"flag-lt\":[{\"unified\":\"1f1f1-1f1f9\"}],\"flag-lu\":[{\"unified\":\"1f1f1-1f1fa\"}],\"flag-lv\":[{\"unified\":\"1f1f1-1f1fb\"}],\"flag-ly\":[{\"unified\":\"1f1f1-1f1fe\"}],\"flag-ma\":[{\"unified\":\"1f1f2-1f1e6\"}],\"flag-mc\":[{\"unified\":\"1f1f2-1f1e8\"}],\"flag-md\":[{\"unified\":\"1f1f2-1f1e9\"}],\"flag-me\":[{\"unified\":\"1f1f2-1f1ea\"}],\"flag-mf\":[{\"unified\":\"1f1f2-1f1eb\"}],\"flag-mg\":[{\"unified\":\"1f1f2-1f1ec\"}],\"flag-mh\":[{\"unified\":\"1f1f2-1f1ed\"}],\"flag-mk\":[{\"unified\":\"1f1f2-1f1f0\"}],\"flag-ml\":[{\"unified\":\"1f1f2-1f1f1\"}],\"flag-mm\":[{\"unified\":\"1f1f2-1f1f2\"}],\"flag-mn\":[{\"unified\":\"1f1f2-1f1f3\"}],\"flag-mo\":[{\"unified\":\"1f1f2-1f1f4\"}],\"flag-mp\":[{\"unified\":\"1f1f2-1f1f5\"}],\"flag-mq\":[{\"unified\":\"1f1f2-1f1f6\"}],\"flag-mr\":[{\"unified\":\"1f1f2-1f1f7\"}],\"flag-ms\":[{\"unified\":\"1f1f2-1f1f8\"}],\"flag-mt\":[{\"unified\":\"1f1f2-1f1f9\"}],\"flag-mu\":[{\"unified\":\"1f1f2-1f1fa\"}],\"flag-mv\":[{\"unified\":\"1f1f2-1f1fb\"}],\"flag-mw\":[{\"unified\":\"1f1f2-1f1fc\"}],\"flag-mx\":[{\"unified\":\"1f1f2-1f1fd\"}],\"flag-my\":[{\"unified\":\"1f1f2-1f1fe\"}],\"flag-mz\":[{\"unified\":\"1f1f2-1f1ff\"}],\"flag-na\":[{\"unified\":\"1f1f3-1f1e6\"}],\"flag-nc\":[{\"unified\":\"1f1f3-1f1e8\"}],\"flag-ne\":[{\"unified\":\"1f1f3-1f1ea\"}],\"flag-nf\":[{\"unified\":\"1f1f3-1f1eb\"}],\"flag-ng\":[{\"unified\":\"1f1f3-1f1ec\"}],\"flag-ni\":[{\"unified\":\"1f1f3-1f1ee\"}],\"flag-nl\":[{\"unified\":\"1f1f3-1f1f1\"}],\"flag-no\":[{\"unified\":\"1f1f3-1f1f4\"}],\"flag-np\":[{\"unified\":\"1f1f3-1f1f5\"}],\"flag-nr\":[{\"unified\":\"1f1f3-1f1f7\"}],\"flag-nu\":[{\"unified\":\"1f1f3-1f1fa\"}],\"flag-nz\":[{\"unified\":\"1f1f3-1f1ff\"}],\"flag-om\":[{\"unified\":\"1f1f4-1f1f2\"}],\"flag-pa\":[{\"unified\":\"1f1f5-1f1e6\"}],\"flag-pe\":[{\"unified\":\"1f1f5-1f1ea\"}],\"flag-pf\":[{\"unified\":\"1f1f5-1f1eb\"}],\"flag-pg\":[{\"unified\":\"1f1f5-1f1ec\"}],\"flag-ph\":[{\"unified\":\"1f1f5-1f1ed\"}],\"flag-pk\":[{\"unified\":\"1f1f5-1f1f0\"}],\"flag-pl\":[{\"unified\":\"1f1f5-1f1f1\"}],\"flag-pm\":[{\"unified\":\"1f1f5-1f1f2\"}],\"flag-pn\":[{\"unified\":\"1f1f5-1f1f3\"}],\"flag-pr\":[{\"unified\":\"1f1f5-1f1f7\"}],\"flag-ps\":[{\"unified\":\"1f1f5-1f1f8\"}],\"flag-pt\":[{\"unified\":\"1f1f5-1f1f9\"}],\"flag-pw\":[{\"unified\":\"1f1f5-1f1fc\"}],\"flag-py\":[{\"unified\":\"1f1f5-1f1fe\"}],\"flag-qa\":[{\"unified\":\"1f1f6-1f1e6\"}],\"flag-re\":[{\"unified\":\"1f1f7-1f1ea\"}],\"flag-ro\":[{\"unified\":\"1f1f7-1f1f4\"}],\"flag-rs\":[{\"unified\":\"1f1f7-1f1f8\"}],\"ru\":[{\"unified\":\"1f1f7-1f1fa\"}],\"flag-rw\":[{\"unified\":\"1f1f7-1f1fc\"}],\"flag-sa\":[{\"unified\":\"1f1f8-1f1e6\"}],\"flag-sb\":[{\"unified\":\"1f1f8-1f1e7\"}],\"flag-sc\":[{\"unified\":\"1f1f8-1f1e8\"}],\"flag-sd\":[{\"unified\":\"1f1f8-1f1e9\"}],\"flag-se\":[{\"unified\":\"1f1f8-1f1ea\"}],\"flag-sg\":[{\"unified\":\"1f1f8-1f1ec\"}],\"flag-sh\":[{\"unified\":\"1f1f8-1f1ed\"}],\"flag-si\":[{\"unified\":\"1f1f8-1f1ee\"}],\"flag-sj\":[{\"unified\":\"1f1f8-1f1ef\"}],\"flag-sk\":[{\"unified\":\"1f1f8-1f1f0\"}],\"flag-sl\":[{\"unified\":\"1f1f8-1f1f1\"}],\"flag-sm\":[{\"unified\":\"1f1f8-1f1f2\"}],\"flag-sn\":[{\"unified\":\"1f1f8-1f1f3\"}],\"flag-so\":[{\"unified\":\"1f1f8-1f1f4\"}],\"flag-sr\":[{\"unified\":\"1f1f8-1f1f7\"}],\"flag-ss\":[{\"unified\":\"1f1f8-1f1f8\"}],\"flag-st\":[{\"unified\":\"1f1f8-1f1f9\"}],\"flag-sv\":[{\"unified\":\"1f1f8-1f1fb\"}],\"flag-sx\":[{\"unified\":\"1f1f8-1f1fd\"}],\"flag-sy\":[{\"unified\":\"1f1f8-1f1fe\"}],\"flag-sz\":[{\"unified\":\"1f1f8-1f1ff\"}],\"flag-ta\":[{\"unified\":\"1f1f9-1f1e6\"}],\"flag-tc\":[{\"unified\":\"1f1f9-1f1e8\"}],\"flag-td\":[{\"unified\":\"1f1f9-1f1e9\"}],\"flag-tf\":[{\"unified\":\"1f1f9-1f1eb\"}],\"flag-tg\":[{\"unified\":\"1f1f9-1f1ec\"}],\"flag-th\":[{\"unified\":\"1f1f9-1f1ed\"}],\"flag-tj\":[{\"unified\":\"1f1f9-1f1ef\"}],\"flag-tk\":[{\"unified\":\"1f1f9-1f1f0\"}],\"flag-tl\":[{\"unified\":\"1f1f9-1f1f1\"}],\"flag-tm\":[{\"unified\":\"1f1f9-1f1f2\"}],\"flag-tn\":[{\"unified\":\"1f1f9-1f1f3\"}],\"flag-to\":[{\"unified\":\"1f1f9-1f1f4\"}],\"flag-tr\":[{\"unified\":\"1f1f9-1f1f7\"}],\"flag-tt\":[{\"unified\":\"1f1f9-1f1f9\"}],\"flag-tv\":[{\"unified\":\"1f1f9-1f1fb\"}],\"flag-tw\":[{\"unified\":\"1f1f9-1f1fc\"}],\"flag-tz\":[{\"unified\":\"1f1f9-1f1ff\"}],\"flag-ua\":[{\"unified\":\"1f1fa-1f1e6\"}],\"flag-ug\":[{\"unified\":\"1f1fa-1f1ec\"}],\"flag-um\":[{\"unified\":\"1f1fa-1f1f2\"}],\"flag-un\":[{\"unified\":\"1f1fa-1f1f3\"}],\"us\":[{\"unified\":\"1f1fa-1f1f8\"}],\"flag-uy\":[{\"unified\":\"1f1fa-1f1fe\"}],\"flag-uz\":[{\"unified\":\"1f1fa-1f1ff\"}],\"flag-va\":[{\"unified\":\"1f1fb-1f1e6\"}],\"flag-vc\":[{\"unified\":\"1f1fb-1f1e8\"}],\"flag-ve\":[{\"unified\":\"1f1fb-1f1ea\"}],\"flag-vg\":[{\"unified\":\"1f1fb-1f1ec\"}],\"flag-vi\":[{\"unified\":\"1f1fb-1f1ee\"}],\"flag-vn\":[{\"unified\":\"1f1fb-1f1f3\"}],\"flag-vu\":[{\"unified\":\"1f1fb-1f1fa\"}],\"flag-wf\":[{\"unified\":\"1f1fc-1f1eb\"}],\"flag-ws\":[{\"unified\":\"1f1fc-1f1f8\"}],\"flag-xk\":[{\"unified\":\"1f1fd-1f1f0\"}],\"flag-ye\":[{\"unified\":\"1f1fe-1f1ea\"}],\"flag-yt\":[{\"unified\":\"1f1fe-1f1f9\"}],\"flag-za\":[{\"unified\":\"1f1ff-1f1e6\"}],\"flag-zm\":[{\"unified\":\"1f1ff-1f1f2\"}],\"flag-zw\":[{\"unified\":\"1f1ff-1f1fc\"}],\"flag-england\":[{\"unified\":\"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f\"}],\"flag-scotland\":[{\"unified\":\"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f\"}],\"flag-wales\":[{\"unified\":\"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f\"}]},\"aliases\":{\"satisfied\":\"laughing\",\"grinning_face_with_star_eyes\":\"star-struck\",\"grinning_face_with_one_large_and_one_small_eye\":\"zany_face\",\"smiling_face_with_smiling_eyes_and_hand_covering_mouth\":\"face_with_hand_over_mouth\",\"face_with_finger_covering_closed_lips\":\"shushing_face\",\"face_with_one_eyebrow_raised\":\"face_with_raised_eyebrow\",\"face_with_open_mouth_vomiting\":\"face_vomiting\",\"shocked_face_with_exploding_head\":\"exploding_head\",\"serious_face_with_symbols_covering_mouth\":\"face_with_symbols_on_mouth\",\"poop\":\"hankey\",\"shit\":\"hankey\",\"collision\":\"boom\",\"raised_hand\":\"hand\",\"hand_with_index_and_middle_fingers_crossed\":\"crossed_fingers\",\"sign_of_the_horns\":\"the_horns\",\"reversed_hand_with_middle_finger_extended\":\"middle_finger\",\"thumbsup\":\"+1\",\"thumbsdown\":\"-1\",\"punch\":\"facepunch\",\"mother_christmas\":\"mrs_claus\",\"running\":\"runner\",\"man-with-bunny-ears-partying\":\"men-with-bunny-ears-partying\",\"woman-with-bunny-ears-partying\":\"women-with-bunny-ears-partying\",\"women_holding_hands\":\"two_women_holding_hands\",\"woman_and_man_holding_hands\":\"man_and_woman_holding_hands\",\"couple\":\"man_and_woman_holding_hands\",\"men_holding_hands\":\"two_men_holding_hands\",\"paw_prints\":\"feet\",\"flipper\":\"dolphin\",\"honeybee\":\"bee\",\"lady_beetle\":\"ladybug\",\"cooking\":\"fried_egg\",\"knife\":\"hocho\",\"red_car\":\"car\",\"sailboat\":\"boat\",\"waxing_gibbous_moon\":\"moon\",\"sun_small_cloud\":\"mostly_sunny\",\"sun_behind_cloud\":\"barely_sunny\",\"sun_behind_rain_cloud\":\"partly_sunny_rain\",\"lightning_cloud\":\"lightning\",\"tornado_cloud\":\"tornado\",\"tshirt\":\"shirt\",\"shoe\":\"mans_shoe\",\"telephone\":\"phone\",\"lantern\":\"izakaya_lantern\",\"open_book\":\"book\",\"envelope\":\"email\",\"pencil\":\"memo\",\"heavy_exclamation_mark\":\"exclamation\",\"staff_of_aesculapius\":\"medical_symbol\",\"flag-cn\":\"cn\",\"flag-de\":\"de\",\"flag-es\":\"es\",\"flag-fr\":\"fr\",\"uk\":\"gb\",\"flag-gb\":\"gb\",\"flag-it\":\"it\",\"flag-jp\":\"jp\",\"flag-kr\":\"kr\",\"flag-ru\":\"ru\",\"flag-us\":\"us\",\"beetle\":\"ladybug\",\"man_in_tuxedo\":\"person_in_tuxedo\"}}","const VERSIONS = [\n { v: 14, emoji: '🫠' },\n { v: 13.1, emoji: '😶‍🌫️' },\n { v: 13, emoji: '🥸' },\n { v: 12.1, emoji: '🧑‍🦰' },\n { v: 12, emoji: '🥱' },\n { v: 11, emoji: '🥰' },\n { v: 5, emoji: '🤩' },\n { v: 4, emoji: '👱‍♀️' },\n { v: 3, emoji: '🤣' },\n { v: 2, emoji: '👋🏻' },\n { v: 1, emoji: '🙃' },\n]\n\nfunction latestVersion() {\n for (const { v, emoji } of VERSIONS) {\n if (testEmoji(emoji)) {\n return v\n }\n }\n}\n\nfunction noCountryFlags() {\n if (testEmoji('🇨🇦')) {\n return false\n }\n\n return true\n}\n\nfunction testEmoji(emoji) {\n const canvas = document.createElement('canvas')\n canvas.width = canvas.height = 25\n\n const ctx = canvas.getContext('2d')\n ctx.textBaseline = 'middle'\n ctx.textAlign = 'center'\n ctx.font = `50px \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Segoe UI\", \"Apple Color Emoji\", \"Twemoji Mozilla\", \"Noto Color Emoji\", \"Android Emoji\"`\n ctx.fillStyle = '#0f0'\n ctx.fillText(emoji, 0, 0)\n\n const rgba = ctx.getImageData(0, 0, 1, 1).data.join(',')\n\n if (rgba != '0,0,0,0') {\n return true\n }\n}\n\nfunction unifiedToNative(unified) {\n let unicodes = unified.split('-')\n let codePoints = unicodes.map((u) => `0x${u}`)\n\n return String.fromCodePoint(...codePoints)\n}\n\nexport default { latestVersion, noCountryFlags, unifiedToNative }\n","import { Store } from '../helpers'\n\nconst DEFAULTS = [\n '+1',\n 'grinning',\n 'kissing_heart',\n 'heart_eyes',\n 'laughing',\n 'stuck_out_tongue_winking_eye',\n 'sweat_smile',\n 'joy',\n 'scream',\n 'disappointed',\n 'unamused',\n 'weary',\n 'sob',\n 'sunglasses',\n 'heart',\n]\n\nlet Index = null\n\nfunction add(emoji) {\n Index || (Index = Store.get('frequently') || {})\n\n const emojiId = emoji.id || emoji\n if (!emojiId) return\n\n Index[emojiId] || (Index[emojiId] = 0)\n Index[emojiId] += 1\n\n Store.set('last', emojiId)\n Store.set('frequently', Index)\n}\n\nfunction get({ maxFrequentRows, perLine }) {\n Index || (Index = Store.get('frequently'))\n let emojiIds = []\n\n if (!Index) {\n Index = {}\n\n for (let i in DEFAULTS.slice(0, perLine)) {\n const emojiId = DEFAULTS[i]\n\n Index[emojiId] = perLine - i\n emojiIds.push(emojiId)\n }\n\n return emojiIds\n }\n\n const max = maxFrequentRows * perLine\n const last = Store.get('last')\n\n for (let emojiId in Index) {\n emojiIds.push(emojiId)\n }\n\n emojiIds.sort((a, b) => {\n const aScore = Index[b]\n const bScore = Index[a]\n\n if (aScore == bScore) {\n return a.localeCompare(b)\n }\n\n return aScore - bScore\n })\n\n if (emojiIds.length > max) {\n const removedIds = emojiIds.slice(max)\n emojiIds = emojiIds.slice(0, max)\n\n for (let removedId of removedIds) {\n if (removedId == last) continue\n delete Index[removedId]\n }\n\n if (last && emojiIds.indexOf(last) == -1) {\n delete Index[emojiIds[emojiIds.length - 1]]\n emojiIds.splice(-1, 1, last)\n }\n\n Store.set('frequently', Index)\n }\n\n return emojiIds\n}\n\nexport default { add, get }\n","import { init, Data } from '../config'\n\nconst SHORTCODES_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/\n\nfunction get(emojiId) {\n if (emojiId.id) {\n return emojiId\n }\n\n return (\n Data.emojis[emojiId] ||\n Data.emojis[Data.aliases[emojiId]] ||\n Data.emojis[Data.natives[emojiId]]\n )\n}\n\nfunction getShortcodeFromNative(native) {\n return Data.natives[native]\n}\n\nlet Pool = null\nasync function search(value, { maxResults } = {}) {\n if (!value || !value.trim().length) return null\n maxResults || (maxResults = 90)\n\n await init()\n return _search(value, { maxResults })\n}\n\nfunction searchSynchronized(value, { maxResults } = {}) {\n if (!value || !value.trim().length) return null\n maxResults || (maxResults = 90)\n\n init()\n return _search(value, { maxResults })\n}\n\nfunction _search(value, { maxResults } = {}) {\n const values = value\n .toLowerCase()\n .replace(/(\\w)-/, '$1 ')\n .split(/[\\s|,]+/)\n .filter((word, i, words) => {\n return word.trim() && words.indexOf(word) == i\n })\n\n if (!values.length) return\n\n let pool = Pool || (Pool = Object.values(Data.emojis))\n let results, scores\n\n for (const value of values) {\n if (!pool.length) break\n\n results = []\n scores = {}\n\n for (const emoji of pool) {\n if (!emoji.search) continue\n const score = emoji.search.indexOf(`,${value}`)\n if (score == -1) continue\n\n results.push(emoji)\n scores[emoji.id] || (scores[emoji.id] = 0)\n scores[emoji.id] += emoji.id == value ? 0 : score + 1\n }\n\n pool = results\n }\n\n if (results.length < 2) {\n return results\n }\n\n results.sort((a, b) => {\n const aScore = scores[a.id]\n const bScore = scores[b.id]\n\n if (aScore == bScore) {\n return a.id.localeCompare(b.id)\n }\n\n return aScore - bScore\n })\n\n if (results.length > maxResults) {\n results = results.slice(0, maxResults)\n }\n\n return results\n}\n\nexport default {\n search,\n searchSynchronized,\n get,\n getShortcodeFromNative,\n SHORTCODES_REGEX,\n}\n","const URL = 'https://static.figma.com/emoji/4/64/'\n\nfunction getUrl(emojiSkin) {\n return URL + emojiSkin.unified?.toLowerCase() + '.png'\n}\n\nexport default { getUrl }\n","import i18n_en from '../../emoji-mart-data/i18n/en.json'\nimport data_default from '../../emoji-mart-data/sets/14/apple.json'\nimport { FrequentlyUsed, NativeSupport } from './helpers'\n\nfunction getReverseAliasMap(data) {\n const reverseAliasMap = {}\n for (const alias of Object.keys(data.aliases)) {\n reverseAliasMap[data.aliases[alias]] = alias\n }\n return reverseAliasMap\n}\n\n// Transformed minimized emoji-data into the form that the library expects\n// When we decide to load this data asynchronous, we'll want to move this logic into packages/emoji-mart-data/build.js\nfunction getProcessedData(data) {\n data.natives = {}\n const reverseAliasMap = getReverseAliasMap(data)\n Object.keys(data.emojis).forEach((id) => {\n const emoji = {}\n emoji.id = id\n emoji.search =\n `,` +\n /* TODO: once we load in the emoji data asynchronously, we can add back keyword support.\n * we do this because we want to reduce the bundle size for initial page load.\n **/\n [\n ...new Set(\n [\n emoji.id,\n ...emoji.id.split(/[-|_|\\s]+/),\n ...(reverseAliasMap[emoji.id] || '').split(/[-|_|\\s]+/),\n // [emoji.keywords, false],\n ]\n .map((string) => {\n if (!string) return ''\n return string.toLowerCase()\n })\n .filter((a) => a && a.trim()),\n ),\n ].join(',')\n\n emoji.skins = data.emojis[id]\n emoji.skins.forEach((skin, index) => {\n if (skin) {\n const skinShortcodes = index + 1 == 1 ? '' : `:skin-tone-${index + 1}:`\n skin.shortcodes = `:${emoji.id}:${skinShortcodes}`\n\n const native = NativeSupport.unifiedToNative(skin.unified)\n data.natives[native] = skin.shortcodes\n }\n })\n data.emojis[id] = emoji\n })\n return data\n}\n\nexport let I18n = i18n_en\nexport let Data = getProcessedData(data_default)\n\nconst DEFAULT_PROPS = {\n autoFocus: {\n value: false,\n },\n emojiButtonColors: {\n value: null,\n },\n emojiButtonRadius: {\n value: '100%',\n },\n emojiButtonSize: {\n value: 34,\n },\n emojiSize: {\n value: 22,\n },\n emojiVersion: {\n value: 14,\n choices: [1, 2, 3, 4, 5, 11, 12, 12.1, 13, 13.1, 14],\n },\n locale: {\n value: 'en',\n choices: ['en', 'fr'],\n },\n maxFrequentRows: {\n value: 4,\n },\n navPosition: {\n value: 'top',\n choices: ['top', 'bottom', 'none'],\n },\n noCountryFlags: {\n value: false,\n },\n noResultsEmoji: {\n value: null,\n },\n perLine: {\n value: 9,\n },\n previewEmoji: {\n value: null,\n },\n previewPosition: {\n value: 'bottom',\n choices: ['top', 'bottom', 'none'],\n },\n set: {\n value: 'native',\n choices: ['native', 'apple', 'facebook', 'google', 'twitter'],\n },\n skin: {\n value: 1,\n choices: [1, 2, 3, 4, 5, 6],\n },\n stickySearch: {\n value: true,\n },\n theme: {\n value: 'auto',\n choices: ['auto', 'light', 'dark'],\n },\n}\n\nasync function fetchJSON(src) {\n const response = await fetch(src)\n return await response.json()\n}\n\nlet promise = null\nlet initiated = false\nlet initCallback = null\nexport function init(options) {\n promise ||\n (promise = new Promise((resolve) => {\n initCallback = resolve\n }))\n\n if (!initiated) {\n initiated = true\n _init(options || {})\n }\n\n return promise\n}\n\nfunction _init(props, element) {\n const { i18n } = props\n const pickerProps = getProps(props, element)\n\n if (props.i18n) {\n I18n = i18n\n }\n\n if (pickerProps.maxFrequentRows) {\n const emojis = FrequentlyUsed.get(pickerProps)\n if (emojis.length) {\n Data.categories.unshift({\n id: 'frequent',\n emojis: emojis,\n })\n }\n }\n\n initCallback(pickerProps)\n}\n\nfunction getProps(props, element) {\n props || (props = {})\n\n function get(propName) {\n const defaults = DEFAULT_PROPS[propName]\n let value = (element && element.getAttribute(propName)) || props[propName]\n\n if (\n value != null &&\n defaults.value &&\n typeof defaults.value != typeof value\n ) {\n if (typeof defaults.value == 'boolean') {\n value = value == 'false' ? false : true\n } else {\n value = defaults.value.constructor(value)\n }\n }\n\n if (\n value == null ||\n (defaults.choices && defaults.choices.indexOf(value) == -1)\n ) {\n value = defaults.value\n }\n\n return value\n }\n\n const _props = {}\n for (let k in DEFAULT_PROPS) {\n _props[k] = get(k)\n }\n\n return _props\n}\n","const categories = {\n activity: (\n \n \n \n \n \n \n \n \n \n ),\n\n flags: (\n \n \n \n \n ),\n foods: (\n \n \n \n \n \n \n ),\n frequent: (\n \n \n \n \n \n ),\n nature: (\n \n \n \n \n \n \n \n \n ),\n objects: (\n \n \n \n ),\n people: (\n \n \n \n \n \n \n \n ),\n\n places: (\n \n \n \n \n \n ),\n\n symbols: (\n \n \n \n \n ),\n}\n\nconst search = {\n loupe: (\n \n \n \n ),\n\n delete: (\n \n \n \n ),\n}\n\nexport default { categories, search }\n","import { SearchIndex, Images, NativeSupport } from '../../helpers'\n\nexport default function Emoji(props) {\n let { id, skin, shortcodes, emoji, set, size } = props\n\n if (!emoji && !id && shortcodes) {\n const matches = shortcodes.match(SearchIndex.SHORTCODES_REGEX)\n if (matches) {\n id = matches[1]\n\n if (matches[2]) {\n skin = matches[2]\n }\n }\n }\n\n emoji || (emoji = SearchIndex.get(id))\n if (!emoji || emoji.id === 'female_sign' || emoji.id === 'male_sign')\n return props.fallback\n\n const emojiSkin = emoji.skins[skin - 1] || emoji.skins[0]\n\n if (set === 'native') {\n const native = NativeSupport.unifiedToNative(emojiSkin.unified)\n return (\n \n {native}\n \n )\n }\n\n const src = Images.getUrl(emojiSkin)\n return (\n \n )\n}\n","export default class HTMLElement extends window.HTMLElement {\n constructor(props = {}) {\n super()\n this.props = props\n\n if (props.parent || props.ref) {\n const parent = props.parent || (props.ref && props.ref.current)\n if (parent) parent.appendChild(this)\n }\n }\n}\n","import { HTMLElement } from '.'\n\nexport default class ShadowElement extends HTMLElement {\n constructor(props, { styles } = {}) {\n super(props)\n\n this.setShadow()\n this.injectStyles(styles)\n }\n\n setShadow() {\n this.attachShadow({ mode: 'open' })\n }\n\n injectStyles(styles) {\n if (!styles) return\n\n const style = document.createElement('style')\n style.textContent = styles\n\n this.shadowRoot.insertBefore(style, this.shadowRoot.firstChild)\n }\n}\n","import { render } from 'preact'\n\nimport { init } from '../../config'\nimport { SearchIndex } from '../../helpers'\nimport { HTMLElement } from '../HTMLElement'\nimport { Emoji } from '.'\n\nexport default class EmojiElement extends HTMLElement {\n async connectedCallback() {\n const pickerProps = await init()\n\n const native = this.getAttribute('native')\n let emoji = null\n if (native) {\n emoji = SearchIndex.get(native)\n }\n\n const props = {\n ...pickerProps,\n emoji: emoji,\n id: this.getAttribute('id'),\n set: this.getAttribute('set') || pickerProps.set,\n size: this.getAttribute('size'),\n fallback: this.getAttribute('fallback'),\n shortcodes: this.getAttribute('shortcodes'),\n }\n\n render(, this)\n }\n}\n\nif ('customElements' in window && !customElements.get('em-emoji')) {\n customElements.define('em-emoji', EmojiElement)\n}\n","import { options } from 'preact';\r\n\r\n/** @type {number} */\r\nlet currentIndex;\r\n\r\n/** @type {import('./internal').Component} */\r\nlet currentComponent;\r\n\r\n/** @type {number} */\r\nlet currentHook = 0;\r\n\r\n/** @type {Array} */\r\nlet afterPaintEffects = [];\r\n\r\nlet oldBeforeDiff = options._diff;\r\nlet oldBeforeRender = options._render;\r\nlet oldAfterDiff = options.diffed;\r\nlet oldCommit = options._commit;\r\nlet oldBeforeUnmount = options.unmount;\r\n\r\nconst RAF_TIMEOUT = 100;\r\nlet prevRaf;\r\n\r\noptions._diff = vnode => {\r\n\tcurrentComponent = null;\r\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\r\n};\r\n\r\noptions._render = vnode => {\r\n\tif (oldBeforeRender) oldBeforeRender(vnode);\r\n\r\n\tcurrentComponent = vnode._component;\r\n\tcurrentIndex = 0;\r\n\r\n\tconst hooks = currentComponent.__hooks;\r\n\tif (hooks) {\r\n\t\thooks._pendingEffects.forEach(invokeCleanup);\r\n\t\thooks._pendingEffects.forEach(invokeEffect);\r\n\t\thooks._pendingEffects = [];\r\n\t}\r\n};\r\n\r\noptions.diffed = vnode => {\r\n\tif (oldAfterDiff) oldAfterDiff(vnode);\r\n\r\n\tconst c = vnode._component;\r\n\tif (c && c.__hooks && c.__hooks._pendingEffects.length) {\r\n\t\tafterPaint(afterPaintEffects.push(c));\r\n\t}\r\n\tcurrentComponent = null;\r\n};\r\n\r\noptions._commit = (vnode, commitQueue) => {\r\n\tcommitQueue.some(component => {\r\n\t\ttry {\r\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\r\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\r\n\t\t\t\tcb._value ? invokeEffect(cb) : true\r\n\t\t\t);\r\n\t\t} catch (e) {\r\n\t\t\tcommitQueue.some(c => {\r\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\r\n\t\t\t});\r\n\t\t\tcommitQueue = [];\r\n\t\t\toptions._catchError(e, component._vnode);\r\n\t\t}\r\n\t});\r\n\r\n\tif (oldCommit) oldCommit(vnode, commitQueue);\r\n};\r\n\r\noptions.unmount = vnode => {\r\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\r\n\r\n\tconst c = vnode._component;\r\n\tif (c && c.__hooks) {\r\n\t\tlet hasErrored;\r\n\t\tc.__hooks._list.forEach(s => {\r\n\t\t\ttry {\r\n\t\t\t\tinvokeCleanup(s);\r\n\t\t\t} catch (e) {\r\n\t\t\t\thasErrored = e;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\r\n\t}\r\n};\r\n\r\n/**\r\n * Get a hook's state from the currentComponent\r\n * @param {number} index The index of the hook to get\r\n * @param {number} type The index of the hook to get\r\n * @returns {any}\r\n */\r\nfunction getHookState(index, type) {\r\n\tif (options._hook) {\r\n\t\toptions._hook(currentComponent, index, currentHook || type);\r\n\t}\r\n\tcurrentHook = 0;\r\n\r\n\t// Largely inspired by:\r\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\r\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\r\n\t// Other implementations to look at:\r\n\t// * https://codesandbox.io/s/mnox05qp8\r\n\tconst hooks =\r\n\t\tcurrentComponent.__hooks ||\r\n\t\t(currentComponent.__hooks = {\r\n\t\t\t_list: [],\r\n\t\t\t_pendingEffects: []\r\n\t\t});\r\n\r\n\tif (index >= hooks._list.length) {\r\n\t\thooks._list.push({});\r\n\t}\r\n\treturn hooks._list[index];\r\n}\r\n\r\n/**\r\n * @param {import('./index').StateUpdater} [initialState]\r\n */\r\nexport function useState(initialState) {\r\n\tcurrentHook = 1;\r\n\treturn useReducer(invokeOrReturn, initialState);\r\n}\r\n\r\n/**\r\n * @param {import('./index').Reducer} reducer\r\n * @param {import('./index').StateUpdater} initialState\r\n * @param {(initialState: any) => void} [init]\r\n * @returns {[ any, (state: any) => void ]}\r\n */\r\nexport function useReducer(reducer, initialState, init) {\r\n\t/** @type {import('./internal').ReducerHookState} */\r\n\tconst hookState = getHookState(currentIndex++, 2);\r\n\thookState._reducer = reducer;\r\n\tif (!hookState._component) {\r\n\t\thookState._value = [\r\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\r\n\r\n\t\t\taction => {\r\n\t\t\t\tconst nextValue = hookState._reducer(hookState._value[0], action);\r\n\t\t\t\tif (hookState._value[0] !== nextValue) {\r\n\t\t\t\t\thookState._value = [nextValue, hookState._value[1]];\r\n\t\t\t\t\thookState._component.setState({});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\thookState._component = currentComponent;\r\n\t}\r\n\r\n\treturn hookState._value;\r\n}\r\n\r\n/**\r\n * @param {import('./internal').Effect} callback\r\n * @param {any[]} args\r\n */\r\nexport function useEffect(callback, args) {\r\n\t/** @type {import('./internal').EffectHookState} */\r\n\tconst state = getHookState(currentIndex++, 3);\r\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\r\n\t\tstate._value = callback;\r\n\t\tstate._args = args;\r\n\r\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {import('./internal').Effect} callback\r\n * @param {any[]} args\r\n */\r\nexport function useLayoutEffect(callback, args) {\r\n\t/** @type {import('./internal').EffectHookState} */\r\n\tconst state = getHookState(currentIndex++, 4);\r\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\r\n\t\tstate._value = callback;\r\n\t\tstate._args = args;\r\n\r\n\t\tcurrentComponent._renderCallbacks.push(state);\r\n\t}\r\n}\r\n\r\nexport function useRef(initialValue) {\r\n\tcurrentHook = 5;\r\n\treturn useMemo(() => ({ current: initialValue }), []);\r\n}\r\n\r\n/**\r\n * @param {object} ref\r\n * @param {() => object} createHandle\r\n * @param {any[]} args\r\n */\r\nexport function useImperativeHandle(ref, createHandle, args) {\r\n\tcurrentHook = 6;\r\n\tuseLayoutEffect(\r\n\t\t() => {\r\n\t\t\tif (typeof ref == 'function') ref(createHandle());\r\n\t\t\telse if (ref) ref.current = createHandle();\r\n\t\t},\r\n\t\targs == null ? args : args.concat(ref)\r\n\t);\r\n}\r\n\r\n/**\r\n * @param {() => any} factory\r\n * @param {any[]} args\r\n */\r\nexport function useMemo(factory, args) {\r\n\t/** @type {import('./internal').MemoHookState} */\r\n\tconst state = getHookState(currentIndex++, 7);\r\n\tif (argsChanged(state._args, args)) {\r\n\t\tstate._value = factory();\r\n\t\tstate._args = args;\r\n\t\tstate._factory = factory;\r\n\t}\r\n\r\n\treturn state._value;\r\n}\r\n\r\n/**\r\n * @param {() => void} callback\r\n * @param {any[]} args\r\n */\r\nexport function useCallback(callback, args) {\r\n\tcurrentHook = 8;\r\n\treturn useMemo(() => callback, args);\r\n}\r\n\r\n/**\r\n * @param {import('./internal').PreactContext} context\r\n */\r\nexport function useContext(context) {\r\n\tconst provider = currentComponent.context[context._id];\r\n\t// We could skip this call here, but than we'd not call\r\n\t// `options._hook`. We need to do that in order to make\r\n\t// the devtools aware of this hook.\r\n\t/** @type {import('./internal').ContextHookState} */\r\n\tconst state = getHookState(currentIndex++, 9);\r\n\t// The devtools needs access to the context object to\r\n\t// be able to pull of the default value when no provider\r\n\t// is present in the tree.\r\n\tstate._context = context;\r\n\tif (!provider) return context._defaultValue;\r\n\t// This is probably not safe to convert to \"!\"\r\n\tif (state._value == null) {\r\n\t\tstate._value = true;\r\n\t\tprovider.sub(currentComponent);\r\n\t}\r\n\treturn provider.props.value;\r\n}\r\n\r\n/**\r\n * Display a custom label for a custom hook for the devtools panel\r\n * @type {(value: T, cb?: (value: T) => string | number) => void}\r\n */\r\nexport function useDebugValue(value, formatter) {\r\n\tif (options.useDebugValue) {\r\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {(error: any) => void} cb\r\n */\r\nexport function useErrorBoundary(cb) {\r\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\r\n\tconst state = getHookState(currentIndex++, 10);\r\n\tconst errState = useState();\r\n\tstate._value = cb;\r\n\tif (!currentComponent.componentDidCatch) {\r\n\t\tcurrentComponent.componentDidCatch = err => {\r\n\t\t\tif (state._value) state._value(err);\r\n\t\t\terrState[1](err);\r\n\t\t};\r\n\t}\r\n\treturn [\r\n\t\terrState[0],\r\n\t\t() => {\r\n\t\t\terrState[1](undefined);\r\n\t\t}\r\n\t];\r\n}\r\n\r\n/**\r\n * After paint effects consumer.\r\n */\r\nfunction flushAfterPaintEffects() {\r\n\tlet component;\r\n\t// sort the queue by depth (outermost to innermost)\r\n\tafterPaintEffects.sort((a, b) => a._vnode._depth - b._vnode._depth);\r\n\twhile (component = afterPaintEffects.pop()) {\r\n\t\tif (!component._parentDom) continue;\r\n\t\ttry {\r\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\r\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\r\n\t\t\tcomponent.__hooks._pendingEffects = [];\r\n\t\t} catch (e) {\r\n\t\t\tcomponent.__hooks._pendingEffects = [];\r\n\t\t\toptions._catchError(e, component._vnode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\r\n\r\n/**\r\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\r\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\r\n * the next browser frame.\r\n *\r\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\r\n * even if RAF doesn't fire (for example if the browser tab is not visible)\r\n *\r\n * @param {() => void} callback\r\n */\r\nfunction afterNextFrame(callback) {\r\n\tconst done = () => {\r\n\t\tclearTimeout(timeout);\r\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\r\n\t\tsetTimeout(callback);\r\n\t};\r\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\r\n\r\n\tlet raf;\r\n\tif (HAS_RAF) {\r\n\t\traf = requestAnimationFrame(done);\r\n\t}\r\n}\r\n\r\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\r\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\r\n// Perhaps this is not such a big deal.\r\n/**\r\n * Schedule afterPaintEffects flush after the browser paints\r\n * @param {number} newQueueLength\r\n */\r\nfunction afterPaint(newQueueLength) {\r\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\r\n\t\tprevRaf = options.requestAnimationFrame;\r\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {import('./internal').EffectHookState} hook\r\n */\r\nfunction invokeCleanup(hook) {\r\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\r\n\t// and move the currentComponent away.\r\n\tconst comp = currentComponent;\r\n\tlet cleanup = hook._cleanup;\r\n\tif (typeof cleanup == 'function') {\r\n\t\thook._cleanup = undefined;\r\n\t\tcleanup();\r\n\t}\r\n\tcurrentComponent = comp;\r\n}\r\n\r\n/**\r\n * Invoke a Hook's effect\r\n * @param {import('./internal').EffectHookState} hook\r\n */\r\nfunction invokeEffect(hook) {\r\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\r\n\t// and move the currentComponent away.\r\n\tconst comp = currentComponent;\r\n\thook._cleanup = hook._value();\r\n\tcurrentComponent = comp;\r\n}\r\n\r\n/**\r\n * @param {any[]} oldArgs\r\n * @param {any[]} newArgs\r\n */\r\nfunction argsChanged(oldArgs, newArgs) {\r\n\treturn (\r\n\t\t!oldArgs ||\r\n\t\toldArgs.length !== newArgs.length ||\r\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\r\n\t);\r\n}\r\n\r\nfunction invokeOrReturn(arg, f) {\r\n\treturn typeof f == 'function' ? f(arg) : f;\r\n}\r\n","/**\r\n * Assign properties from `props` to `obj`\r\n * @template O, P The obj and props types\r\n * @param {O} obj The object to copy properties to\r\n * @param {P} props The object to copy properties from\r\n * @returns {O & P}\r\n */\r\nexport function assign(obj, props) {\r\n\tfor (let i in props) obj[i] = props[i];\r\n\treturn /** @type {O & P} */ (obj);\r\n}\r\n\r\n/**\r\n * Check if two objects have a different shape\r\n * @param {object} a\r\n * @param {object} b\r\n * @returns {boolean}\r\n */\r\nexport function shallowDiffers(a, b) {\r\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\r\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\r\n\treturn false;\r\n}\r\n\r\nexport function removeNode(node) {\r\n\tlet parentNode = node.parentNode;\r\n\tif (parentNode) parentNode.removeChild(node);\r\n}\r\n","import { Component } from 'preact';\r\nimport { shallowDiffers } from './util';\r\n\r\n/**\r\n * Component class with a predefined `shouldComponentUpdate` implementation\r\n */\r\nexport function PureComponent(p) {\r\n\tthis.props = p;\r\n}\r\nPureComponent.prototype = new Component();\r\n// Some third-party libraries check if this property is present\r\nPureComponent.prototype.isPureReactComponent = true;\r\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\r\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\r\n};\r\n","import { options } from 'preact';\r\nimport { assign } from './util';\r\n\r\nlet oldDiffHook = options._diff;\r\noptions._diff = vnode => {\r\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\r\n\t\tvnode.props.ref = vnode.ref;\r\n\t\tvnode.ref = null;\r\n\t}\r\n\tif (oldDiffHook) oldDiffHook(vnode);\r\n};\r\n\r\nexport const REACT_FORWARD_SYMBOL =\r\n\t(typeof Symbol != 'undefined' &&\r\n\t\tSymbol.for &&\r\n\t\tSymbol.for('react.forward_ref')) ||\r\n\t0xf47;\r\n\r\n/**\r\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\r\n * wrap components. Using `forwardRef` there is an easy way to get a reference\r\n * of the wrapped component instead of one of the wrapper itself.\r\n * @param {import('./index').ForwardFn} fn\r\n * @returns {import('./internal').FunctionComponent}\r\n */\r\nexport function forwardRef(fn) {\r\n\t// We always have ref in props.ref, except for\r\n\t// mobx-react. It will call this function directly\r\n\t// and always pass ref as the second argument.\r\n\tfunction Forwarded(props, ref) {\r\n\t\tlet clone = assign({}, props);\r\n\t\tdelete clone.ref;\r\n\t\tref = props.ref || ref;\r\n\t\treturn fn(\r\n\t\t\tclone,\r\n\t\t\t!ref || (typeof ref === 'object' && !('current' in ref)) ? null : ref\r\n\t\t);\r\n\t}\r\n\r\n\t// mobx-react checks for this being present\r\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\r\n\t// mobx-react heavily relies on implementation details.\r\n\t// It expects an object here with a `render` property,\r\n\t// and prototype.render will fail. Without this\r\n\t// mobx-react throws.\r\n\tForwarded.render = Forwarded;\r\n\r\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\r\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\r\n\treturn Forwarded;\r\n}\r\n","import { Component, createElement, options, Fragment } from 'preact';\r\nimport { assign } from './util';\r\n\r\nconst oldCatchError = options._catchError;\r\noptions._catchError = function(error, newVNode, oldVNode) {\r\n\tif (error.then) {\r\n\t\t/** @type {import('./internal').Component} */\r\n\t\tlet component;\r\n\t\tlet vnode = newVNode;\r\n\r\n\t\tfor (; (vnode = vnode._parent); ) {\r\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\r\n\t\t\t\tif (newVNode._dom == null) {\r\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\r\n\t\t\t\t\tnewVNode._children = oldVNode._children;\r\n\t\t\t\t}\r\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\r\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\toldCatchError(error, newVNode, oldVNode);\r\n};\r\n\r\nconst oldUnmount = options.unmount;\r\noptions.unmount = function(vnode) {\r\n\t/** @type {import('./internal').Component} */\r\n\tconst component = vnode._component;\r\n\tif (component && component._onResolve) {\r\n\t\tcomponent._onResolve();\r\n\t}\r\n\r\n\t// if the component is still hydrating\r\n\t// most likely it is because the component is suspended\r\n\t// we set the vnode.type as `null` so that it is not a typeof function\r\n\t// so the unmount will remove the vnode._dom\r\n\tif (component && vnode._hydrating === true) {\r\n\t\tvnode.type = null;\r\n\t}\r\n\r\n\tif (oldUnmount) oldUnmount(vnode);\r\n};\r\n\r\nfunction detachedClone(vnode, detachedParent, parentDom) {\r\n\tif (vnode) {\r\n\t\tif (vnode._component && vnode._component.__hooks) {\r\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\r\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\r\n\t\t\t});\r\n\r\n\t\t\tvnode._component.__hooks = null;\r\n\t\t}\r\n\r\n\t\tvnode = assign({}, vnode);\r\n\t\tif (vnode._component != null) {\r\n\t\t\tif (vnode._component._parentDom === parentDom) {\r\n\t\t\t\tvnode._component._parentDom = detachedParent;\r\n\t\t\t}\r\n\t\t\tvnode._component = null;\r\n\t\t}\r\n\r\n\t\tvnode._children =\r\n\t\t\tvnode._children &&\r\n\t\t\tvnode._children.map(child =>\r\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\r\n\t\t\t);\r\n\t}\r\n\r\n\treturn vnode;\r\n}\r\n\r\nfunction removeOriginal(vnode, detachedParent, originalParent) {\r\n\tif (vnode) {\r\n\t\tvnode._original = null;\r\n\t\tvnode._children =\r\n\t\t\tvnode._children &&\r\n\t\t\tvnode._children.map(child =>\r\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\r\n\t\t\t);\r\n\r\n\t\tif (vnode._component) {\r\n\t\t\tif (vnode._component._parentDom === detachedParent) {\r\n\t\t\t\tif (vnode._dom) {\r\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\r\n\t\t\t\t}\r\n\t\t\t\tvnode._component._force = true;\r\n\t\t\t\tvnode._component._parentDom = originalParent;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn vnode;\r\n}\r\n\r\n// having custom inheritance instead of a class here saves a lot of bytes\r\nexport function Suspense() {\r\n\t// we do not call super here to golf some bytes...\r\n\tthis._pendingSuspensionCount = 0;\r\n\tthis._suspenders = null;\r\n\tthis._detachOnNextRender = null;\r\n}\r\n\r\n// Things we do here to save some bytes but are not proper JS inheritance:\r\n// - call `new Component()` as the prototype\r\n// - do not set `Suspense.prototype.constructor` to `Suspense`\r\nSuspense.prototype = new Component();\r\n\r\n/**\r\n * @this {import('./internal').SuspenseComponent}\r\n * @param {Promise} promise The thrown promise\r\n * @param {import('./internal').VNode} suspendingVNode The suspending component\r\n */\r\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\r\n\tconst suspendingComponent = suspendingVNode._component;\r\n\r\n\t/** @type {import('./internal').SuspenseComponent} */\r\n\tconst c = this;\r\n\r\n\tif (c._suspenders == null) {\r\n\t\tc._suspenders = [];\r\n\t}\r\n\tc._suspenders.push(suspendingComponent);\r\n\r\n\tconst resolve = suspended(c._vnode);\r\n\r\n\tlet resolved = false;\r\n\tconst onResolved = () => {\r\n\t\tif (resolved) return;\r\n\r\n\t\tresolved = true;\r\n\t\tsuspendingComponent._onResolve = null;\r\n\r\n\t\tif (resolve) {\r\n\t\t\tresolve(onSuspensionComplete);\r\n\t\t} else {\r\n\t\t\tonSuspensionComplete();\r\n\t\t}\r\n\t};\r\n\r\n\tsuspendingComponent._onResolve = onResolved;\r\n\r\n\tconst onSuspensionComplete = () => {\r\n\t\tif (!--c._pendingSuspensionCount) {\r\n\t\t\t// If the suspension was during hydration we don't need to restore the\r\n\t\t\t// suspended children into the _children array\r\n\t\t\tif (c.state._suspended) {\r\n\t\t\t\tconst suspendedVNode = c.state._suspended;\r\n\t\t\t\tc._vnode._children[0] = removeOriginal(\r\n\t\t\t\t\tsuspendedVNode,\r\n\t\t\t\t\tsuspendedVNode._component._parentDom,\r\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\r\n\r\n\t\t\tlet suspended;\r\n\t\t\twhile ((suspended = c._suspenders.pop())) {\r\n\t\t\t\tsuspended.forceUpdate();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * We do not set `suspended: true` during hydration because we want the actual markup\r\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\r\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\r\n\t */\r\n\tconst wasHydrating = suspendingVNode._hydrating === true;\r\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\r\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\r\n\t}\r\n\tpromise.then(onResolved, onResolved);\r\n};\r\n\r\nSuspense.prototype.componentWillUnmount = function() {\r\n\tthis._suspenders = [];\r\n};\r\n\r\n/**\r\n * @this {import('./internal').SuspenseComponent}\r\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\r\n * @param {import('./internal').SuspenseState} state\r\n */\r\nSuspense.prototype.render = function(props, state) {\r\n\tif (this._detachOnNextRender) {\r\n\t\t// When the Suspense's _vnode was created by a call to createVNode\r\n\t\t// (i.e. due to a setState further up in the tree)\r\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\r\n\t\tif (this._vnode._children) {\r\n\t\t\tconst detachedParent = document.createElement('div');\r\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\r\n\t\t\tthis._vnode._children[0] = detachedClone(\r\n\t\t\t\tthis._detachOnNextRender,\r\n\t\t\t\tdetachedParent,\r\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis._detachOnNextRender = null;\r\n\t}\r\n\r\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\r\n\t/** @type {import('./internal').VNode} */\r\n\tconst fallback =\r\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\r\n\tif (fallback) fallback._hydrating = null;\r\n\r\n\treturn [\r\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\r\n\t\tfallback\r\n\t];\r\n};\r\n\r\n/**\r\n * Checks and calls the parent component's _suspended method, passing in the\r\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\r\n * that one of its children/descendants suspended.\r\n *\r\n * The parent MAY return a callback. The callback will get called when the\r\n * suspension resolves, notifying the parent of the fact.\r\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\r\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\r\n * This is a way for the parent to delay unsuspending.\r\n *\r\n * If the parent does not return a callback then the resolved vnode\r\n * gets unsuspended immediately when it resolves.\r\n *\r\n * @param {import('./internal').VNode} vnode\r\n * @returns {((unsuspend: () => void) => void)?}\r\n */\r\nexport function suspended(vnode) {\r\n\t/** @type {import('./internal').Component} */\r\n\tlet component = vnode._parent._component;\r\n\treturn component && component._suspended && component._suspended(vnode);\r\n}\r\n\r\nexport function lazy(loader) {\r\n\tlet prom;\r\n\tlet component;\r\n\tlet error;\r\n\r\n\tfunction Lazy(props) {\r\n\t\tif (!prom) {\r\n\t\t\tprom = loader();\r\n\t\t\tprom.then(\r\n\t\t\t\texports => {\r\n\t\t\t\t\tcomponent = exports.default || exports;\r\n\t\t\t\t},\r\n\t\t\t\te => {\r\n\t\t\t\t\terror = e;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (error) {\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\tif (!component) {\r\n\t\t\tthrow prom;\r\n\t\t}\r\n\r\n\t\treturn createElement(component, props);\r\n\t}\r\n\r\n\tLazy.displayName = 'Lazy';\r\n\tLazy._forwarded = true;\r\n\treturn Lazy;\r\n}\r\n","import { Component, toChildArray } from 'preact';\r\nimport { suspended } from './suspense.js';\r\n\r\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\r\nconst SUSPENDED_COUNT = 0;\r\nconst RESOLVED_COUNT = 1;\r\nconst NEXT_NODE = 2;\r\n\r\n// Having custom inheritance instead of a class here saves a lot of bytes.\r\nexport function SuspenseList() {\r\n\tthis._next = null;\r\n\tthis._map = null;\r\n}\r\n\r\n// Mark one of child's earlier suspensions as resolved.\r\n// Some pending callbacks may become callable due to this\r\n// (e.g. the last suspended descendant gets resolved when\r\n// revealOrder === 'together'). Process those callbacks as well.\r\nconst resolve = (list, child, node) => {\r\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\r\n\t\t// The number a child (or any of its descendants) has been suspended\r\n\t\t// matches the number of times it's been resolved. Therefore we\r\n\t\t// mark the child as completely resolved by deleting it from ._map.\r\n\t\t// This is used to figure out when *all* children have been completely\r\n\t\t// resolved when revealOrder is 'together'.\r\n\t\tlist._map.delete(child);\r\n\t}\r\n\r\n\t// If revealOrder is falsy then we can do an early exit, as the\r\n\t// callbacks won't get queued in the node anyway.\r\n\t// If revealOrder is 'together' then also do an early exit\r\n\t// if all suspended descendants have not yet been resolved.\r\n\tif (\r\n\t\t!list.props.revealOrder ||\r\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Walk the currently suspended children in order, calling their\r\n\t// stored callbacks on the way. Stop if we encounter a child that\r\n\t// has not been completely resolved yet.\r\n\tnode = list._next;\r\n\twhile (node) {\r\n\t\twhile (node.length > 3) {\r\n\t\t\tnode.pop()();\r\n\t\t}\r\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tlist._next = node = node[NEXT_NODE];\r\n\t}\r\n};\r\n\r\n// Things we do here to save some bytes but are not proper JS inheritance:\r\n// - call `new Component()` as the prototype\r\n// - do not set `Suspense.prototype.constructor` to `Suspense`\r\nSuspenseList.prototype = new Component();\r\n\r\nSuspenseList.prototype._suspended = function(child) {\r\n\tconst list = this;\r\n\tconst delegated = suspended(list._vnode);\r\n\r\n\tlet node = list._map.get(child);\r\n\tnode[SUSPENDED_COUNT]++;\r\n\r\n\treturn unsuspend => {\r\n\t\tconst wrappedUnsuspend = () => {\r\n\t\t\tif (!list.props.revealOrder) {\r\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\r\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\r\n\t\t\t\tunsuspend();\r\n\t\t\t} else {\r\n\t\t\t\tnode.push(unsuspend);\r\n\t\t\t\tresolve(list, child, node);\r\n\t\t\t}\r\n\t\t};\r\n\t\tif (delegated) {\r\n\t\t\tdelegated(wrappedUnsuspend);\r\n\t\t} else {\r\n\t\t\twrappedUnsuspend();\r\n\t\t}\r\n\t};\r\n};\r\n\r\nSuspenseList.prototype.render = function(props) {\r\n\tthis._next = null;\r\n\tthis._map = new Map();\r\n\r\n\tconst children = toChildArray(props.children);\r\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\r\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\r\n\t\t// then flip the child list around so that the last child will be\r\n\t\t// the first in the linked list.\r\n\t\tchildren.reverse();\r\n\t}\r\n\t// Build the linked list. Iterate through the children in reverse order\r\n\t// so that `_next` points to the first linked list node to be resolved.\r\n\tfor (let i = children.length; i--; ) {\r\n\t\t// Create a new linked list node as an array of form:\r\n\t\t// \t[suspended_count, resolved_count, next_node]\r\n\t\t// where suspended_count and resolved_count are numeric counters for\r\n\t\t// keeping track how many times a node has been suspended and resolved.\r\n\t\t//\r\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\r\n\t\t// processing callbacks until componentDidMount has been called. In a sense\r\n\t\t// node is suspended at least until componentDidMount gets called!\r\n\t\t//\r\n\t\t// Pending callbacks are added to the end of the node:\r\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\r\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\r\n\t}\r\n\treturn props.children;\r\n};\r\n\r\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\r\n\t// Iterate through all children after mounting for two reasons:\r\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\r\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\r\n\t// The nodes can now be completely consumed from the linked list.\r\n\t// 2. Handle nodes that might have gotten resolved between render and\r\n\t// componentDidMount.\r\n\tthis._map.forEach((node, child) => {\r\n\t\tresolve(this, child, node);\r\n\t});\r\n};\r\n","import {\r\n\trender as preactRender,\r\n\thydrate as preactHydrate,\r\n\toptions,\r\n\ttoChildArray,\r\n\tComponent\r\n} from 'preact';\r\n\r\nexport const REACT_ELEMENT_TYPE =\r\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\r\n\t0xeac7;\r\n\r\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\r\n\r\nconst IS_DOM = typeof document !== 'undefined';\r\n\r\n// Input types for which onchange should not be converted to oninput.\r\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\r\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\r\nconst onChangeInputType = type =>\r\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\r\n\t\t? /fil|che|rad/i\r\n\t\t: /fil|che|ra/i\r\n\t).test(type);\r\n\r\n// Some libraries like `react-virtualized` explicitly check for this.\r\nComponent.prototype.isReactComponent = {};\r\n\r\n// `UNSAFE_*` lifecycle hooks\r\n// Preact only ever invokes the unprefixed methods.\r\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\r\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\r\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\r\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\r\n// See https://github.com/preactjs/preact/issues/1941\r\n[\r\n\t'componentWillMount',\r\n\t'componentWillReceiveProps',\r\n\t'componentWillUpdate'\r\n].forEach(key => {\r\n\tObject.defineProperty(Component.prototype, key, {\r\n\t\tconfigurable: true,\r\n\t\tget() {\r\n\t\t\treturn this['UNSAFE_' + key];\r\n\t\t},\r\n\t\tset(v) {\r\n\t\t\tObject.defineProperty(this, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: v\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n});\r\n\r\n/**\r\n * Proxy render() since React returns a Component reference.\r\n * @param {import('./internal').VNode} vnode VNode tree to render\r\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\r\n * @param {() => void} [callback] Optional callback that will be called after rendering\r\n * @returns {import('./internal').Component | null} The root component reference or null\r\n */\r\nexport function render(vnode, parent, callback) {\r\n\t// React destroys any existing DOM nodes, see #1727\r\n\t// ...but only on the first render, see #1828\r\n\tif (parent._children == null) {\r\n\t\tparent.textContent = '';\r\n\t}\r\n\r\n\tpreactRender(vnode, parent);\r\n\tif (typeof callback == 'function') callback();\r\n\r\n\treturn vnode ? vnode._component : null;\r\n}\r\n\r\nexport function hydrate(vnode, parent, callback) {\r\n\tpreactHydrate(vnode, parent);\r\n\tif (typeof callback == 'function') callback();\r\n\r\n\treturn vnode ? vnode._component : null;\r\n}\r\n\r\nlet oldEventHook = options.event;\r\noptions.event = e => {\r\n\tif (oldEventHook) e = oldEventHook(e);\r\n\te.persist = empty;\r\n\te.isPropagationStopped = isPropagationStopped;\r\n\te.isDefaultPrevented = isDefaultPrevented;\r\n\treturn (e.nativeEvent = e);\r\n};\r\n\r\nfunction empty() {}\r\n\r\nfunction isPropagationStopped() {\r\n\treturn this.cancelBubble;\r\n}\r\n\r\nfunction isDefaultPrevented() {\r\n\treturn this.defaultPrevented;\r\n}\r\n\r\nlet classNameDescriptor = {\r\n\tconfigurable: true,\r\n\tget() {\r\n\t\treturn this.class;\r\n\t}\r\n};\r\n\r\nlet oldVNodeHook = options.vnode;\r\noptions.vnode = vnode => {\r\n\tlet type = vnode.type;\r\n\tlet props = vnode.props;\r\n\tlet normalizedProps = props;\r\n\r\n\t// only normalize props on Element nodes\r\n\tif (typeof type === 'string') {\r\n\t\tconst nonCustomElement = type.indexOf('-') === -1;\r\n\t\tnormalizedProps = {};\r\n\r\n\t\tfor (let i in props) {\r\n\t\t\tlet value = props[i];\r\n\r\n\t\t\tif (IS_DOM && i === 'children' && type === 'noscript') {\r\n\t\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\telse if (i === 'value' && 'defaultValue' in props && value == null) {\r\n\t\t\t\t// Skip applying value if it is null/undefined and we already set\r\n\t\t\t\t// a default value\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (\r\n\t\t\t\ti === 'defaultValue' &&\r\n\t\t\t\t'value' in props &&\r\n\t\t\t\tprops.value == null\r\n\t\t\t) {\r\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\r\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\r\n\t\t\t\ti = 'value';\r\n\t\t\t} else if (i === 'download' && value === true) {\r\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\r\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\r\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\r\n\t\t\t\t// value will be used as the file name and the file will be called\r\n\t\t\t\t// \"true\" upon downloading it.\r\n\t\t\t\tvalue = '';\r\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\r\n\t\t\t\ti = 'ondblclick';\r\n\t\t\t} else if (\r\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\r\n\t\t\t\t!onChangeInputType(props.type)\r\n\t\t\t) {\r\n\t\t\t\ti = 'oninput';\r\n\t\t\t} else if (/^onfocus$/i.test(i)) {\r\n\t\t\t\ti = 'onfocusin';\r\n\t\t\t} else if (/^onblur$/i.test(i)) {\r\n\t\t\t\ti = 'onfocusout';\r\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp)/.test(i)) {\r\n\t\t\t\ti = i.toLowerCase();\r\n\t\t\t} else if (nonCustomElement && CAMEL_PROPS.test(i)) {\r\n\t\t\t\ti = i.replace(/[A-Z0-9]/, '-$&').toLowerCase();\r\n\t\t\t} else if (value === null) {\r\n\t\t\t\tvalue = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tnormalizedProps[i] = value;\r\n\t\t}\r\n\r\n\t\t// Add support for array select values: \r\n\t\tif (\r\n\t\t\ttype == 'select' &&\r\n\t\t\tnormalizedProps.multiple &&\r\n\t\t\tArray.isArray(normalizedProps.value)\r\n\t\t) {\r\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\r\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\r\n\t\t\t\tchild.props.selected =\r\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Adding support for defaultValue in select tag\r\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\r\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\r\n\t\t\t\tif (normalizedProps.multiple) {\r\n\t\t\t\t\tchild.props.selected =\r\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchild.props.selected =\r\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvnode.props = normalizedProps;\r\n\r\n\t\tif (props.class != props.className) {\r\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\r\n\t\t\tif (props.className != null) normalizedProps.class = props.className;\r\n\t\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\r\n\t\t}\r\n\t}\r\n\r\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\r\n\r\n\tif (oldVNodeHook) oldVNodeHook(vnode);\r\n};\r\n\r\n// Only needed for react-relay\r\nlet currentComponent;\r\nconst oldBeforeRender = options._render;\r\noptions._render = function(vnode) {\r\n\tif (oldBeforeRender) {\r\n\t\toldBeforeRender(vnode);\r\n\t}\r\n\tcurrentComponent = vnode._component;\r\n};\r\n\r\n// This is a very very private internal function for React it\r\n// is used to sort-of do runtime dependency injection. So far\r\n// only `react-relay` makes use of it. It uses it to read the\r\n// context value.\r\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\r\n\tReactCurrentDispatcher: {\r\n\t\tcurrent: {\r\n\t\t\treadContext(context) {\r\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n","import { PureComponent } from 'preact/compat'\nimport { Data, I18n } from '../../config'\nimport Icons from '../../icons'\n\nexport default class Mavigation extends PureComponent {\n constructor() {\n super()\n\n this.categories = Data.categories.filter((category) => {\n return !category.target\n })\n\n this.state = {\n categoryId: this.categories[0].id,\n }\n }\n\n renderIcon(category) {\n const { icon } = category\n\n if (icon) {\n if (icon.svg) {\n return (\n \n )\n }\n\n if (icon.src) {\n return \n }\n }\n\n return Icons.categories[category.id]\n }\n\n render() {\n let selectedCategoryIndex = null\n\n return (\n
\n \n )\n }\n}\n","import { PureComponent } from 'preact/compat'\n\nexport default class PureInlineComponent extends PureComponent {\n shouldComponentUpdate(nextProps) {\n for (let k in nextProps) {\n if (k == 'children') continue\n\n if (nextProps[k] != this.props[k]) {\n return true\n }\n }\n\n return false\n }\n\n render() {\n return this.props.children\n }\n}\n","import { Component, createRef } from 'preact'\n\nimport { deepEqual, sleep } from '../../utils'\nimport { Data, I18n } from '../../config'\nimport { SearchIndex, Store, FrequentlyUsed } from '../../helpers'\nimport Icons from '../../icons'\n\nimport { Emoji } from '../Emoji'\nimport { Navigation } from '../Navigation'\nimport { PureInlineComponent } from '../HOCs'\n\nconst Performance = {\n rowsPerRender: 10,\n}\n\nexport default class Picker extends Component {\n constructor(props) {\n super()\n\n this.state = {\n pos: [-1, -1],\n skin: Store.get('skin') || props.skin,\n theme: this.initTheme(props.theme),\n visibleRows: { 0: true },\n }\n }\n\n componentWillMount() {\n const { categories } = Data\n\n this.refs = {\n categories: new Map(),\n menu: createRef(),\n navigation: createRef(),\n scroll: createRef(),\n search: createRef(),\n searchInput: createRef(),\n skinToneButton: createRef(),\n skinToneRadio: createRef(),\n }\n\n this.grid = []\n this.grid.setsize = 0\n\n const addRow = (rows, category) => {\n const row = []\n row.__categoryId = category.id\n row.__index = rows.length\n this.grid.push(row)\n\n const rowIndex = this.grid.length - 1\n const rowRef = rowIndex % Performance.rowsPerRender ? {} : createRef()\n rowRef.index = rowIndex\n rowRef.posinset = this.grid.setsize + 1\n rows.push(rowRef)\n\n return row\n }\n\n for (let category of categories) {\n const rows = []\n let row = addRow(rows, category)\n\n for (let emoji of category.emojis) {\n if (row.length == this.props.perLine) {\n row = addRow(rows, category)\n }\n\n this.grid.setsize += 1\n row.push(emoji)\n }\n\n this.refs.categories.set(category.id, { root: createRef(), rows })\n }\n }\n\n componentDidMount() {\n this.observeCategories()\n this.observeRows()\n\n this.shadowRoot = this.base.parentNode\n if (this.props.autoFocus && this.refs.searchInput.current) {\n this.refs.searchInput.current.focus()\n }\n }\n\n initTheme(theme) {\n if (theme != 'auto') return theme\n\n const darkMedia = matchMedia('(prefers-color-scheme: dark)')\n if (darkMedia.media.match(/^not/)) return 'light'\n\n darkMedia.addListener(() => {\n this.setState({ theme: darkMedia.matches ? 'dark' : 'light' })\n })\n\n return darkMedia.matches ? 'dark' : 'light'\n }\n\n handleBaseClick = (e) => {\n if (!this.state.showSkins) return\n if (!e.target.closest('.menu')) {\n e.preventDefault()\n e.stopImmediatePropagation()\n\n this.closeSkins()\n }\n }\n\n handleBaseKeydown = (e) => {\n if (!this.state.showSkins) return\n if (e.key == 'Escape') {\n e.preventDefault()\n e.stopImmediatePropagation()\n\n this.closeSkins()\n this.refs.skinToneButton.current.focus()\n }\n }\n\n getEmojiByPos([p1, p2]) {\n const grid = this.state.searchResults || this.grid\n const emoji = grid[p1] && grid[p1][p2]\n\n if (!emoji) return\n return SearchIndex.get(emoji)\n }\n\n observeCategories() {\n const navigation = this.refs.navigation.current\n if (!navigation) return\n\n const visibleCategories = new Map()\n const setFocusedCategory = (categoryId) => {\n if (categoryId != navigation.state.categoryId) {\n navigation.setState({ categoryId })\n }\n }\n\n const observerOptions = {\n root: this.refs.scroll.current,\n threshold: [0.0, 1.0],\n }\n\n const observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n const id = entry.target.dataset.id\n visibleCategories.set(id, entry.intersectionRatio)\n }\n\n const ratios = [...visibleCategories]\n\n const lastCategory = ratios[ratios.length - 1]\n if (lastCategory[1] == 1) {\n return setFocusedCategory(lastCategory[0])\n }\n\n for (const [id, ratio] of ratios) {\n if (ratio) {\n setFocusedCategory(id)\n break\n }\n }\n }, observerOptions)\n\n for (const { root } of this.refs.categories.values()) {\n observer.observe(root.current)\n }\n }\n\n observeRows() {\n const visibleRows = { ...this.state.visibleRows }\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n const index = parseInt(entry.target.dataset.index)\n\n if (entry.isIntersecting) {\n visibleRows[index] = true\n } else {\n delete visibleRows[index]\n }\n }\n\n this.setState({ visibleRows })\n },\n {\n root: this.refs.scroll.current,\n rootMargin: `${\n this.props.emojiButtonSize * (Performance.rowsPerRender + 5)\n }px 0px ${this.props.emojiButtonSize * Performance.rowsPerRender}px`,\n },\n )\n\n for (const { rows } of this.refs.categories.values()) {\n for (const row of rows) {\n if (row.current) {\n observer.observe(row.current)\n }\n }\n }\n }\n\n preventDefault(e) {\n e.preventDefault()\n }\n\n handleSearchClick = () => {\n const emoji = this.getEmojiByPos(this.state.pos)\n if (!emoji) return\n\n this.setState({ pos: [-1, -1] })\n }\n\n handleSearchInput = async () => {\n const input = this.refs.searchInput.current\n if (!input) return\n\n const { value } = input\n const searchResults = await SearchIndex.search(value)\n const afterRender = () => {\n if (!this.refs.scroll.current) return\n this.refs.scroll.current.scrollTop = 0\n }\n\n if (!searchResults) {\n return this.setState({ searchResults, pos: [-1, -1] }, afterRender)\n }\n\n const pos = input.selectionStart == input.value.length ? [0, 0] : [-1, -1]\n const grid = []\n grid.setsize = searchResults.length\n let row = null\n\n for (let emoji of searchResults) {\n if (!grid.length || row.length == this.props.perLine) {\n row = []\n row.__categoryId = 'search'\n row.__index = grid.length\n grid.push(row)\n }\n\n row.push(emoji)\n }\n\n this.ignoreMouse()\n this.setState({ searchResults: grid, pos }, afterRender)\n }\n\n handleKeyDown = (e) => {\n e.stopImmediatePropagation()\n\n switch (e.key) {\n case 'Escape':\n if (this.props.onEscapeKeydown) {\n this.props.onEscapeKeydown()\n }\n break\n default:\n break\n }\n }\n\n handleSearchKeyDown = (e) => {\n const input = e.currentTarget\n e.stopImmediatePropagation()\n\n switch (e.key) {\n case 'ArrowLeft':\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({ e, input, left: true })\n break\n\n case 'ArrowRight':\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({ e, input, right: true })\n break\n\n case 'ArrowUp':\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({ e, input, up: true })\n break\n\n case 'ArrowDown':\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({ e, input, down: true })\n break\n\n case 'Enter':\n e.preventDefault()\n this.handleEmojiClick({ pos: this.state.pos })\n break\n\n case 'Escape':\n e.preventDefault()\n if (this.state.searchResults) {\n this.clearSearch()\n } else if (this.props.onEscapeKeydown) {\n this.props.onEscapeKeydown()\n } else {\n this.unfocusSearch()\n }\n break\n\n default:\n break\n }\n }\n\n clearSearch = () => {\n const input = this.refs.searchInput.current\n if (!input) return\n\n input.value = ''\n input.focus()\n\n this.handleSearchInput()\n }\n\n unfocusSearch() {\n const input = this.refs.searchInput.current\n if (!input) return\n\n input.blur()\n }\n\n navigate({ e, input, left, right, up, down }) {\n const grid = this.state.searchResults || this.grid\n if (!grid.length) return\n\n let [p1, p2] = this.state.pos\n\n const pos = (() => {\n if (p1 == 0) {\n if (p2 == 0 && !e.repeat && (left || up)) {\n return null\n }\n }\n\n if (p1 == -1) {\n if (\n !e.repeat &&\n (right || down) &&\n input.selectionStart == input.value.length\n ) {\n return [0, 0]\n }\n\n return null\n }\n\n if (left || right) {\n let row = grid[p1]\n const increment = left ? -1 : 1\n\n p2 += increment\n if (!row[p2]) {\n p1 += increment\n row = grid[p1]\n\n if (!row) {\n p1 = left ? 0 : grid.length - 1\n p2 = left ? 0 : grid[p1].length - 1\n\n return [p1, p2]\n }\n\n p2 = left ? row.length - 1 : 0\n }\n\n return [p1, p2]\n }\n\n if (up || down) {\n p1 += up ? -1 : 1\n const row = grid[p1]\n\n if (!row) {\n p1 = up ? 0 : grid.length - 1\n p2 = up ? 0 : grid[p1].length - 1\n\n return [p1, p2]\n }\n\n if (!row[p2]) {\n p2 = row.length - 1\n }\n\n return [p1, p2]\n }\n })()\n\n if (pos) {\n e.preventDefault()\n } else {\n if (this.state.pos[0] > -1) {\n this.setState({ pos: [-1, -1] })\n }\n\n return\n }\n\n this.setState({ pos, keyboard: true }, () => {\n this.scrollTo({ row: pos[0] })\n })\n }\n\n scrollTo({ categoryId, row }) {\n const grid = this.state.searchResults || this.grid\n if (!grid.length) return\n\n const scroll = this.refs.scroll.current\n const scrollRect = scroll.getBoundingClientRect()\n\n let scrollTop = 0\n\n if (row >= 0) {\n categoryId = grid[row].__categoryId\n }\n\n if (categoryId) {\n const ref =\n this.refs[categoryId] || this.refs.categories.get(categoryId).root\n const categoryRect = ref.current.getBoundingClientRect()\n\n scrollTop = categoryRect.top - (scrollRect.top - scroll.scrollTop) + 1\n }\n\n if (row >= 0) {\n if (!row) {\n scrollTop = 0\n } else {\n const rowIndex = grid[row].__index\n const rowTop = scrollTop + rowIndex * this.props.emojiButtonSize\n const rowBot =\n rowTop +\n this.props.emojiButtonSize +\n this.props.emojiButtonSize * 0.88\n\n if (rowTop < scroll.scrollTop) {\n scrollTop = rowTop\n } else if (rowBot > scroll.scrollTop + scrollRect.height) {\n scrollTop = rowBot - scrollRect.height\n } else {\n return\n }\n }\n }\n\n this.ignoreMouse()\n scroll.scrollTop = scrollTop\n }\n\n ignoreMouse() {\n this.mouseIsIgnored = true\n clearTimeout(this.ignoreMouseTimer)\n this.ignoreMouseTimer = setTimeout(() => {\n delete this.mouseIsIgnored\n }, 100)\n }\n\n handleCategoryClick = ({ category, i }) => {\n this.scrollTo(i == 0 ? { row: -1 } : { categoryId: category.id })\n }\n\n handleEmojiOver(pos) {\n if (this.mouseIsIgnored || this.state.showSkins) return\n this.setState({ pos: pos || [-1, -1], keyboard: false })\n }\n\n handleEmojiClick({ emoji, pos }) {\n if (!this.props.onEmojiSelect) return\n\n if (!emoji && pos) {\n emoji = this.getEmojiByPos(pos)\n }\n\n if (emoji) {\n const skin = emoji.skins[this.state.skin - 1] || emoji.skins[0]\n const emojiData = {\n id: emoji.id,\n unified: skin.unified,\n keywords: emoji?.keywords || [],\n shortcodes: skin.shortcodes || emoji.shortcodes,\n }\n\n if (skin.src) {\n emojiData.src = skin.src\n }\n\n if (emoji.aliases && emoji.aliases.length) {\n emojiData.aliases = emoji.aliases\n }\n\n if (this.props.maxFrequentRows) {\n FrequentlyUsed.add(emojiData, this.props)\n }\n\n this.props.onEmojiSelect(emojiData)\n }\n }\n\n openSkins = (e) => {\n const { currentTarget } = e\n const rect = currentTarget.getBoundingClientRect()\n\n this.setState({ showSkins: rect }, async () => {\n // Firefox requires 2 frames for the transition to consistenly work\n await sleep(2)\n\n const menu = this.refs.menu.current\n if (!menu) return\n\n menu.classList.remove('hidden')\n this.refs.skinToneRadio.current.focus()\n\n this.base.addEventListener('click', this.handleBaseClick, true)\n this.base.addEventListener('keydown', this.handleBaseKeydown, true)\n })\n }\n\n closeSkins() {\n if (!this.state.showSkins) return\n this.setState({ showSkins: null, tempSkin: null })\n\n this.base.removeEventListener('click', this.handleBaseClick)\n this.base.removeEventListener('keydown', this.handleBaseKeydown)\n }\n\n handleSkinMouseOver(tempSkin) {\n this.setState({ tempSkin })\n }\n\n handleSkinClick(skin) {\n this.ignoreMouse()\n this.closeSkins()\n\n this.setState({ skin, tempSkin: null })\n Store.set('skin', skin)\n }\n\n renderNav() {\n return (\n \n )\n }\n\n renderPreview() {\n const emoji = this.getEmojiByPos(this.state.pos)\n const noSearchResults =\n this.state.searchResults && !this.state.searchResults.length\n const emojiSize = 22\n const emojiButtonSize = emojiSize + 8\n return (\n \n
\n \n \n
\n {emoji ? (\n
{emoji.skins[0].shortcodes}
\n ) : noSearchResults ? (\n
{I18n.search_no_results}
\n ) : (\n
{I18n.pick}
\n )}\n \n\n {!emoji && this.renderSkinToneButton()}\n \n )\n }\n\n renderEmojiButton(emoji, { pos, posinset, grid }) {\n const size = this.props.emojiButtonSize\n const skin = this.state.tempSkin || this.state.skin\n const selected = deepEqual(this.state.pos, pos)\n const key = pos.concat(emoji.id).join('')\n\n return (\n \n this.handleEmojiClick({ emoji })}\n onMouseEnter={() => this.handleEmojiOver(pos)}\n onMouseLeave={() => this.handleEmojiOver()}\n style={{\n width: this.props.emojiButtonSize,\n height: this.props.emojiButtonSize,\n fontSize: this.props.emojiSize,\n lineHeight: 0,\n fontFamily:\n 'EmojiMart, Segoe UI Emoji, Segoe UI Symbol, Segoe UI, Apple Color Emoji, Twemoji Mozilla, Noto Color Emoji, Android Emoji',\n }}\n >\n \n \n \n \n )\n }\n\n renderSearch() {\n return (\n
\n
\n
\n
\n \n {Icons.search.loupe}\n {this.state.searchResults && (\n \n {Icons.search.delete}\n \n )}\n
\n\n {this.props.previewPosition == 'none' && this.renderSkinToneButton()}\n
\n
\n )\n }\n\n renderSearchResults() {\n const { searchResults } = this.state\n if (!searchResults) return null\n\n return (\n
\n
{I18n.categories.search}
\n
\n {searchResults.map((row, i) => {\n return (\n
\n {row.map((emoji, ii) => {\n return this.renderEmojiButton(emoji, {\n pos: [i, ii],\n posinset: i * this.props.perLine + ii + 1,\n grid: searchResults,\n })\n })}\n
\n )\n })}\n
\n
\n )\n }\n\n renderCategories() {\n const { categories } = Data\n const hidden = !!this.state.searchResults\n\n return (\n